32 'S',
'o',
'f',
't',
'w',
'a',
'r',
'e',
'\\',
33 'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
34 'W',
'i',
'n',
'd',
'o',
'w',
's',
'\\',
35 'C',
'u',
'r',
'r',
'e',
'n',
't',
'V',
'e',
'r',
's',
'i',
'o',
'n',
'\\',
36 'T',
'h',
'e',
'm',
'e',
'M',
'a',
'n',
'a',
'g',
'e',
'r',
'\0'
38static const WCHAR szThemeActive[] = {
'T',
'h',
'e',
'm',
'e',
'A',
'c',
't',
'i',
'v',
'e',
'\0'};
43static const WCHAR szIniDocumentation[] = {
'd',
'o',
'c',
'u',
'm',
'e',
'n',
't',
'a',
't',
'i',
'o',
'n',
'\0'};
109 nBytesToAlloc = dwUnExpDataLen;
114 dwUnExpDataLen =
max(nBytesToAlloc, dwExpDataLen);
124 dwUnExpDataLen =
max(nBytesToAlloc, dwExpDataLen);
191 WCHAR szCurrentColor[64];
192 WCHAR szCurrentSize[64];
199 TRACE(
"Loading theme config\n");
200 buffsize =
sizeof(tmp);
208 buffsize =
sizeof(szCurrentColor);
210 szCurrentColor[0] =
'\0';
211 buffsize =
sizeof(szCurrentSize);
213 szCurrentSize[0] =
'\0';
215 szCurrentTheme[0] =
'\0';
219 TRACE(
"Failed to open theme registry key\n");
228 if(
bIsThemeActive(szCurrentTheme, szCurrentColor, szCurrentSize) )
230 TRACE(
"Tried to load active theme again\n");
236 szCurrentColor[0]?szCurrentColor:
NULL,
237 szCurrentSize[0]?szCurrentSize:
NULL,
252 TRACE(
"Theming not active\n");
285 "ButtonAlternateFace",
287 "GradientActiveTitle",
288 "GradientInactiveTitle",
293 {
'C',
'o',
'n',
't',
'r',
'o',
'l',
' ',
'P',
'a',
'n',
'e',
'l',
'\\',
294 'C',
'o',
'l',
'o',
'r',
's',0 };
297 'C',
'a',
'p',
't',
'i',
'o',
'n', 0 };
299 'M',
'e',
't',
'r',
'i',
'c',
's',0 };
314#define NUM_SYS_COLORS (COLOR_MENUBAR+1)
352 NONCLIENTMETRICSW ncm;
371 memset (&ncm, 0,
sizeof (ncm));
372 ncm.cbSize =
sizeof (ncm);
376 memset (&iconTitleFont, 0,
sizeof (iconTitleFont));
380 (
LPBYTE)&iconTitleFont,
sizeof (iconTitleFont));
416 if (
sscanf (colorStr,
"%d %d %d", &
r, &
g, &
b) == 3)
418 sysColsIndices[sysColCount] =
i;
419 sysCols[sysColCount] =
RGB(
r,
g,
b);
447 NONCLIENTMETRICSW ncm;
459 count =
sizeof(iconTitleFont);
480 NONCLIENTMETRICSW ncm;
494 memset (&ncm, 0,
sizeof (ncm));
495 ncm.cbSize =
sizeof (ncm);
500 memset (&iconTitleFont, 0,
sizeof (iconTitleFont));
518 TRACE(
"UXTHEME_ApplyTheme\n");
534 TRACE(
"Writing theme config to registry\n");
556 TRACE(
"Failed to open theme registry key\n");
568 static const WCHAR szWindowTheme[] = {
569 'u',
'x',
'_',
't',
'h',
'e',
'm',
'e',
'\0'
571 static const WCHAR szSubAppName[] = {
572 'u',
'x',
'_',
's',
'u',
'b',
'a',
'p',
'p',
'\0'
574 static const WCHAR szSubIdList[] = {
575 'u',
'x',
'_',
's',
'u',
'b',
'i',
'd',
'l',
's',
't',
'\0'
577 static const WCHAR szDialogThemeEnabled[] = {
578 'u',
'x',
'_',
'd',
'i',
'a',
'l',
'o',
'g',
't',
'h',
'e',
'm',
'e',
'\0'
614 TRACE(
"IsThemeActive\n");
627 buffsize =
sizeof(tmp);
629 bActive = (tmp[0] !=
'0');
645 WCHAR szEnabled[] = {
'0',
'\0'};
647 TRACE(
"(%d)\n", fEnable);
656 if (fEnable) szEnabled[0] =
'1';
692 ERR(
"AddAtomW for %S failed with last error %d!\n", pszValue,
GetLastError());
698 ERR(
"SetPropW for atom %d failed with last error %d\n", aProp,
GetLastError());
712 TRACE(
"property defined, but unable to get value\n");
726 ERR(
"Invalid handle 0x%x!\n", hTheme);
737 WCHAR szAppBuff[256];
738 WCHAR szClassBuff[256];
768 pszUseClassList = pszClassList;
785 TRACE(
"Created handle 0x%x for class 0x%x, app %S, class %S. Count: %d\n", pHandle, pClass, pszAppName, pszUseClassList,
g_cHandles);
800 if ((
flags & OTD_NONCLIENT) == 0)
812 TRACE(
" = %p\n", hTheme);
895 LPWSTR pszColorBuff,
int cchMaxColorChars,
896 LPWSTR pszSizeBuff,
int cchMaxSizeChars)
903 if (pszThemeFileName && dwMaxNameChars)
906 if(cchar > dwMaxNameChars)
911 if (pszColorBuff && cchMaxColorChars)
914 if(cchar > cchMaxColorChars)
919 if (pszSizeBuff && cchMaxSizeChars)
922 if(cchar > cchMaxSizeChars)
955 TRACE(
"(%p)\n", hTheme);
965 TRACE(
"Destroying handle 0x%x for class 0x%x. Count: %d\n", pHandle, pHandle->pClass,
g_cHandles);
991 TRACE(
"(%p,%d,%d)\n", hTheme, iPartId, iStateId);
1015 const WORD wDocToRes[] = {
1031 pszValueBuff, cchMaxValChars);
1042 for(
i=0;
i<
sizeof(wDocToRes)/
sizeof(wDocToRes[0]);
i+=2) {
1043 if(wDocToRes[
i] == iDocId) {
1044 if(
LoadStringW(
pt->hTheme, wDocToRes[
i+1], pszValueBuff, cchMaxValChars)) {
1058 lstrcpynW(pszValueBuff, lpValue,
min(dwLen+1,cchMaxValChars));
1129 TRACE(
"(%p)\n", hThemeFile);
1185 DWORD dwSizeNameLen)
1190 pszColorName, dwColorNameLen,
1191 pszSizeName, dwSizeNameLen);
1199 lstrcpynW(pszColorName,
pt->pszSelectedColor, dwColorNameLen);
1200 lstrcpynW(pszSizeName,
pt->pszSelectedSize, dwSizeNameLen);
1226 static const WCHAR szStar[] = {
'*',
'.',
'*',
'\0'};
1227 static const WCHAR szFormat[] = {
'%',
's',
'%',
's',
'\\',
'%',
's',
'.',
'm',
's',
's',
't',
'y',
'l',
'e',
's',
'\0'};
1228 static const WCHAR szDisplayName[] = {
'd',
'i',
's',
'p',
'l',
'a',
'y',
'n',
'a',
'm',
'e',
'\0'};
1229 static const WCHAR szTooltip[] = {
't',
'o',
'o',
'l',
't',
'i',
'p',
'\0'};
1244 if ((pathLen > 0) && (pathLen <
MAX_PATH-1) && (szDir[pathLen - 1] !=
'\\'))
1246 szDir[pathLen] =
'\\';
1247 szDir[pathLen+1] = 0;
1258 && !(wfd.cFileName[0] ==
'.' && ((wfd.cFileName[1] ==
'.' && wfd.cFileName[2] == 0) || wfd.cFileName[1] == 0))) {
1264 ERR(
"Failed to get theme name from %S\n",
szPath);
1274 TRACE(
"callback ended enum\n");
1316 UINT resourceId = dwColorNum + 1000;
1326 tmp =
pt->pszAvailColors;
1327 while(dwColorNum && *tmp) {
1331 if(!dwColorNum && *tmp) {
1379 UINT resourceId = dwSizeNum + 3000;
1389 tmp =
pt->pszAvailSizes;
1390 while(dwSizeNum && *tmp) {
1394 if(!dwSizeNum && *tmp) {
ACPI_SIZE strlen(const char *String)
#define RegCloseKey(hKey)
#define ERROR_INSUFFICIENT_BUFFER
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
LONG WINAPI RegSetValueExA(HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, CONST BYTE *lpData, DWORD cbData)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
LONG WINAPI RegCreateKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
#define INVALID_HANDLE_VALUE
UINT WINAPI GetAtomNameW(ATOM nAtom, LPWSTR lpBuffer, int nSize)
ATOM WINAPI DeleteAtom(ATOM nAtom)
ATOM WINAPI AddAtomW(LPCWSTR lpString)
ATOM WINAPI GlobalAddAtomW(LPCWSTR lpString)
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
HRESULT WINAPI GetThemeDocumentationProperty(LPCWSTR pszThemeName, LPCWSTR pszPropertyName, LPWSTR pszValueBuff, int cchMaxValChars)
void UXTHEME_LoadTheme(BOOL bLoad)
void WINAPI SetThemeAppProperties(DWORD dwFlags)
HRESULT WINAPI EnableTheming(BOOL fEnable)
static BOOL bIsThemeActive(LPCWSTR pszTheme, LPCWSTR pszColor, LPCWSTR pszSize)
static const WCHAR strColorKey[]
static const WCHAR keyIconTitleFont[]
HRESULT WINAPI ParseThemeIniFile(LPCWSTR pszIniFileName, LPWSTR pszUnknown, PARSETHEMEINIFILEPROC callback, LPVOID lpData)
DWORD WINAPI GetThemeAppProperties(void)
static void UXTHEME_SaveSystemMetrics(void)
static const WCHAR szSizeName[]
static const WCHAR keyNonClientMetrics[]
static const struct BackupSysParam backupSysParams[]
static LPWSTR UXTHEME_GetWindowProperty(HWND hwnd, ATOM aProp, LPWSTR pszBuffer, int dwLen)
HTHEME WINAPI OpenThemeDataEx(HWND hwnd, LPCWSTR pszClassList, DWORD flags)
static const WCHAR szThemeManager[]
static HTHEME WINAPI OpenThemeDataInternal(PTHEME_FILE ThemeFile, HWND hwnd, LPCWSTR pszClassList, DWORD flags)
BOOL CALLBACK UXTHEME_broadcast_theme_changed(HWND hWnd, LPARAM enable)
static const WCHAR szDllName[]
HTHEME WINAPI OpenThemeDataFromFile(HTHEMEFILE hThemeFile, HWND hwnd, LPCWSTR pszClassList, DWORD flags)
HRESULT WINAPI SetWindowTheme(HWND hwnd, LPCWSTR pszSubAppName, LPCWSTR pszSubIdList)
HRESULT WINAPI GetCurrentThemeName(LPWSTR pszThemeFileName, int dwMaxNameChars, LPWSTR pszColorBuff, int cchMaxColorChars, LPWSTR pszSizeBuff, int cchMaxSizeChars)
RTL_HANDLE_TABLE g_UxThemeHandleTable
DWORD WINAPI QueryThemeServices(void)
HTHEME WINAPI OpenThemeData(HWND hwnd, LPCWSTR classlist)
static HRESULT UXTHEME_SetActiveTheme(PTHEME_FILE tf)
HRESULT WINAPI ApplyTheme(HTHEMEFILE hThemeFile, char *unknown, HWND hWnd)
static void UXTHEME_RestoreSystemMetrics(void)
BOOL WINAPI IsThemePartDefined(HTHEME hTheme, int iPartId, int iStateId)
static const WCHAR szIniDocumentation[]
static HRESULT UXTHEME_SetWindowProperty(HWND hwnd, ATOM aProp, LPCWSTR pszValue)
HRESULT WINAPI OpenThemeFile(LPCWSTR pszThemeFileName, LPCWSTR pszColorName, LPCWSTR pszSizeName, HTHEMEFILE *hThemeFile, DWORD unknown)
static BOOL CALLBACK UXTHEME_send_theme_changed(HWND hWnd, LPARAM enable)
HRESULT WINAPI EnumThemeColors(LPWSTR pszThemeFileName, LPWSTR pszSizeName, DWORD dwColorNum, PTHEMENAMES pszColorNames)
HTHEME WINAPI GetWindowTheme(HWND hwnd)
HRESULT WINAPI EnumThemeSizes(LPWSTR pszThemeFileName, LPWSTR pszColorName, DWORD dwSizeNum, PTHEMENAMES pszSizeNames)
static const WCHAR keyGradientCaption[]
HRESULT WINAPI EnumThemes(LPCWSTR pszThemePath, ENUMTHEMEPROC callback, LPVOID lpData)
void UXTHEME_InitSystem(HINSTANCE hInst)
static const WCHAR szThemeActive[]
HRESULT WINAPI CloseThemeFile(HTHEMEFILE hThemeFile)
PTHEME_FILE g_ActiveThemeFile
static DWORD dwThemeAppProperties
ATOM atDialogThemeEnabled
static HRESULT UXTHEME_ApplyTheme(PTHEME_FILE tf)
static void UXTHEME_BackupSystemMetrics(void)
static const char *const SysColorsNames[]
BOOL WINAPI IsThemeActive(void)
HRESULT WINAPI HitTestThemeBackground(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, DWORD dwOptions, const RECT *pRect, HRGN hrgn, POINT ptTest, WORD *pwHitTestCode)
static DWORD query_reg_path(HKEY hKey, LPCWSTR lpszValue, LPVOID pvData)
PTHEME_CLASS ValidateHandle(HTHEME hTheme)
HRESULT WINAPI CloseThemeData(HTHEME hTheme)
static const WCHAR keyFlatMenus[]
static void save_sys_colors(HKEY baseKey)
BOOL WINAPI IsAppThemed(void)
static const WCHAR szColorName[]
HRESULT WINAPI GetThemeDefaults(LPCWSTR pszThemeFileName, LPWSTR pszColorName, DWORD dwColorNameLen, LPWSTR pszSizeName, DWORD dwSizeNameLen)
HRESULT WINAPI CheckThemeSignature(LPCWSTR pszThemeFileName)
GLuint GLuint GLsizei GLenum type
GLuint GLuint GLsizei count
GLdouble GLdouble GLdouble r
GLboolean GLboolean GLboolean b
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
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
_Check_return_ _CRTIMP int __cdecl sscanf(_In_z_ const char *_Src, _In_z_ _Scanf_format_string_ const char *_Format,...)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define sprintf(buf, format,...)
static IPrintDialogCallback callback
static HTHEME(WINAPI *pOpenThemeDataEx)(HWND
PTHEME_PARTSTATE MSSTYLES_FindPartState(PTHEME_CLASS tc, int iPartId, int iStateId, PTHEME_CLASS *tcNext)
PUXINI_FILE MSSTYLES_GetThemeIni(PTHEME_FILE tf)
HRESULT MSSTYLES_ReferenceTheme(PTHEME_FILE tf)
PTHEME_CLASS MSSTYLES_OpenThemeClass(PTHEME_FILE tf, LPCWSTR pszAppName, LPCWSTR pszClassList)
void MSSTYLES_CloseThemeFile(PTHEME_FILE tf)
HRESULT MSSTYLES_OpenThemeFile(LPCWSTR lpThemeFile, LPCWSTR pszColorName, LPCWSTR pszSizeName, PTHEME_FILE *tf)
HRESULT MSSTYLES_CloseThemeClass(PTHEME_CLASS tc)
void MSSTYLES_ParseThemeIni(PTHEME_FILE tf)
NTSYSAPI VOID NTAPI RtlInitializeHandleTable(_In_ ULONG TableSize, _In_ ULONG HandleSize, _In_ PRTL_HANDLE_TABLE HandleTable)
NTSYSAPI BOOLEAN NTAPI RtlFreeHandle(_In_ PRTL_HANDLE_TABLE HandleTable, _In_ PRTL_HANDLE_TABLE_ENTRY Handle)
NTSYSAPI PRTL_HANDLE_TABLE_ENTRY NTAPI RtlAllocateHandle(_In_ PRTL_HANDLE_TABLE HandleTable, _Inout_ PULONG Index)
NTSYSAPI BOOLEAN NTAPI RtlIsValidHandle(_In_ PRTL_HANDLE_TABLE HandleTable, _In_ PRTL_HANDLE_TABLE_ENTRY Handle)
#define FILE_ATTRIBUTE_DIRECTORY
static const WCHAR szName[]
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
WCHAR szThemeFile[MAX_PATH]
RTL_HANDLE_TABLE_ENTRY Handle
WCHAR szDisplayName[MAX_PATH+1]
WCHAR szTooltip[MAX_PATH+1]
BOOL MSSTYLES_LookupProperty(LPCWSTR pszPropertyName, int *dwPrimitive, int *dwId)
BOOL UXINI_FindSection(PUXINI_FILE uf, LPCWSTR lpName)
BOOL UXINI_FindValue(PUXINI_FILE uf, LPCWSTR lpName, LPCWSTR *lpValue, DWORD *dwValueLen)
void UXINI_CloseINI(PUXINI_FILE uf)
struct _UXTHEME_HANDLE * PUXTHEME_HANDLE
BOOL(CALLBACK * ENUMTHEMEPROC)(LPVOID lpReserved, LPCWSTR pszThemeFileName, LPCWSTR pszThemeName, LPCWSTR pszToolTip, LPVOID lpReserved2, LPVOID lpData)
BOOL(CALLBACK * PARSETHEMEINIFILEPROC)(DWORD dwType, LPWSTR pszParam1, LPWSTR pszParam2, LPWSTR pszParam3, DWORD dwParam, LPVOID lpData)
#define E_PROP_ID_UNSUPPORTED
DWORD WINAPI GetLastError(void)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
_In_ ULONG _In_opt_ PVOID pvData
#define HRESULT_FROM_WIN32(x)
#define HKEY_CURRENT_USER
DWORD WINAPI GetSysColor(_In_ int)
BOOL WINAPI IsWindow(_In_opt_ HWND)
HANDLE WINAPI RemovePropW(_In_ HWND, _In_ LPCWSTR)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
BOOL WINAPI SetSysColors(_In_ int cElements, _In_reads_(cElements) CONST INT *lpaElements, _In_reads_(cElements) CONST COLORREF *lpaRgbValues)
#define SPI_GETICONTITLELOGFONT
BOOL WINAPI EnumChildWindows(_In_opt_ HWND, _In_ WNDENUMPROC, _In_ LPARAM)
#define SPIF_UPDATEINIFILE
BOOL WINAPI EnumWindows(_In_ WNDENUMPROC lpEnumFunc, _In_ LPARAM lParam)
#define SPI_SETICONTITLELOGFONT
BOOL WINAPI SetPropW(_In_ HWND, _In_ LPCWSTR, _In_opt_ HANDLE)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
_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
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList