31static const WCHAR ClassInstall32[] = {
'C',
'l',
'a',
's',
's',
'I',
'n',
's',
't',
'a',
'l',
'l',
'3',
'2',0};
33static const WCHAR InterfaceInstall32[] = {
'I',
'n',
't',
'e',
'r',
'f',
'a',
'c',
'e',
'I',
'n',
's',
't',
'a',
'l',
'l',
'3',
'2',0};
34static const WCHAR SetupapiDll[] = {
's',
'e',
't',
'u',
'p',
'a',
'p',
'i',
'.',
'd',
'l',
'l',0};
70#define ADD_PARAM_HANDLER(Function, UpdateHandler, ParamsType, ParamsField) \
71 { Function, UpdateHandler, sizeof(ParamsType), FIELD_OFFSET(struct ClassInstallParams, ParamsField) },
77#undef ADD_PARAM_HANDLER
79#define UNKNOWN_ICON_INDEX 18
91 TRACE(
"%p\n", ClassImageListData);
93 if (!ClassImageListData)
104 if (ClassImageListData->ImageList)
107 ClassImageListData->ImageList =
NULL;
111 ClassImageListData->Reserved = 0;
132 DWORD ClassGuidBufferSize;
159 TRACE(
"CM_Get_Device_ID_List_ExW() failed with status 0x%x\n", cr);
170 TRACE(
"Checking %S\n", InstancePath);
177 ERR(
"CM_Locate_DevNode_ExW('%S') failed with status 0x%x\n", InstancePath, cr);
182 ClassGuidBufferSize =
sizeof(ClassGuidBuffer);
187 &ClassGuidBufferSize,
196 ERR(
"Invalid ClassGUID '%S' for device %S\n", ClassGuidBuffer, InstancePath);
202 TRACE(
"Using default class GUID_NULL for device %S\n", InstancePath);
208 TRACE(
"Skipping %S due to wrong class GUID\n", InstancePath);
215 ERR(
"Failed to create info for %S\n", InstancePath);
244 }
else if (dwRegType !=
REG_SZ)
287 if (!ClassImageListData || !ClassGuid || !ImageIndex)
299 for (
i = 0;
i <
list->NumberOfGuids;
i++)
305 if (
i ==
list->NumberOfGuids ||
list->IconIndexes[
i] < 0)
309 *ImageIndex =
list->IconIndexes[
i];
343 if (MachineNameW ==
NULL)
432 iconIndex = -iconIndex;
436 *OutIndex = iconIndex;
466 if (!ClassImageListData)
477 DWORD ilMask, bkColor;
551 if (!ClassImageListData->ImageList)
562 for (
i = 0;
i <
list->NumberOfGuids;
i++)
582 list->IconIndexes[
i] = -1;
589 list->IconIndexes[
i] = -1;
594 for (
i = 0;
i <= 2;
i++)
611 if (ClassImageListData->Reserved)
633 FIXME(
"SetupDiGetClassInstallParamsA(%p %p %p %lu %p) Stub\n",
649 FIXME(
"SetupDiGetClassInstallParamsW(%p %p %p %lu %p) Stub\n",
689 *MiniIconIndex = iconIndex;
724 FIXME(
"Case not implemented: InfFileName NULL\n");
794 FIXME(
"Installing an interface is not implemented\n");
885 else if (PropChangeParams
895 if (*CurrentPropChangeParams)
897 MyFree(*CurrentPropChangeParams);
898 *CurrentPropChangeParams =
NULL;
900 if (PropChangeParams)
903 if (!*CurrentPropChangeParams)
929 else if (AddPropertyPageData && AddPropertyPageData->
Flags != 0)
939 CurrentAddPropertyPageData = &
list->ClassInstallParams.AddPropertyPageData;
946 if (*CurrentAddPropertyPageData)
948 MyFree(*CurrentAddPropertyPageData);
949 *CurrentAddPropertyPageData =
NULL;
951 if (AddPropertyPageData)
954 if (!*CurrentAddPropertyPageData)
1053 IN DWORD PropertySheetHeaderPageListSize,
1061 PropertySheetHeader, PropertySheetHeaderPageListSize,
1064 if(PropertySheetHeader)
1066 psh.
dwFlags = PropertySheetHeader->dwFlags;
1067 psh.
phpage = PropertySheetHeader->phpage;
1068 psh.
nPages = PropertySheetHeader->nPages;
1076 PropertySheetHeader->nPages = psh.
nPages;
1171 ERR(
"SetupDiGetClassInstallParams failed (Error %lu)\n", dwError);
1178 if (pClassInstallParams ==
NULL)
1180 ERR(
"Failed to allocate the parameters buffer!\n");
1187 pClassInstallParams,
1191 ERR(
"SetupDiGetClassInstallParams failed (Error %lu)\n",
GetLastError());
1199 &PageData->ClassInstallHeader,
1202 ERR(
"SetupDiSetClassInstallParams failed (Error %lu)\n", dwError);
1213 ERR(
"SetupDiCallClassInstaller failed\n");
1220 &PageData->ClassInstallHeader,
1224 ERR(
"SetupDiGetClassInstallParams failed (Error %lu)\n",
GetLastError());
1231 if (pClassInstallParams !=
NULL)
1235 pClassInstallParams,
1261 PropertySheetHeader, PropertySheetHeaderPageListSize,
1270 else if (!PropertySheetHeader)
1280 && PropertySheetType != DIGCDP_FLAG_REMOTE_ADVANCED
1281 && PropertySheetType != DIGCDP_FLAG_REMOTE_BASIC)
1292 DWORD InitialNumberOfPages,
i;
1319 PropPageProvider =
NULL;
1347 PropPageProvider =
NULL;
1355 InitialNumberOfPages = PropertySheetHeader->nPages;
1379 InstallerPropPageData.hwndWizardDlg = PropertySheetHeader->hwndParent;
1384 &InstallerPropPageData))
1386 for (
i = 0;
i < InstallerPropPageData.NumDynamicPages;
i++)
1391 InstallerPropPageData.DynamicPages[
i];
1396 PropPageData.
NumberOfPages += InstallerPropPageData.NumDynamicPages;
1402 if (InitialNumberOfPages + PropPageData.
NumberOfPages <= PropertySheetHeaderPageListSize)
1415 if (PropPageProvider !=
NULL)
#define RegCloseKey(hKey)
_In_ CDROM_SCAN_FOR_SPECIAL_INFO _In_ PCDROM_SCAN_FOR_SPECIAL_HANDLER Function
_Null_terminated_ WCHAR * DEVINSTID_W
#define CM_Locate_DevNode_Ex
#define CM_GETIDLIST_FILTER_ENUMERATOR
#define CM_GETIDLIST_FILTER_NONE
#define CM_LOCATE_DEVNODE_NORMAL
CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExW(_In_ DEVINST dnDevInst, _In_ ULONG ulProperty, _Out_opt_ PULONG pulRegDataType, _Out_writes_bytes_opt_(*pulLength) PVOID Buffer, _Inout_ PULONG pulLength, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
CONFIGRET WINAPI CM_Get_Device_ID_List_ExW(_In_ PCWSTR pszFilter, _Out_writes_(BufferLen) PWCHAR Buffer, _In_ ULONG BufferLen, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
VOID WINAPI InitCommonControls(void)
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INSUFFICIENT_BUFFER
#define MAX_GUID_STRING_LEN
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST himl, COLORREF clrBk)
BOOL WINAPI ImageList_SetOverlayImage(HIMAGELIST himl, INT iImage, INT iOverlay)
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define INVALID_HANDLE_VALUE
#define HeapFree(x, y, z)
#define ERROR_INVALID_HANDLE
static DWORD DWORD * dwLength
static void cleanup(void)
#define ADD_PARAM_HANDLER(Function, UpdateHandler, ParamsType, ParamsField)
static DWORD SETUP_GetValueString(IN HKEY hKey, IN LPWSTR lpValueName, OUT LPWSTR *lpString)
BOOL WINAPI SetupDiGetClassDevPropertySheetsW(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN OUT LPPROPSHEETHEADERW PropertySheetHeader, IN DWORD PropertySheetHeaderPageListSize, OUT PDWORD RequiredSize OPTIONAL, IN DWORD PropertySheetType)
static BOOL WINAPI SETUP_GetClassDevPropertySheetsCallback(IN HPROPSHEETPAGE hPropSheetPage, IN OUT LPARAM lParam)
LONG SETUP_CreateDevicesList(IN OUT struct DeviceInfoSet *list, IN PCWSTR MachineName OPTIONAL, IN CONST GUID *Class OPTIONAL, IN PCWSTR Enumerator OPTIONAL)
static const WCHAR ClassGUID[]
BOOL WINAPI SetupDiGetClassImageListExW(OUT PSP_CLASSIMAGELIST_DATA ClassImageListData, IN PCWSTR MachineName OPTIONAL, IN PVOID Reserved)
BOOL(* UPDATE_CLASS_PARAM_HANDLER)(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN PSP_CLASSINSTALL_HEADER ClassInstallParams OPTIONAL, IN DWORD ClassInstallParamsSize)
BOOL WINAPI SetupDiLoadClassIcon(IN CONST GUID *ClassGuid, OUT HICON *LargeIcon OPTIONAL, OUT PINT MiniIconIndex OPTIONAL)
BOOL WINAPI SetupDiGetClassInstallParamsA(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, OUT PSP_CLASSINSTALL_HEADER ClassInstallParams OPTIONAL, IN DWORD ClassInstallParamsSize, OUT PDWORD RequiredSize OPTIONAL)
static const WCHAR DotServices[]
static const WCHAR SetupapiDll[]
static const INSTALL_PARAMS_DATA InstallParamsData[]
struct _INSTALL_PARAMS_DATA INSTALL_PARAMS_DATA
static BOOL WINAPI SETUP_GetClassIconInfo(IN CONST GUID *ClassGuid, OUT PINT OutIndex, OUT LPWSTR *OutDllName)
BOOL WINAPI SetupDiGetClassDevPropertySheetsA(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN LPPROPSHEETHEADERA PropertySheetHeader, IN DWORD PropertySheetHeaderPageListSize, OUT PDWORD RequiredSize OPTIONAL, IN DWORD PropertySheetType)
static BOOL SETUP_CallInstaller(IN DI_FUNCTION InstallFunction, IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN PSP_ADDPROPERTYPAGE_DATA PageData)
BOOL WINAPI SetupDiDestroyClassImageList(IN PSP_CLASSIMAGELIST_DATA ClassImageListData)
BOOL WINAPI SetupDiGetClassImageListExA(OUT PSP_CLASSIMAGELIST_DATA ClassImageListData, IN PCSTR MachineName OPTIONAL, IN PVOID Reserved)
#define UNKNOWN_ICON_INDEX
BOOL WINAPI SetupDiGetClassImageIndex(IN PSP_CLASSIMAGELIST_DATA ClassImageListData, IN CONST GUID *ClassGuid, OUT PINT ImageIndex)
static const WCHAR BackSlash[]
static BOOL SETUP_PropertyChangeHandler(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN PSP_CLASSINSTALL_HEADER ClassInstallParams OPTIONAL, IN DWORD ClassInstallParamsSize)
BOOL WINAPI SetupDiInstallClassExW(IN HWND hwndParent OPTIONAL, IN PCWSTR InfFileName OPTIONAL, IN DWORD Flags, IN HSPFILEQ FileQueue OPTIONAL, IN CONST GUID *InterfaceClassGuid OPTIONAL, IN PVOID Reserved1, IN PVOID Reserved2)
static const WCHAR InterfaceInstall32[]
BOOL(WINAPI * PROPERTY_PAGE_PROVIDER)(IN PSP_PROPSHEETPAGE_REQUEST PropPageRequest, IN LPFNADDPROPSHEETPAGE fAddFunc, IN LPARAM lParam)
BOOL WINAPI SetupDiSetClassInstallParamsW(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN PSP_CLASSINSTALL_HEADER ClassInstallParams OPTIONAL, IN DWORD ClassInstallParamsSize)
BOOL WINAPI SetupDiGetClassInstallParamsW(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, OUT PSP_CLASSINSTALL_HEADER ClassInstallParams OPTIONAL, IN DWORD ClassInstallParamsSize, OUT PDWORD RequiredSize OPTIONAL)
HKEY SETUP_CreateClassKey(HINF hInf)
static BOOL SETUP_PropertyAddPropertyAdvancedHandler(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN PSP_CLASSINSTALL_HEADER ClassInstallParams OPTIONAL, IN DWORD ClassInstallParamsSize)
BOOL WINAPI SetupDiGetClassImageList(OUT PSP_CLASSIMAGELIST_DATA ClassImageListData)
static BOOL SETUP_GetIconIndex(IN HKEY hClassKey, OUT PINT ImageIndex)
static const WCHAR ClassInstall32[]
BOOL WINAPI SetupDiBuildClassInfoListExW(DWORD Flags, LPGUID ClassGuidList, DWORD ClassGuidListSize, PDWORD RequiredSize, LPCWSTR MachineName, PVOID Reserved)
BOOL WINAPI SetupDiSetDeviceInstallParamsW(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN PSP_DEVINSTALL_PARAMS_W DeviceInstallParams)
DWORD GetErrorCodeFromCrCode(const IN CONFIGRET cr)
BOOL WINAPI SetupDiGetDeviceInstallParamsW(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, OUT PSP_DEVINSTALL_PARAMS_W DeviceInstallParams)
BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION InstallFunction, HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData)
BOOL WINAPI SetupDiGetActualSectionToInstallW(HINF InfHandle, PCWSTR InfSectionName, PWSTR InfSectionWithExt, DWORD InfSectionWithExtSize, PDWORD RequiredSize, PWSTR *Extension)
HKEY SETUPDI_OpenDrvKey(HKEY RootKey, struct DeviceInfo *devInfo, REGSAM samDesired)
HKEY WINAPI SetupDiOpenClassRegKey(const GUID *ClassGuid, REGSAM samDesired)
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
HKEY WINAPI SetupDiOpenClassRegKeyExW(const GUID *ClassGuid, REGSAM samDesired, DWORD Flags, PCWSTR MachineName, PVOID Reserved)
HDEVINFO WINAPI SetupDiCreateDeviceInfoList(const GUID *ClassGuid, HWND hwndParent)
BOOL CreateDeviceInfo(IN struct DeviceInfoSet *list, IN LPCWSTR InstancePath, IN LPCGUID pClassGuid, OUT struct DeviceInfo **pDeviceInfo)
BOOL WINAPI SetupInstallFromInfSectionW(HWND owner, HINF hinf, PCWSTR section, UINT flags, HKEY key_root, PCWSTR src_root, UINT copy_flags, PSP_FILE_CALLBACK_W callback, PVOID context, HDEVINFO devinfo, PSP_DEVINFO_DATA devinfo_data)
BOOL WINAPI SetupInstallServicesFromInfSectionExW(HINF hinf, PCWSTR sectionname, DWORD flags, HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, PVOID reserved1, PVOID reserved2)
LPWSTR WINAPI pSetupMultiByteToUnicode(LPCSTR lpMultiByteStr, UINT uCodePage)
LPVOID WINAPI MyMalloc(DWORD dwSize)
VOID WINAPI MyFree(LPVOID lpMem)
DWORD GetFunctionPointer(IN PWSTR InstallerName, OUT HMODULE *ModulePointer, OUT PVOID *FunctionPointer)
HINF WINAPI SetupOpenInfFileW(PCWSTR name, PCWSTR class, DWORD style, UINT *error)
BOOL WINAPI SetupOpenAppendInfFileW(PCWSTR name, HINF parent_hinf, UINT *error)
UINT WINAPI SetupDefaultQueueCallbackW(PVOID context, UINT notification, UINT_PTR param1, UINT_PTR param2)
void WINAPI SetupTermDefaultQueueCallback(PVOID context)
PVOID WINAPI SetupInitDefaultQueueCallback(HWND owner)
#define InsertTailList(ListHead, Entry)
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
UINT WINAPI ExtractIconExW(LPCWSTR lpszFile, INT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
struct _PSP * HPROPSHEETPAGE
#define KEY_ENUMERATE_SUB_KEYS
#define PSH_PROPSHEETPAGE
BOOL(CALLBACK * LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE, LPARAM)
#define ImageList_AddIcon(himl, hicon)
#define IsEqualIID(riid1, riid2)
#define REGSTR_VAL_INSTALLER_32
#define REGSTR_VAL_INSICON
#define REGSTR_VAL_ENUMPROPPAGES_32
RPC_STATUS WINAPI UuidFromStringW(RPC_WSTR s, UUID *uuid)
struct _SP_CLASSINSTALL_HEADER SP_CLASSINSTALL_HEADER
#define SetupDiGetClassInstallParams
_In_ DWORD _Out_ PDWORD _In_opt_ PCSTR MachineName
SP_NEWDEVICEWIZARD_DATA * PSP_ADDPROPERTYPAGE_DATA
_In_opt_ PSP_DEVINFO_DATA _In_ DWORD ClassInstallParamsSize
#define DI_CLASSINSTALLPARAMS
#define MAX_INSTALLWIZARD_DYNAPAGES
SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS
#define DIGCDP_FLAG_BASIC
#define SetupDiSetClassInstallParams
struct _SP_PROPCHANGE_PARAMS * PSP_PROPCHANGE_PARAMS
struct _SP_PROPSHEETPAGE_REQUEST SP_PROPSHEETPAGE_REQUEST
#define ERROR_INVALID_PROPPAGE_PROVIDER
struct _SP_DEVINSTALL_PARAMS_W SP_DEVINSTALL_PARAMS_W
#define DICS_FLAG_CONFIGSPECIFIC
_In_opt_ PSP_DEVINFO_DATA DeviceInfoData
#define SP_COPY_FORCE_IN_USE
#define DIF_PROPERTYCHANGE
#define DIF_ADDPROPERTYPAGE_ADVANCED
#define DIGCDP_FLAG_ADVANCED
#define SPPSR_ENUM_ADV_DEVICE_PROPERTIES
#define SETUP_DEVICE_INFO_SET_MAGIC
#define SETUP_CLASS_IMAGE_LIST_MAGIC
PULONG MinorVersion OPTIONAL
DWORD PropertySheetHeaderPageListSize
LPPROPSHEETHEADERW PropertySheetHeader
SP_DEVINSTALL_PARAMS_W InstallParams
PVOID pClassPropPageProvider
HMODULE hmodClassPropPageProvider
struct ClassInstallParams ClassInstallParams
PVOID pDevicePropPageProvider
HMODULE hmodDevicePropPageProvider
UPDATE_CLASS_PARAM_HANDLER UpdateHandler
VOID WINAPI SetupCloseInfFile(IN HINF InfHandle)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID _Out_ PULONG RequiredSize
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
DWORD WINAPI GetLastError(void)
_Reserved_ PVOID Reserved
#define ERROR_INVALID_USER_BUFFER
#define ERROR_INVALID_INDEX
#define ERROR_GEN_FAILURE
#define ERROR_INVALID_FLAGS
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
DWORD WINAPI GetSysColor(_In_ int)
HDC WINAPI GetDC(_In_opt_ HWND)
BOOL WINAPI DestroyIcon(_In_ HICON)
_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
_Must_inspect_result_ _In_ ULONG Flags
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
_In_ CONST GUID * InterfaceClassGuid