15#define USE_VERSIONED_CLASSES
48 static const WCHAR classesW[][20] =
50 {
'C',
'o',
'm',
'b',
'o',
'B',
'o',
'x',
'E',
'x',
'3',
'2',0},
51 {
'm',
's',
'c',
't',
'l',
's',
'_',
'h',
'o',
't',
'k',
'e',
'y',
'3',
'2',0},
52 {
'm',
's',
'c',
't',
'l',
's',
'_',
'p',
'r',
'o',
'g',
'r',
'e',
's',
's',
'3',
'2',0},
53 {
'm',
's',
'c',
't',
'l',
's',
'_',
's',
't',
'a',
't',
'u',
's',
'b',
'a',
'r',
'3',
'2',0},
54 {
'm',
's',
'c',
't',
'l',
's',
'_',
't',
'r',
'a',
'c',
'k',
'b',
'a',
'r',
'3',
'2',0},
55 {
'm',
's',
'c',
't',
'l',
's',
'_',
'u',
'p',
'd',
'o',
'w',
'n',
'3',
'2',0},
56 {
'N',
'a',
't',
'i',
'v',
'e',
'F',
'o',
'n',
't',
'C',
't',
'l',0},
57 {
'R',
'e',
'B',
'a',
'r',
'W',
'i',
'n',
'd',
'o',
'w',
'3',
'2',0},
58 {
'S',
'y',
's',
'A',
'n',
'i',
'm',
'a',
't',
'e',
'3',
'2',0},
59 {
'S',
'y',
's',
'D',
'a',
't',
'e',
'T',
'i',
'm',
'e',
'P',
'i',
'c',
'k',
'3',
'2',0},
60 {
'S',
'y',
's',
'H',
'e',
'a',
'd',
'e',
'r',
'3',
'2',0},
61 {
'S',
'y',
's',
'I',
'P',
'A',
'd',
'd',
'r',
'e',
's',
's',
'3',
'2',0},
62 {
'S',
'y',
's',
'L',
'i',
's',
't',
'V',
'i',
'e',
'w',
'3',
'2',0},
63 {
'S',
'y',
's',
'M',
'o',
'n',
't',
'h',
'C',
'a',
'l',
'3',
'2',0},
64 {
'S',
'y',
's',
'P',
'a',
'g',
'e',
'r',0},
65 {
'S',
'y',
's',
'T',
'a',
'b',
'C',
'o',
'n',
't',
'r',
'o',
'l',
'3',
'2',0},
66 {
'S',
'y',
's',
'T',
'r',
'e',
'e',
'V',
'i',
'e',
'w',
'3',
'2',0},
67 {
'T',
'o',
'o',
'l',
'b',
'a',
'r',
'W',
'i',
'n',
'd',
'o',
'w',
'3',
'2',0},
68 {
't',
'o',
'o',
'l',
't',
'i',
'p',
's',
'_',
'c',
'l',
'a',
's',
's',
'3',
'2',0},
71 int min = 0,
max = (
sizeof(classesW) /
sizeof(classesW[0])) - 1;
86 const void* lpszClass,
93#ifdef USE_VERSIONED_CLASSES
98 ACTCTX_SECTION_KEYED_DATA KeyedData = {
sizeof(KeyedData) };
102 ERR(
"Null class given !\n");
108 RtlInitEmptyUnicodeString(&SectionName, SectionNameBuf,
sizeof(SectionNameBuf));
115 TRACE(
"ClassNameToVersion got name %wZ from atom\n", &SectionName);
123 RtlInitEmptyUnicodeString(&SectionName, SectionNameBuf,
sizeof(SectionNameBuf));
131#ifdef USE_VERSIONED_CLASSES
134 ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION,
143 if(SectionHeader && SectionHeader->
count > 0)
146 if(WindowRedirectionData && WindowRedirectionData->
module_len)
152 TRACE(
"Returning VersionedClass=%S, plpLibFileName=%S for class %S\n", VersionedClass, lpLibFileName, SectionName.
Buffer);
154 if (pContext) *pContext = KeyedData.hActCtx;
155 if (plpLibFileName) *plpLibFileName = lpLibFileName;
161 if (KeyedData.hActCtx)
165#ifndef DEFAULT_ACTIVATION_CONTEXTS_SUPPORTED
177 if (pContext) *pContext = 0;
178 if (plpLibFileName) *plpLibFileName =
L"comctl32";
187 return VersionedClass;
203 PREGISTERCLASSNAMEW pRegisterClassNameW;
206 RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame = {
sizeof(Frame), 1 };
208 ERR(
"VersionRegisterClass: Attempting to call RegisterClassNameW in %S.\n", lpLibFileName);
221 RtlInitEmptyUnicodeString(&ClassName, ClassNameBuf,
sizeof(ClassNameBuf));
224 ERR(
"Error while verifying ATOM\n");
227 pszClass = ClassName.
Buffer;
229 Ret = pRegisterClassNameW(pszClass);
233 WARN(
"No RegisterClassNameW PROC\n");
239 ERR(
"Got exception while trying to call RegisterClassNameW!\n");
280 IS_ATOM(lpszClass) ? lpszClass : 0,
294 if (lpszClass ==
NULL)
311 ConvertedString =
TRUE;
321 TRACE(
"RegisterSystemControls\n");
333 if (!lpLibFileName)
break;
341 if (ClassFound)
continue;
390 IS_ATOM(lpszClass) ? lpszClass : 0,
407 if (lpszClass ==
NULL)
429 TRACE(
"RegisterSystemControls\n");
441 if (!lpLibFileName)
break;
449 if (ClassFound)
continue;
582 return (gcpd ? gcpd : Ret);
595 if (!
Class)
return Ret;
649 return (gcpd ? gcpd : Ret);
659 if (nIndex +
sizeof(
ULONG_PTR) < nIndex ||
681 if (Ret != 0 && Ret < 0x4000)
734 if (nIndex +
sizeof(
ULONG_PTR) < nIndex ||
756 if (Ret != 0 && Ret < 0x4000)
845 WARN(
"Invalid class for hwnd 0x%p!\n",
hWnd);
901 WARN(
"Invalid class for hwnd 0x%p!\n",
hWnd);
941 WARN(
"Invalid class for hwnd 0x%p!\n",
hWnd);
980 WARN(
"Invalid class for hwnd 0x%p!\n",
hWnd);
1009 lpClassName[
len] = 0;
1011 TRACE(
"%p class/atom: %s/%04x %x\n",
hWnd,
1013 IS_ATOM(lpClassName) ? lpClassName : 0,
1033 RtlInitEmptyUnicodeString(&ClassName,
1041 TRACE(
"%p class/atom: %S/%04x %x\n",
hWnd,
1043 IS_ATOM(lpClassName) ? lpClassName : 0,
1070 if (
class ==
NULL)
return 0;
1072 if (offset <= class->cbclsExtra -
sizeof(
WORD))
1073 memcpy( &retvalue, (
char *)(
class + 1) +
offset,
sizeof(retvalue) );
1125 case -1: retvalue = (
ULONG_PTR)&wndPtr->ww;
break;
1137 ERR(
"Outside Access and Denied!\n");
1212 WARN(
"Invalid offset %d\n", nIndex );
1233 RtlInitEmptyUnicodeString(&ClassName,
1235 cchType *
sizeof(
WCHAR));
1254 if ((
INT)cchType <= 0)
return 0;
1266CreateSmallIcon(
HICON StdIcon)
1271 int SmallIconHeight;
1283 if (
NULL == StdIcon)
1292 ERR(
"Failed to get icon info for icon 0x%x\n", StdIcon);
1297 ERR(
"Failed to get bitmap info for icon 0x%x bitmap 0x%x\n",
1301 if (StdBitmapInfo.bmWidth == SmallIconWidth &&
1302 StdBitmapInfo.bmHeight == SmallIconHeight)
1309 if (
NULL == hSourceDc)
1311 ERR(
"Failed to create source DC\n");
1315 if (
NULL == hDestDc)
1317 ERR(
"Failed to create dest DC\n");
1322 if (
NULL == OldSourceBitmap)
1324 ERR(
"Failed to select source color bitmap\n");
1331 ERR(
"Failed to create color bitmap\n");
1335 if (
NULL == OldDestBitmap)
1337 ERR(
"Failed to select dest color bitmap\n");
1340 if (!
StretchBlt(hDestDc, 0, 0, SmallIconWidth, SmallIconHeight,
1341 hSourceDc, 0, 0, StdBitmapInfo.bmWidth,
1342 StdBitmapInfo.bmHeight,
SRCCOPY))
1344 ERR(
"Failed to stretch color bitmap\n");
1350 ERR(
"Failed to select source mask bitmap\n");
1356 ERR(
"Failed to create mask bitmap\n");
1361 ERR(
"Failed to select dest mask bitmap\n");
1364 if (!
StretchBlt(hDestDc, 0, 0, SmallIconWidth, SmallIconHeight,
1365 hSourceDc, 0, 0, StdBitmapInfo.bmWidth,
1366 StdBitmapInfo.bmHeight,
SRCCOPY))
1368 ERR(
"Failed to stretch mask bitmap\n");
1373 SmallInfo.
xHotspot = SmallIconWidth / 2;
1374 SmallInfo.
yHotspot = SmallIconHeight / 2;
1378 ERR(
"Failed to create icon\n");
1387 if (
NULL != OldDestBitmap)
1395 if (
NULL != hDestDc)
1399 if (
NULL != OldSourceBitmap)
1403 if (
NULL != hSourceDc)
1432 TRACE(
"RegisterClassExWOWW Invalid Parameter Error!\n");
1453 TRACE(
"RegisterClassExWOWW User32Instance!\n");
1468 RtlInitEmptyAnsiString(&AnsiMenuName,
NULL, 0);
1497 ClassVersion = ClassName;
1519 TRACE(
"atom=%04x wndproc=%p hinst=%p bg=%p style=%08x clsExt=%d winExt=%d class=%p\n",
1565 TRACE(
"A atom=%04x wndproc=%p hinst=%p bg=%p style=%08x clsExt=%d winExt=%d class=%p\n",
1566 Atom, lpwcx->lpfnWndProc, lpwcx->hInstance, lpwcx->hbrBackground,
1567 lpwcx->style, lpwcx->cbClsExtra, lpwcx->cbWndExtra,
WndClass);
1582 TRACE(
"W atom=%04x wndproc=%p hinst=%p bg=%p style=%08x clsExt=%d winExt=%d\n",
1583 Atom, lpwcx->lpfnWndProc, lpwcx->hInstance, lpwcx->hbrBackground,
1584 lpwcx->style, lpwcx->cbClsExtra, lpwcx->cbWndExtra);
1597 if (lpWndClass ==
NULL)
1602 Class.style = lpWndClass->style;
1603 Class.lpfnWndProc = lpWndClass->lpfnWndProc;
1604 Class.cbClsExtra = lpWndClass->cbClsExtra;
1605 Class.cbWndExtra = lpWndClass->cbWndExtra;
1606 Class.hInstance = lpWndClass->hInstance;
1607 Class.hIcon = lpWndClass->hIcon;
1608 Class.hCursor = lpWndClass->hCursor;
1609 Class.hbrBackground = lpWndClass->hbrBackground;
1610 Class.lpszMenuName = lpWndClass->lpszMenuName;
1611 Class.lpszClassName = lpWndClass->lpszClassName;
1627 if (lpWndClass ==
NULL)
1632 Class.style = lpWndClass->style;
1633 Class.lpfnWndProc = lpWndClass->lpfnWndProc;
1634 Class.cbClsExtra = lpWndClass->cbClsExtra;
1635 Class.cbWndExtra = lpWndClass->cbWndExtra;
1636 Class.hInstance = lpWndClass->hInstance;
1637 Class.hIcon = lpWndClass->hIcon;
1638 Class.hCursor = lpWndClass->hCursor;
1639 Class.hbrBackground = lpWndClass->hbrBackground;
1640 Class.lpszMenuName = lpWndClass->lpszMenuName;
1641 Class.lpszClassName = lpWndClass->lpszClassName;
1728 TRACE(
"%p %d %lx\n",
hWnd, nIndex, dwNewLong);
1740 Value.Buffer = lpStr;
1752 Value.Buffer = lpStr;
1804 if ((nIndex < 0) && (nIndex !=
GCW_ATOM))
1826 WARN(
"Invalid offset %d\n", nIndex );
1902 TRACE(
"class/atom: %s/%04x %p\n",
1904 IS_ATOM(lpClassName) ? lpClassName : 0,
1912 else if (!
IS_ATOM(lpClassName))
1914 ConvertedString =
TRUE;
1928 if (ConvertedString)
1947 TRACE(
"class/atom: %S/%04x %p\n",
1949 IS_ATOM(lpClassName) ? lpClassName : 0,
1957 else if (!
IS_ATOM(lpClassName))
#define DECLSPEC_HOTPATCH
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define ERROR_NOT_ENOUGH_MEMORY
#define NT_SUCCESS(StatCode)
#define ERROR_INVALID_PARAMETER
#define GetProcAddress(x, y)
#define MultiByteToWideChar
#define ERROR_ACCESS_DENIED
#define ValidateHwnd(hwnd)
static PVOID FASTCALL DesktopPtrToUser(PVOID ptr)
static void cleanup(void)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
IN PFCB IN VBO OUT PLBO OUT PULONG OUT PBOOLEAN Allocated
GLfloat GLfloat GLfloat GLfloat h
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define EXCEPTION_EXECUTE_HANDLER
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define GETPFNCLIENTW(fnid)
#define GETPFNCLIENTA(fnid)
#define WNDS_SERVERSIDEWINDOWPROC
#define UserHMGetHandle(obj)
#define NtUserSetWindowLongPtr
#define GETPFNSERVER(fnid)
ULONG_PTR NTAPI NtUserGetCPD(HWND hWnd, GETCPD Flags, ULONG_PTR Proc)
#define CSF_SERVERSIDEPROC
#define WNDS_ANSIWINDOWPROC
NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionString(ULONG, const GUID *, ULONG, const UNICODE_STRING *, PVOID)
NTSYSAPI void WINAPI RtlReleaseActivationContext(HANDLE)
#define memcpy(s1, s2, n)
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz(_Out_ PUNICODE_STRING Destination, _In_ PCSZ Source)
_Use_decl_annotations_ NTSTATUS NTAPI RtlUnicodeToMultiByteN(_Out_ PCHAR MbString, _In_ ULONG MbSize, _Out_opt_ PULONG ResultSize, _In_ PCWCH UnicodeString, _In_ ULONG UnicodeSize)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
DWORD RegisterDefaultClasses
BOOL WINAPI RegisterSystemControls(VOID)
PRTL_ACTIVATION_CONTEXT_STACK_FRAME FASTCALL RtlActivateActivationContextUnsafeFast(IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame, IN PVOID Context)
PRTL_ACTIVATION_CONTEXT_STACK_FRAME FASTCALL RtlDeactivateActivationContextUnsafeFast(IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame)
convenient loading of small (16x16) icon resources
#define RtlCopyMemory(Destination, Source, Length)
BOOL FASTCALL TestWindowProcess(PWND)
static __inline PVOID SharedPtrToUser(PVOID Ptr)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
INT APIENTRY NtUserGetClassName(IN HWND hWnd, IN BOOL Real, OUT PUNICODE_STRING ClassName)
BOOL APIENTRY NtUserUnregisterClass(IN PUNICODE_STRING ClassNameOrAtom, IN HINSTANCE hInstance, OUT PCLSMENUNAME pClassMenuName)
RTL_ATOM APIENTRY NtUserRegisterClassExWOW(WNDCLASSEXW *lpwcx, PUNICODE_STRING ClassName, PUNICODE_STRING ClsVersion, PCLSMENUNAME pClassMenuName, DWORD fnID, DWORD Flags, LPDWORD pWow)
ULONG_PTR APIENTRY NtUserSetClassLong(HWND hWnd, INT Offset, ULONG_PTR dwNewLong, BOOL Ansi)
BOOL APIENTRY NtUserGetClassInfo(HINSTANCE hInstance, PUNICODE_STRING ClassName, LPWNDCLASSEXW lpWndClassEx, LPWSTR *ppszMenuName, BOOL bAnsi)
ULONG_PTR FASTCALL IntGetClsWndProc(PWND pWnd, PCLS Class, BOOL Ansi)
WNDPROC FASTCALL IntGetWndProc(PWND pWnd, BOOL Ansi)
UINT WINAPI RealGetWindowClassW(HWND hwnd, LPWSTR pszType, UINT cchType)
UINT WINAPI RealGetWindowClassA(HWND hwnd, LPSTR pszType, UINT cchType)
ATOM WINAPI RegisterClassExWOWW(WNDCLASSEXW *lpwcx, LPDWORD pdwWowData, WORD fnID, DWORD dwFlags, BOOL ChkRegCls)
static ULONG_PTR FASTCALL IntGetClassLongA(PWND Wnd, PCLS Class, int nIndex)
LONG WINAPI GetWindowLongA(HWND hWnd, int nIndex)
LONG WINAPI GetWindowLongW(HWND hWnd, int nIndex)
WORD WINAPI SetClassWord(HWND hWnd, int nIndex, WORD wNewWord)
WORD WINAPI SetWindowWord(HWND hWnd, int nIndex, WORD wNewWord)
LONG_PTR IntGetWindowLong(HWND hwnd, INT offset, UINT size, BOOL unicode)
LONG WINAPI DECLSPEC_HOTPATCH SetWindowLongA(HWND hWnd, int nIndex, LONG dwNewLong)
WORD WINAPI GetWindowWord(HWND hWnd, int nIndex)
LPCWSTR is_comctl32_class(const WCHAR *name)
static ULONG_PTR FASTCALL IntGetClassLongW(PWND Wnd, PCLS Class, int nIndex)
DWORD WINAPI GetClassLongA(HWND hWnd, int nIndex)
WORD WINAPI GetClassWord(HWND hwnd, int offset)
BOOL FASTCALL VersionRegisterClass(PCWSTR pszClass, LPCWSTR lpLibFileName, HANDLE Contex, HMODULE *phLibModule)
LPCWSTR FASTCALL ClassNameToVersion(const void *lpszClass, LPCWSTR lpszMenuName, LPCWSTR *plpLibFileName, HANDLE *pContext, BOOL bAnsi)
LONG WINAPI SetWindowLongW(HWND hWnd, int nIndex, LONG dwNewLong)
DWORD WINAPI GetLastError(void)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define ERROR_INVALID_INDEX
#define ERROR_INVALID_WINDOW_HANDLE
#define ERROR_CLASS_DOES_NOT_EXIST
#define ERROR_CANNOT_FIND_WND_CLASS
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
BOOL WINAPI StretchBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_opt_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD)
HBITMAP WINAPI CreateCompatibleBitmap(_In_ HDC hdc, _In_ INT cx, _In_ INT cy)
BOOL WINAPI DeleteDC(_In_ HDC)
#define SetWindowLongPtrA
#define GetWindowLongPtrW
HICON WINAPI CreateIconIndirect(_In_ PICONINFO)
BOOL WINAPI UnregisterClassA(_In_ LPCSTR, HINSTANCE)
BOOL WINAPI GetIconInfo(_In_ HICON, _Out_ PICONINFO)
HBRUSH WINAPI GetSysColorBrush(_In_ int)
int WINAPI GetClassNameA(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPSTR lpClassName, _In_ int nMaxCount)
#define IS_INTRESOURCE(i)
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
BOOL WINAPI GetClassInfoExA(_In_opt_ HINSTANCE, _In_ LPCSTR, _Out_ LPWNDCLASSEXA)
#define GetWindowLongPtrA
BOOL WINAPI GetClassInfoExW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _Out_ LPWNDCLASSEXW)
HWND WINAPI GetDesktopWindow(void)
ATOM WINAPI RegisterClassA(_In_ CONST WNDCLASSA *)
ATOM WINAPI RegisterClassExA(_In_ CONST WNDCLASSEXA *)
DWORD WINAPI SetClassLongW(_In_ HWND, _In_ int, _In_ LONG)
ATOM WINAPI RegisterClassExW(_In_ CONST WNDCLASSEXW *)
#define GCL_HBRBACKGROUND
BOOL WINAPI GetClassInfoA(_In_opt_ HINSTANCE, _In_ LPCSTR, _Out_ LPWNDCLASSA)
HWND WINAPI GetWindow(_In_ HWND, _In_ UINT)
int WINAPI GetClassNameW(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPWSTR lpClassName, _In_ int nMaxCount)
DWORD WINAPI SetClassLongA(_In_ HWND, _In_ int, _In_ LONG)
struct _WNDCLASSEXW WNDCLASSEXW
struct _WNDCLASSEXA WNDCLASSEXA
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
DWORD WINAPI GetClassLongW(_In_ HWND, _In_ int)
BOOL WINAPI GetClassInfoW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _Out_ LPWNDCLASSW)
#define SetWindowLongPtrW
#define GCLP_HBRBACKGROUND
int WINAPI GetSystemMetrics(_In_ int)
HWND WINAPI GetAncestor(_In_ HWND, _In_ UINT)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO