Techwiki:Win32k/GRAPHICS DEVICE

From ReactOS Wiki
Revision as of 19:45, 9 August 2009 by ThePhysicist (talk | contribs)
Jump to: navigation, search

Windows XP version of GRAPHICS_DEVICE

typedef struct _GRAPHICS_DEVICE
{
   CHAR             szNtDeviceName[CCHDEVICENAME];    // 000
   CHAR             szWinDeviceName[CCHDEVICENAME];   // 020
   PGRAPHICS_DEVICE pNextGraphicsDevice;              // 040
   PGRAPHICS_DEVICE pVgaDevice;                       // 044
   PDEVICE_OBJECT   DeviceObject;                     // 048
   HANDLE           pDeviceHandle;                    // 04C
   DWORD            Unknown1;                         // 050
   DWORD            StateFlags;                       // 054
   DWORD            cbdevmodeInfo;                    // 058
   PVOID            devmodeInfo;                      // 05C
   DWORD            cbdevmodeInfo1;                   // 060
   PVOID            devmodeInfo1;                     // 064
   PVOID            pUnknown1;                        // 068
   LPWSTR           pDeviceString;                    // 06C
   UNICODE_STRING   ustrUnknown;                      // 070
   PFILE_OBJECT     FileObject;                       // 078
   DWORD            ProtocolType;                     // 07C
} GRAPHICS_DEVICE, *PGRAPHICS_DEVICE;

szNtDeviceName

Name of the device, for example "\\Device\\Video". A registry entry with this name is present under the HKLM\HARDWARE\DEVICEMAP\VIDEO registry key. This entry is of type REG_SZ and contains the registry path for the display settings (for example "\Registry\Machine\System\CurrentControlSet\Control\Video\{19D0ECD0-F5D9-4A4B-8005-36253C8D799D}\0000").
CHECKME: really ANSI?

szWinDeviceName

L"\\\\.\\DISPLAY1" or L"\\\\.\\DISPLAY2", == DISPLAY_DEVICE.DeviceName
CHECKME: really ANSI?

StateFlags

== DISPLAY_DEVICE.StateFlags
can be one of
#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP 0x00000001
#define DISPLAY_DEVICE_MULTI_DRIVER        0x00000002
#define DISPLAY_DEVICE_PRIMARY_DEVICE      0x00000004
#define DISPLAY_DEVICE_MIRRORING_DRIVER    0x00000008
#define DISPLAY_DEVICE_VGA_COMPATIBLE      0x00000010
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
#define DISPLAY_DEVICE_REMOVABLE           0x00000020
#endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
#define DISPLAY_DEVICE_MODESPRUNED         0x08000000
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
#define DISPLAY_DEVICE_REMOTE              0x04000000
#define DISPLAY_DEVICE_DISCONNECT          0x02000000
#endif
#define DISPLAY_DEVICE_TS_COMPATIBLE       0x00200000
#if (_WIN32_WINNT >= _WIN32_WINNT_LONGHORN)
#define DISPLAY_DEVICE_UNSAFE_MODES_ON     0x00080000
#endif
/* Child device state */
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)
#define DISPLAY_DEVICE_ACTIVE              0x00000001
#define DISPLAY_DEVICE_ATTACHED            0x00000002
#endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN2K)


cbdevmodeInfo1

Copy of devmodeInfo?

pDeviceString

DISPLAY_DEVICE.DeviceString