xref: /reactos/win32ss/user/ntuser/class.h (revision 50cf16b3)
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