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 LONG WINAPI
GdiGetCharDimensions(HDC
, LPTEXTMETRICW
, LONG
*);
47 BOOL FASTCALL
IsMetaFile(HDC
);
49 extern PPROCESSINFO g_ppi
;
50 extern ULONG_PTR g_ulSharedDelta
;
51 extern PSERVERINFO g_psi
;
54 SharedPtrToUser(PVOID Ptr
)
57 ASSERT(g_ulSharedDelta
!= 0);
58 return (PVOID
)((ULONG_PTR
)Ptr
- g_ulSharedDelta
);
62 DesktopPtrToUser(PVOID Ptr
)
65 PCLIENTINFO pci
= GetWin32ClientInfo();
66 PDESKTOPINFO pdi
= pci
->pDeskInfo
;
70 if ((ULONG_PTR
)Ptr
>= (ULONG_PTR
)pdi
->pvDesktopBase
&&
71 (ULONG_PTR
)Ptr
< (ULONG_PTR
)pdi
->pvDesktopLimit
)
73 return (PVOID
)((ULONG_PTR
)Ptr
- pci
->ulClientDelta
);
77 /* NOTE: This is slow as it requires a call to win32k. This should only be
78 neccessary if a thread wants to access an object on a different
80 return NtUserGetDesktopMapping(Ptr
);
85 SharedPtrToKernel(PVOID Ptr
)
88 ASSERT(g_ulSharedDelta
!= 0);
89 return (PVOID
)((ULONG_PTR
)Ptr
+ g_ulSharedDelta
);
93 IsThreadHooked(PCLIENTINFO pci
)
95 return pci
->fsHooks
!= 0;
98 static __inline PDESKTOPINFO
99 GetThreadDesktopInfo(VOID
)
102 PDESKTOPINFO di
= NULL
;
104 ti
= GetW32ThreadInfo();
106 di
= GetWin32ClientInfo()->pDeskInfo
;
111 PCALLPROCDATA FASTCALL
ValidateCallProc(HANDLE hCallProc
);
112 PWND FASTCALL
ValidateHwnd(HWND hwnd
);
113 PWND FASTCALL
ValidateHwndOrDesk(HWND hwnd
);
114 PWND FASTCALL
GetThreadDesktopWnd(VOID
);
115 PVOID FASTCALL
ValidateHandleNoErr(HANDLE handle
, UINT uType
);
116 PWND FASTCALL
ValidateHwndNoErr(HWND hwnd
);
117 VOID FASTCALL
GetConnected(VOID
);
118 BOOL FASTCALL
DefSetText(HWND hWnd
, PCWSTR String
, BOOL Ansi
);
119 BOOL FASTCALL
TestWindowProcess(PWND
);