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 /* SEH Support with PSEH */
43 #include <pseh/pseh2.h>
45 /* FIXME: Use ntgdi.h then cleanup... */
46 HGDIOBJ WINAPI
NtGdiSelectObject(HDC hDC
, HGDIOBJ hGDIObj
);
47 BOOL WINAPI
NtGdiPatBlt(HDC hdcDst
, INT x
, INT y
, INT cx
, INT cy
, DWORD rop4
);
48 LONG WINAPI
GdiGetCharDimensions(HDC
, LPTEXTMETRICW
, LONG
*);
49 BOOL FASTCALL
IsMetaFile(HDC
);
51 extern PW32PROCESSINFO g_pi
;
52 extern PW32PROCESSINFO g_kpi
;
53 extern PSERVERINFO g_psi
;
56 SharedPtrToUser(PVOID Ptr
)
60 ASSERT(g_pi
->UserHeapDelta
!= 0);
61 return (PVOID
)((ULONG_PTR
)Ptr
- g_pi
->UserHeapDelta
);
65 DesktopPtrToUser(PVOID Ptr
)
68 PCLIENTINFO pci
= GetWin32ClientInfo();
69 PDESKTOPINFO pdi
= pci
->pDeskInfo
;
73 if ((ULONG_PTR
)Ptr
>= (ULONG_PTR
)pdi
->pvDesktopBase
&&
74 (ULONG_PTR
)Ptr
< (ULONG_PTR
)pdi
->pvDesktopLimit
)
76 return (PVOID
)((ULONG_PTR
)Ptr
- pci
->ulClientDelta
);
80 /* NOTE: This is slow as it requires a call to win32k. This should only be
81 neccessary if a thread wants to access an object on a different
83 return (PVOID
)NtUserGetDesktopMapping(Ptr
);
88 SharedPtrToKernel(PVOID Ptr
)
92 ASSERT(g_pi
->UserHeapDelta
!= 0);
93 return (PVOID
)((ULONG_PTR
)Ptr
+ g_pi
->UserHeapDelta
);
97 IsThreadHooked(PW32THREADINFO ti
)
99 return ti
->Hooks
!= 0;
102 static __inline PDESKTOPINFO
103 GetThreadDesktopInfo(VOID
)
106 PDESKTOPINFO di
= NULL
;
108 ti
= GetW32ThreadInfo();
110 di
= DesktopPtrToUser(ti
->Desktop
);
115 PCALLPROC FASTCALL
ValidateCallProc(HANDLE hCallProc
);
116 PWINDOW FASTCALL
ValidateHwnd(HWND hwnd
);
117 PWINDOW FASTCALL
ValidateHwndOrDesk(HWND hwnd
);
118 PWINDOW FASTCALL
GetThreadDesktopWnd(VOID
);
119 PVOID FASTCALL
ValidateHandleNoErr(HANDLE handle
, UINT uType
);
120 PWINDOW FASTCALL
ValidateHwndNoErr(HWND hwnd
);
121 VOID FASTCALL
GetConnected(VOID
);