Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

341 lines
8.7 KiB

/****************************************************************************
* *
* winuserk.h -- New private kernel-mode APIs *
* *
* Copyright (c) 1985 - 1999, Microsoft Corporation *
* *
****************************************************************************/
#ifndef _WINUSERK_
#define _WINUSERK_
#include "w32w64.h"
//
// Define API decoration for direct importing of DLL references.
//
#if !defined(_USER32_)
#define WINUSERAPI DECLSPEC_IMPORT
#else
#define WINUSERAPI
#endif
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
typedef struct tagDESKTOP * KPTR_MODIFIER PDESKTOP;
typedef enum _CONSOLECONTROL {
ConsoleDesktopConsoleThread, // 0
ConsoleClassAtom, // 1
ConsolePermanentFont, // 2
ConsoleSetVDMCursorBounds, // 3
ConsoleNotifyConsoleApplication, // 4
ConsolePublicPalette, // 5
ConsoleWindowStationProcess, // 6
ConsoleRegisterConsoleIME, // 7
ConsoleFullscreenSwitch, // 8
ConsoleSetCaretInfo // 9
} CONSOLECONTROL;
/*
* Hard error functions
*/
#define HEF_NORMAL 0 /* normal FIFO error processing */
#define HEF_SWITCH 1 /* desktop switch occured */
#define HEF_RESTART 2 /* hard error was reordered, restart processing */
typedef struct _CONSOLEDESKTOPCONSOLETHREAD {
HDESK hdesk;
DWORD dwThreadId;
} CONSOLEDESKTOPCONSOLETHREAD, *PCONSOLEDESKTOPCONSOLETHREAD;
typedef struct _CONSOLEWINDOWSTATIONPROCESS {
DWORD dwProcessId;
HWINSTA hwinsta;
} CONSOLEWINDOWSTATIONPROCESS, *PCONSOLEWINDOWSTATIONPROCESS;
#if defined(FE_IME)
enum {REGCONIME_QUERY, REGCONIME_REGISTER, REGCONIME_UNREGISTER, REGCONIME_TERMINATE};
typedef struct _CONSOLE_REGISTER_CONSOLEIME {
IN HDESK hdesk;
IN DWORD dwThreadId;
IN DWORD dwAction; // is REGCONIME_QUERY/REGISTER/UNREGISTER/TERMINATE
OUT DWORD dwConsoleInputThreadId;
} CONSOLE_REGISTER_CONSOLEIME, *PCONSOLE_REGISTER_CONSOLEIME;
#endif
typedef struct _CONSOLE_FULLSCREEN_SWITCH {
IN BOOL bFullscreenSwitch;
IN HWND hwnd;
IN PDEVMODEW pNewMode;
} CONSOLE_FULLSCREEN_SWITCH, *PCONSOLE_FULLSCREEN_SWITCH;
/*
* Bug 273518 - joejo
*
* Adding optimization to bug fix
*/
#define CPI_NEWPROCESSWINDOW 0x0001
typedef struct _CONSOLE_PROCESS_INFO {
IN DWORD dwProcessID;
IN DWORD dwFlags;
} CONSOLE_PROCESS_INFO, *PCONSOLE_PROCESS_INFO;
typedef struct _CONSOLE_CARET_INFO {
IN HWND hwnd;
IN RECT rc;
} CONSOLE_CARET_INFO, *PCONSOLE_CARET_INFO;
NTSTATUS
NtUserConsoleControl(
IN CONSOLECONTROL Command,
IN OUT PVOID ConsoleInformation,
IN ULONG ConsoleInformationLength
);
HDESK
NtUserResolveDesktop(
IN HANDLE hProcess,
IN PUNICODE_STRING pstrDesktop,
IN BOOL fInherit,
OUT HWINSTA *phwinsta
);
WINUSERAPI
BOOL
NtUserNotifyProcessCreate(
IN DWORD dwProcessId,
IN DWORD dwParentThreadId,
IN ULONG_PTR dwData,
IN DWORD dwFlags
);
typedef enum _HARDERRORCONTROL {
HardErrorSetup,
HardErrorCleanup,
HardErrorAttach,
HardErrorAttachUser,
HardErrorDetach,
HardErrorAttachNoQueue,
HardErrorDetachNoQueue,
HardErrorQuery,
HardErrorInDefDesktop,
#ifdef PRERELEASE
HardErrorCheckOnDesktop
#endif
} HARDERRORCONTROL;
/*
* This structure is used to pass a handle and a pointer back
* for later restoration when setting a CSRSS thread to a desktop.
*/
typedef struct tagDESKRESTOREDATA {
PDESKTOP pdeskRestore;
HDESK hdeskNew; /*
* This handle is opened to guarantee
* that the desktop stays around and
* active while the CSRSS thread is
* using it.
*/
} DESKRESTOREDATA, *PDESKRESTOREDATA;
UINT
NtUserHardErrorControl(
IN HARDERRORCONTROL dwCmd,
IN HANDLE handle OPTIONAL,
OUT PDESKRESTOREDATA pdrdRestore OPTIONAL
);
#define HEC_SUCCESS 0
#define HEC_ERROR 1
#define HEC_WRONGDESKTOP 2
#define HEC_DESKTOPSWITCH 3
typedef enum _USERTHREADINFOCLASS {
UserThreadShutdownInformation,
UserThreadFlags,
UserThreadTaskName,
UserThreadWOWInformation,
UserThreadHungStatus,
UserThreadInitiateShutdown,
UserThreadEndShutdown,
UserThreadUseDesktop,
UserThreadPolled, // obsolete
UserThreadKeyboardState, // obsolete
UserThreadCsrApiPort,
UserThreadResyncKeyState, // obsolete
UserThreadUseActiveDesktop
} USERTHREADINFOCLASS;
typedef enum _USERPROCESSINFOCLASS {
UserProcessFlags
} USERPROCESSINFOCLASS;
#define USER_THREAD_GUI 1
typedef struct _USERTHREAD_SHUTDOWN_INFORMATION {
HWND hwndDesktop;
NTSTATUS StatusShutdown;
DWORD dwFlags;
DESKRESTOREDATA drdRestore; /* Must be the last field or will be zero'ed */
} USERTHREAD_SHUTDOWN_INFORMATION, *PUSERTHREAD_SHUTDOWN_INFORMATION;
typedef struct _USERTHREAD_FLAGS {
DWORD dwFlags;
DWORD dwMask;
} USERTHREAD_FLAGS, *PUSERTHREAD_FLAGS;
typedef struct _USERTHREAD_USEDESKTOPINFO {
HANDLE hThread;
DESKRESTOREDATA drdRestore;
} USERTHREAD_USEDESKTOPINFO, *PUSERTHREAD_USEDESKTOPINFO;
typedef USERTHREAD_FLAGS USERPROCESS_FLAGS;
typedef USERTHREAD_FLAGS *PUSERPROCESS_FLAGS;
typedef struct _USERTHREAD_WOW_INFORMATION {
PVOID lpfnWowExitTask;
DWORD hTaskWow;
} USERTHREAD_WOW_INFORMATION, *PUSERTHREAD_WOW_INFORMATION;
WINUSERAPI
NTSTATUS
NtUserQueryInformationThread(
IN HANDLE hThread,
IN USERTHREADINFOCLASS ThreadInfoClass,
OUT PVOID ThreadInformation,
IN ULONG ThreadInformationLength,
OUT PULONG ReturnLength OPTIONAL
);
NTSTATUS
NtUserSetInformationThread(
IN HANDLE hThread,
IN USERTHREADINFOCLASS ThreadInfoClass,
IN PVOID ThreadInformation,
IN ULONG ThreadInformationLength
);
NTSTATUS
NtUserSetInformationProcess(
IN HANDLE hProcess,
IN USERPROCESSINFOCLASS ProcessInfoClass,
IN PVOID ProcessInformation,
IN ULONG ProcessInformationLength
);
WINUSERAPI
NTSTATUS
NtUserSoundSentry(
VOID
);
WINUSERAPI
NTSTATUS
NtUserTestForInteractiveUser(
IN PLUID pluidCaller
);
WINUSERAPI
NTSTATUS
NtUserInitialize(
IN DWORD dwVersion,
IN HANDLE hPowerRequestEvent,
IN HANDLE hMediaChangeEvent);
WINUSERAPI
NTSTATUS
NtUserProcessConnect(
IN HANDLE hProcess,
IN OUT PVOID pConnectInfo,
IN ULONG cbConnectInfo
);
HPALETTE
NtUserSelectPalette(
IN HDC hdc,
IN HPALETTE hpalette,
IN BOOL fForceBackground
);
typedef enum _WINDOWINFOCLASS {
WindowProcess,
WindowThread,
WindowActiveWindow,
WindowFocusWindow,
WindowIsHung,
WindowClientBase,
WindowIsForegroundThread,
WindowDefaultImeWindow,
WindowDefaultInputContext,
} WINDOWINFOCLASS;
HANDLE
NtUserQueryWindow(
IN HWND hwnd,
IN WINDOWINFOCLASS WindowInformation
);
typedef enum _USERTHREADSTATECLASS {
UserThreadStateFocusWindow,
UserThreadStateActiveWindow,
UserThreadStateCaptureWindow,
UserThreadStateDefaultImeWindow,
UserThreadStateDefaultInputContext,
UserThreadStateInputState,
UserThreadStateCursor,
UserThreadStateChangeBits,
UserThreadStatePeekMessage,
UserThreadStateExtraInfo,
UserThreadStateInSendMessage,
UserThreadStateMessageTime,
UserThreadStateIsForeground,
// #if defined(FE_IME)
UserThreadStateImeCompatFlags,
UserThreadStatePreviousKeyboardLayout,
UserThreadStateIsWinlogonThread,
UserThreadStateNeedsSecurity,
// #endif
UserThreadStateIsConImeThread,
UserThreadConnect,
} USERTHREADSTATECLASS;
ULONG_PTR
NtUserGetThreadState(
IN USERTHREADSTATECLASS ThreadState);
NTSTATUS
NtUserEnumDisplaySettings(
IN PUNICODE_STRING pstrDeviceName,
IN DWORD iModeNum,
OUT LPDEVMODEW lpDevMode,
IN DWORD dwFlags);
#if defined(FE_IME)
BOOL
NtUserGetObjectInformation(
IN HANDLE hObject,
IN int nIndex,
OUT PVOID pvInfo,
IN DWORD nLength,
IN LPDWORD pnLengthNeeded);
#endif // FE_IME
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* !_WINUSERK_ */