The following information is provided as is, and the authors take no responsibility for the correctness.
Over the years the DEVMODE structure has been extended. This page should give an overview of the differences.
| Version | ID | Notes |
|---|---|---|
| DM_SPECVERSION_0320 | 0×0320 | Windows NT 3.x |
| DM_SPECVERSION_0400 | 0×0400 | Windows NT 4.0 |
| DM_SPECVERSION_0401 | 0×0401 | Windows 2000 |
typedef struct _devicemodeW { WCHAR dmDeviceName[CCHDEVICENAME]; WORD dmSpecVersion; WORD dmDriverVersion; WORD dmSize; WORD dmDriverExtra; DWORD dmFields; union { /* printer only fields */ struct { short dmOrientation; short dmPaperSize; short dmPaperLength; short dmPaperWidth; short dmScale; short dmCopies; short dmDefaultSource; short dmPrintQuality; }; /* display only fields */ struct { POINTL dmPosition; DWORD dmDisplayOrientation; DWORD dmDisplayFixedOutput; }; }; short dmColor; short dmDuplex; short dmYResolution; short dmTTOption; short dmCollate; WCHAR dmFormName[CCHFORMNAME]; WORD dmLogPixels; DWORD dmBitsPerPel; DWORD dmPelsWidth; DWORD dmPelsHeight; union { DWORD dmDisplayFlags; DWORD dmNup; }; DWORD dmDisplayFrequency; #if(DM_SPECVERSION >= 0x0400) DWORD dmICMMethod; DWORD dmICMIntent; DWORD dmMediaType; DWORD dmDitherType; DWORD dmReserved1; DWORD dmReserved2; #if (DM_SPECVERSION >= 0x0401) DWORD dmPanningWidth; DWORD dmPanningHeight; #endif /* DM_SPECVERSION >= 0x0401 */ #endif /* DM_SPECVERSION >= 0x0400 */ } DEVMODEW, *PDEVMODEW, *NPDEVMODEW, *LPDEVMODEW;