1 #pragma once 2 3 #define IS_ATOM(x) \ 4 (((ULONG_PTR)(x) > 0x0) && ((ULONG_PTR)(x) < 0x10000)) 5 6 typedef struct _WNDPROC_INFO 7 { 8 WNDPROC WindowProc; 9 BOOL IsUnicode; 10 } WNDPROC_INFO, *PWNDPROC_INFO; 11 12 static __inline BOOL 13 IsCallProcHandle(IN WNDPROC lpWndProc) 14 { 15 /* FIXME: Check for 64-bit architectures... */ 16 return ((ULONG_PTR)lpWndProc & 0xFFFF0000) == 0xFFFF0000; 17 } 18 19 BOOLEAN 20 DestroyCallProc(_Inout_ PVOID Object); 21 22 PCALLPROCDATA 23 CreateCallProc(IN PDESKTOP Desktop, 24 IN WNDPROC WndProc, 25 IN BOOL Unicode, 26 IN PPROCESSINFO pi); 27 28 BOOL 29 UserGetCallProcInfo(IN HANDLE hCallProc, 30 OUT PWNDPROC_INFO wpInfo); 31 32 void FASTCALL 33 DestroyProcessClasses(PPROCESSINFO Process ); 34 35 VOID 36 IntDereferenceClass(IN OUT PCLS Class, 37 IN PDESKTOPINFO Desktop, 38 IN PPROCESSINFO pi); 39 40 PCLS 41 IntGetAndReferenceClass(PUNICODE_STRING ClassName, HINSTANCE hInstance, BOOL bDesktopThread); 42 43 BOOL FASTCALL UserRegisterSystemClasses(VOID); 44 45 VOID 46 UserAddCallProcToClass(IN OUT PCLS Class, 47 IN PCALLPROCDATA CallProc); 48 49 _Success_(return) 50 BOOL 51 NTAPI 52 IntGetAtomFromStringOrAtom( 53 _In_ PUNICODE_STRING ClassName, 54 _Out_ RTL_ATOM *Atom); 55 56 BOOL 57 IntCheckProcessDesktopClasses(IN PDESKTOP Desktop, 58 IN BOOL FreeOnFailure); 59 60 ULONG_PTR FASTCALL UserGetCPD(PVOID,GETCPD,ULONG_PTR); 61 62 _Must_inspect_result_ 63 NTSTATUS 64 NTAPI 65 ProbeAndCaptureUnicodeStringOrAtom( 66 _Out_ _When_(return>=0, _At_(pustrOut->Buffer, _Post_ _Notnull_)) PUNICODE_STRING pustrOut, 67 __in_data_source(USER_MODE) _In_ PUNICODE_STRING pustrUnsafe); 68 69 BOOL FASTCALL LookupFnIdToiCls(int FnId, int *iCls); 70 71 INT 72 UserGetClassName(IN PCLS Class, 73 IN OUT PUNICODE_STRING ClassName, 74 IN RTL_ATOM Atom, 75 IN BOOL Ansi); 76 77 /* EOF */ 78