VOID NTAPI RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING,IN PCWSTR,IN INT);
BOOL NTAPI RtlLargeStringToUnicodeString( PUNICODE_STRING, PLARGE_STRING);
+#define NB_HOOKS (WH_MAXHOOK-WH_MINHOOK+1)
+
typedef struct _DESKTOPINFO
{
PVOID pvDesktopBase;
PVOID pvDesktopLimit;
struct _WND *spwnd;
DWORD fsHooks;
- struct tagHOOK * aphkStart[16];
+ LIST_ENTRY aphkStart[NB_HOOKS];
HWND hTaskManWindow;
HWND hProgmanWindow;
/* Window Client Information structure */
struct _ETHREAD;
+#define WEF_SETBYWNDPTI 0x0001
+
typedef struct tagHOOK
{
THRDESKHEAD head;
+ struct tagHOOK *phkNext; /* This is for user space. */
+ int HookId; /* Hook table index */
+ ULONG_PTR offPfn;
+ ULONG flags; /* Some internal flags */
+ INT ihmod;
+ PTHREADINFO ptiHooked;
+ struct _DESKTOP *rpdesk;
+ /* ReactOS */
LIST_ENTRY Chain; /* Hook chain entry */
struct _ETHREAD* Thread; /* Thread owning the hook */
- int HookId; /* Hook table index */
HOOKPROC Proc; /* Hook function */
BOOLEAN Ansi; /* Is it an Ansi hook? */
- ULONG Flags; /* Some internal flags */
UNICODE_STRING ModuleName; /* Module name for global hooks */
} HOOK, *PHOOK;
typedef struct _CALLBACKWND
{
HWND hWnd;
- PVOID pvWnd;
+ struct _WND *pWnd;
} CALLBACKWND, *PCALLBACKWND;
#define CI_TRANSACTION 0x00000001
PPROCESSINFO ppi;
} CLIENTINFO, *PCLIENTINFO;
-/* Make sure it fits exactly into the TEB */
-C_ASSERT(sizeof(CLIENTINFO) == FIELD_OFFSET(TEB, glDispatchTable) - FIELD_OFFSET(TEB, Win32ClientInfo));
+/* Make sure it fits into the TEB */
+C_ASSERT(sizeof(CLIENTINFO) <= sizeof(((PTEB)0)->Win32ClientInfo));
#define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
+#define HRGN_NULL ( (HRGN) 0) // NULL empty region
+#define HRGN_WINDOW ( (HRGN) 1) // region from window rcWindow
+#define HRGN_MONITOR ( (HRGN) 2) // region from monitor region.
+
/* Menu Item fType. */
#define MFT_RTOL 0x6000
} CLS, *PCLS;
+typedef struct _SBINFOEX
+{
+ SCROLLBARINFO ScrollBarInfo;
+ SCROLLINFO ScrollInfo;
+} SBINFOEX, *PSBINFOEX;
+
// State Flags !Not Implemented!
#define WNDS_HASMENU 0X00000001
#define WNDS_HASVERTICALSCROOLLBAR 0X00000002
#define WNDS2_SHELLHOOKREGISTERED 0X40000000
#define WNDS2_WMCREATEMSGPROCESSED 0X80000000
-/* Non SDK ExStyles */
-#define WS_EX_MAKEVISIBLEWHENUNGHOSTED 0x00000800
-#define WS_EX_FORCELEGACYRESIZENCMETR 0x00800000
-#define WS_EX_UISTATEACTIVE 0x04000000
-#define WS_EX_REDIRECTED 0X20000000
-#define WS_EX_UISTATEKBACCELHIDDEN 0X40000000
-#define WS_EX_UISTATEFOCUSRECTHIDDEN 0X80000000
-#define WS_EX_SETANSICREATOR 0x80000000 // For WNDS_ANSICREATOR
-
-/* Non SDK Styles */
-#define WS_MAXIMIZED WS_MAXIMIZE
-#define WS_MINIMIZED WS_MINIMIZE
-
/* ExStyles2 */
#define WS_EX2_CLIPBOARDLISTENER 0X00000001
#define WS_EX2_LAYEREDINVALIDATE 0X00000002
struct _WND *spwndClipboardListener;
DWORD ExStyle2;
+ /* ReactOS */
struct
{
RECT NormalRect;
UINT InternalPosInitialized : 1;
UINT HideFocus : 1; // WS_EX_UISTATEFOCUSRECTHIDDEN ?
UINT HideAccel : 1; // WS_EX_UISTATEKBACCELHIDDEN ?
+
+ /* Scrollbar info */
+ PSBINFOEX pSBInfoex; // convert to PSBINFO
+ /* Entry in the list of thread windows. */
+ LIST_ENTRY ThreadListEntry;
} WND, *PWND;
typedef struct _PFNCLIENT
SHAREDINFO siClient;
} USERCONNECT, *PUSERCONNECT;
-//
-// Non SDK Window Message types.
-//
-#define WM_CLIENTSHUTDOWN 59
-#define WM_COPYGLOBALDATA 73
-#define WM_SYSTIMER 280
-#define WM_POPUPSYSTEMMENU 787
-#define WM_CBT 1023 // ReactOS only.
-#define WM_MAXIMUM 0x0001FFFF
-
-//
-// Non SDK DCE types.
-//
-#define DCX_USESTYLE 0x00010000
-#define DCX_KEEPCLIPRGN 0x00040000
-#define DCX_KEEPLAYOUT 0x40000000
-#define DCX_PROCESSOWNED 0x80000000
-
-//
-// Non SDK Queue message types.
-//
-#define QS_SMRESULT 0x8000
-
DWORD
NTAPI
NtUserAssociateInputContext(
NTAPI
NtUserGetMenuIndex(
HMENU hMenu,
- UINT wID);
+ HMENU hSubMenu);
BOOL
NTAPI
HWND hWnd,
HMENU hMenu);
-DWORD
+BOOL
NTAPI
NtUserThunkedMenuInfo(
HMENU hMenu,
LPCMENUINFO lpcmi);
-DWORD
+BOOL
NTAPI
NtUserThunkedMenuItemInfo(
HMENU hMenu,
HWND
NTAPI
NtUserCreateWindowEx(
- DWORD dwExStyle, // |= 0x80000000 == Ansi used to set WNDS_ANSICREATOR
+ DWORD dwExStyle,
PLARGE_STRING plstrClassName,
PLARGE_STRING plstrClsVersion,
PLARGE_STRING plstrWindowName,
HWINSTA
NTAPI
NtUserCreateWindowStation(
- PUNICODE_STRING lpszWindowStationName,
+ POBJECT_ATTRIBUTES ObjectAttributes,
ACCESS_MASK dwDesiredAccess,
- LPSECURITY_ATTRIBUTES lpSecurity,
+ DWORD Unknown2,
DWORD Unknown3,
DWORD Unknown4,
DWORD Unknown5,
UINT wSBflags,
UINT wArrows);
-DWORD
+BOOL
NTAPI
NtUserEndDeferWindowPosEx(
- DWORD Unknown0,
+ HDWP WinPosInfo,
DWORD Unknown1);
BOOL NTAPI
NtUserGetListBoxInfo(
HWND hWnd);
-typedef struct tagNTUSERGETMESSAGEINFO
-{
- MSG Msg;
- ULONG LParamSize;
-} NTUSERGETMESSAGEINFO, *PNTUSERGETMESSAGEINFO;
-
-BOOL
-NTAPI
-NtUserGetMessage(
- PNTUSERGETMESSAGEINFO MsgInfo,
- HWND hWnd,
- UINT wMsgFilterMin,
- UINT wMsgFilterMax);
+BOOL APIENTRY
+NtUserGetMessage(PMSG pMsg,
+ HWND hWnd,
+ UINT MsgFilterMin,
+ UINT MsgFilterMax);
DWORD
NTAPI
THREADSTATE_PROGMANWINDOW,
THREADSTATE_TASKMANWINDOW,
THREADSTATE_GETMESSAGETIME,
- THREADSTATE_GETINPUTSTATE
+ THREADSTATE_GETINPUTSTATE,
+ THREADSTATE_UPTIMELASTREAD
};
DWORD_PTR
UINT transType,
DWORD keyboardId,
HKL dwhkl );
+
+typedef struct tagDOSENDMESSAGE
+{
+ UINT uFlags;
+ UINT uTimeout;
+ ULONG_PTR Result;
+}
+DOSENDMESSAGE, *PDOSENDMESSAGE;
+
BOOL
NTAPI
NtUserMessageCall(
HDESK
NTAPI
NtUserOpenDesktop(
- PUNICODE_STRING lpszDesktopName,
- DWORD dwFlags,
- ACCESS_MASK dwDesiredAccess);
+ POBJECT_ATTRIBUTES ObjectAttributes,
+ DWORD dwFlags,
+ ACCESS_MASK dwDesiredAccess);
HDESK
NTAPI
HWINSTA
NTAPI
NtUserOpenWindowStation(
- PUNICODE_STRING lpszWindowStationName,
+ POBJECT_ATTRIBUTES ObjectAttributes,
ACCESS_MASK dwDesiredAccess);
BOOL
DWORD dwUnknown5,
DWORD dwUnknown6);
-BOOL
-NTAPI
-NtUserPeekMessage(
- PNTUSERGETMESSAGEINFO MsgInfo,
- HWND hWnd,
- UINT wMsgFilterMin,
- UINT wMsgFilterMax,
- UINT wRemoveMsg);
+BOOL APIENTRY
+NtUserPeekMessage( PMSG pMsg,
+ HWND hWnd,
+ UINT MsgFilterMin,
+ UINT MsgFilterMax,
+ UINT RemoveMsg);
BOOL
NTAPI
{
struct
{
- UINT uiLo;
- UINT uiHi;
+ UINT_PTR uiLo;
+ UINT_PTR uiHi;
} Packed;
LPARAM Unpacked;
} Value;
#define NOPARAM_ROUTINE_ANYPOPUP 0xffff0006
#define ONEPARAM_ROUTINE_CSRSS_GUICHECK 0xffff0008
#define ONEPARAM_ROUTINE_SWITCHCARETSHOWING 0xfffe0008
-#define ONEPARAM_ROUTINE_ISWINDOWINDESTROY 0xfffe000c
#define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
#define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
-#define ONEPARAM_ROUTINE_CREATECURICONHANDLE 0xfffe0025 // CREATE_EMPTY_CURSOR_OBJECT ?
-#define ONEPARAM_ROUTINE_MSQSETWAKEMASK 0xfffe0027
#define ONEPARAM_ROUTINE_GETCURSORPOSITION 0xfffe0048 // use ONEPARAM_ or TWOPARAM routine ?
-#define TWOPARAM_ROUTINE_GETWINDOWRGNBOX 0xfffd0048 // user mode
-#define TWOPARAM_ROUTINE_GETWINDOWRGN 0xfffd0049 // user mode
#define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
#define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0052
#define MSQ_STATE_CAPTURE 0x1
#define TWOPARAM_ROUTINE_SETCARETPOS 0xfffd0060
#define TWOPARAM_ROUTINE_REGISTERLOGONPROC 0xfffd0062
#define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
+#define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
DWORD
NTAPI
ULONG nBufSize,
DWORD Reserved);
-/* Use ONEPARAM_ROUTINE_CREATEEMPTYCURSOROBJECT (0x21) ? */
-HANDLE
-NTAPI
-NtUserCreateCursorIconHandle(
- PICONINFO IconInfo,
- BOOL Indirect);
-
/* Should be done in usermode and use NtUserGetCPD. */
ULONG_PTR
BOOL fsog
);
-
-
typedef struct tagROSMENUITEMINFO
{
/* ----------- MENUITEMINFOW ----------- */
IN HWND hWnd,
IN DWORD dwFlags);
-
-typedef struct tagNTUSERSENDMESSAGEINFO
-{
- BOOL HandledByKernel;
- BOOL Ansi;
- WNDPROC Proc;
-} NTUSERSENDMESSAGEINFO, *PNTUSERSENDMESSAGEINFO;
-
-/* use NtUserMessageCall */
-LRESULT NTAPI
-NtUserSendMessage(HWND hWnd,
- UINT Msg,
- WPARAM wParam,
- LPARAM lParam,
- PNTUSERSENDMESSAGEINFO Info);
-
-/* use NtUserMessageCall */
-LRESULT NTAPI
-NtUserSendMessageTimeout(HWND hWnd,
- UINT Msg,
- WPARAM wParam,
- LPARAM lParam,
- UINT uFlags,
- UINT uTimeout,
- ULONG_PTR *uResult,
- PNTUSERSENDMESSAGEINFO Info);
-
typedef struct _SETSCROLLBARINFO
{
int nTrackPos;