2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS System Libraries
4 * FILE: lib/user32/include/user32.h
5 * PURPOSE: Win32 User Library
6 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
9 /* INCLUDES ******************************************************************/
19 #define NTOS_MODE_USER
20 #define WIN32_NO_STATUS
25 #include <ndk/ntndk.h>
26 #include <ddk/ntstatus.h>
29 #include <csrss/csrss.h>
31 /* Public Win32K Headers */
32 #include <win32k/ntusrtyp.h>
33 #include <win32k/ntuser.h>
34 #include <win32k/callback.h>
37 #include <wine/unicode.h>
39 /* Internal User32 Headers */
42 #include <libs/pseh/pseh.h>
43 #include <libs/pseh/framebased.h>
45 /* FIXME: Use ntgdi.h then cleanup... */
46 HGDIOBJ STDCALL
NtGdiSelectObject(HDC hDC
, HGDIOBJ hGDIObj
);
47 BOOL STDCALL
NtGdiPatBlt(HDC hdcDst
, INT x
, INT y
, INT cx
, INT cy
, DWORD rop4
);
48 LONG STDCALL
GdiGetCharDimensions(HDC
, LPTEXTMETRICW
, LONG
*);
49 BOOL FASTCALL
IsMetaFile(HDC
);
51 extern PW32PROCESSINFO g_pi
;
52 extern PW32PROCESSINFO g_kpi
;
55 SharedPtrToUser(PVOID Ptr
)
59 ASSERT(g_pi
->UserHeapDelta
!= 0);
60 return (PVOID
)((ULONG_PTR
)Ptr
- g_pi
->UserHeapDelta
);
64 DesktopPtrToUser(PVOID Ptr
)
66 PW32THREADINFO ti
= GetW32ThreadInfo();
69 if ((ULONG_PTR
)Ptr
>= (ULONG_PTR
)ti
->DesktopHeapBase
&&
70 (ULONG_PTR
)Ptr
< (ULONG_PTR
)ti
->DesktopHeapBase
+ ti
->DesktopHeapLimit
)
72 return (PVOID
)((ULONG_PTR
)Ptr
- ti
->DesktopHeapDelta
);
76 /* NOTE: This is slow as it requires a call to win32k. This should only be
77 neccessary if a thread wants to access an object on a different
79 return NtUserGetDesktopMapping(Ptr
);
84 SharedPtrToKernel(PVOID Ptr
)
88 ASSERT(g_pi
->UserHeapDelta
!= 0);
89 return (PVOID
)((ULONG_PTR
)Ptr
+ g_pi
->UserHeapDelta
);
93 IsThreadHooked(PW32THREADINFO ti
)
95 return ti
->Hooks
!= 0;
98 static __inline PDESKTOP
99 GetThreadDesktopInfo(VOID
)
104 ti
= GetW32ThreadInfo();
106 di
= DesktopPtrToUser(ti
->Desktop
);
111 PCALLPROC FASTCALL
ValidateCallProc(HANDLE hCallProc
);
112 PWINDOW FASTCALL
ValidateHwnd(HWND hwnd
);
113 PWINDOW FASTCALL
ValidateHwndOrDesk(HWND hwnd
);
114 PWINDOW FASTCALL
GetThreadDesktopWnd(VOID
);
115 PVOID FASTCALL
ValidateHandleNoErr(HANDLE handle
, UINT uType
);
116 PWINDOW FASTCALL
ValidateHwndNoErr(HWND hwnd
);