2010-02-26 11:43:19 +00:00
|
|
|
#pragma once
|
2004-11-16 17:25:47 +00:00
|
|
|
|
|
|
|
/* monitor object */
|
2010-01-11 07:36:48 +00:00
|
|
|
typedef struct _MONITOR
|
2004-11-16 17:25:47 +00:00
|
|
|
{
|
2010-01-11 07:36:48 +00:00
|
|
|
HEAD head;
|
|
|
|
//
|
|
|
|
FAST_MUTEX Lock; /* R/W lock */
|
|
|
|
UNICODE_STRING DeviceName; /* name of the monitor */
|
|
|
|
PDEVOBJ *GdiDevice; /* pointer to the GDI device to
|
|
|
|
which this monitor is attached */
|
|
|
|
// This is the structure Windows uses:
|
|
|
|
// struct _MONITOR* pMonitorNext;
|
|
|
|
union {
|
|
|
|
DWORD dwMONFlags;
|
|
|
|
struct {
|
|
|
|
DWORD IsVisible:1;
|
|
|
|
DWORD IsPalette:1;
|
|
|
|
DWORD IsPrimary:1; /* wether this is the primary monitor */
|
|
|
|
};};
|
2009-06-25 02:43:38 +00:00
|
|
|
RECT rcMonitor;
|
|
|
|
RECT rcWork;
|
2010-01-11 07:36:48 +00:00
|
|
|
HRGN hrgnMonitor;
|
|
|
|
SHORT Spare0;
|
|
|
|
SHORT cWndStack;
|
|
|
|
HDEV hDev;
|
|
|
|
HDEV hDevReal;
|
2009-06-25 02:43:38 +00:00
|
|
|
// BYTE DockTargets[4][7];
|
2010-01-11 07:36:48 +00:00
|
|
|
// Use LIST_ENTRY
|
|
|
|
struct _MONITOR* Next; //Flink;
|
|
|
|
struct _MONITOR* Prev; //Blink;
|
|
|
|
} MONITOR, *PMONITOR;
|
2004-11-16 17:25:47 +00:00
|
|
|
|
|
|
|
/* functions */
|
2010-11-03 00:51:19 +00:00
|
|
|
INIT_FUNCTION
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
InitMonitorImpl();
|
2004-11-16 17:25:47 +00:00
|
|
|
NTSTATUS CleanupMonitorImpl();
|
|
|
|
|
2009-03-20 18:02:55 +00:00
|
|
|
NTSTATUS IntAttachMonitor(PDEVOBJ *pGdiDevice, ULONG DisplayNumber);
|
|
|
|
NTSTATUS IntDetachMonitor(PDEVOBJ *pGdiDevice);
|
2010-01-11 07:36:48 +00:00
|
|
|
PMONITOR FASTCALL UserGetMonitorObject(IN HMONITOR);
|
|
|
|
PMONITOR FASTCALL IntGetPrimaryMonitor(VOID);
|
2004-11-16 17:25:47 +00:00
|
|
|
|
|
|
|
/* EOF */
|