#include <ddk/ntddk.h>
#include <internal/ex.h>
#include <internal/ps.h>
+#include "msgqueue.h"
+
#define PROCESS_WINDOW_STATION() \
((HWINSTA)(IoGetCurrentProcess()->Win32WindowStation))
#define SET_PROCESS_WINDOW_STATION(WinSta) \
((IoGetCurrentProcess()->Win32WindowStation) = (PVOID)(WinSta))
+
+WINSTATION_OBJECT *InputWindowStation;
+//FAST_MUTEX InputWindowStationLock;
-NTSTATUS
+NTSTATUS FASTCALL
InitWindowStationImpl(VOID);
-NTSTATUS
+NTSTATUS FASTCALL
CleanupWindowStationImpl(VOID);
-NTSTATUS
+NTSTATUS STDCALL
ValidateWindowStationHandle(HWINSTA WindowStation,
KPROCESSOR_MODE AccessMode,
ACCESS_MASK DesiredAccess,
PWINSTATION_OBJECT *Object);
-NTSTATUS
+NTSTATUS STDCALL
ValidateDesktopHandle(HDESK Desktop,
KPROCESSOR_MODE AccessMode,
ACCESS_MASK DesiredAccess,
PDESKTOP_OBJECT *Object);
LRESULT CALLBACK
-W32kDesktopWindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
-PDESKTOP_OBJECT
-W32kGetActiveDesktop(VOID);
-VOID
-W32kInitializeDesktopGraphics(VOID);
-VOID
-W32kEndDesktopGraphics(VOID);
-HDC
-W32kGetScreenDC(VOID);
+IntDesktopWindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
+PDESKTOP_OBJECT FASTCALL
+IntGetActiveDesktop(VOID);
+PDESKTOP_OBJECT FASTCALL
+IntGetDesktopObject ( HDESK hDesk );
+PUSER_MESSAGE_QUEUE FASTCALL
+IntGetFocusMessageQueue(VOID);
+VOID FASTCALL
+IntInitializeDesktopGraphics(VOID);
+VOID FASTCALL
+IntEndDesktopGraphics(VOID);
+HDC FASTCALL
+IntGetScreenDC(VOID);
+VOID STDCALL
+IntSetFocusMessageQueue(PUSER_MESSAGE_QUEUE NewQueue);
+struct _WINDOW_OBJECT* STDCALL
+IntGetCaptureWindow(VOID);
+VOID STDCALL
+IntSetCaptureWindow(struct _WINDOW_OBJECT* Window);
+
+BOOL FASTCALL
+IntGetWindowStationObject(PWINSTATION_OBJECT Object);
#endif /* __WIN32K_WINSTA_H */