67 #define CX_TYPECOLUMN_WIDTH 80 82 if (hpd->ClassImageListData.ImageList !=
NULL)
85 hpd->ClassImageListData.ImageList,
95 lvc.pszText = szColName;
100 sizeof(szColName) /
sizeof(szColName[0])))
111 sizeof(szColName) /
sizeof(szColName[0])))
129 if (HwDevInfo !=
NULL)
153 HWND hBtnTroubleShoot, hBtnProperties;
161 if (HwDevInfo !=
NULL)
171 sizeof(szBuffer) /
sizeof(szBuffer[0])) &&
188 sizeof(szBuffer) /
sizeof(szBuffer[0])) &&
203 sizeof(szBuffer) /
sizeof(szBuffer[0])) &&
241 ClassDevInfo = hpd->ClassDevInfo;
242 LastClassDevInfo = ClassDevInfo + hpd->NumberOfGuids;
245 while (ClassDevInfo != LastClassDevInfo)
277 ClassDevInfo = hpd->ClassDevInfo;
278 LastClassDevInfo = ClassDevInfo + hpd->NumberOfGuids;
280 while (ClassDevInfo != LastClassDevInfo)
291 DWORD MemberIndex = 0;
311 if (HwNewDevInfo !=
NULL)
317 ERR(
"Unable to allocate memory for %d SP_DEVINFO_DATA structures!\n",
329 ERR(
"Unable to allocate memory for a SP_DEVINFO_DATA structures!\n");
367 if (DevIdLen ==
wcslen(lpDeviceId) + 1)
371 DevIdLen *
sizeof(
WCHAR));
372 if (lpQueriedDeviceId !=
NULL)
381 lpQueriedDeviceId) == 0);
403 BOOL SelectedInClass;
408 ClassDevInfo = hpd->ClassDevInfo;
409 LastClassDevInfo = ClassDevInfo + hpd->NumberOfGuids;
411 while (ClassDevInfo != LastClassDevInfo)
416 LastHwDevInfo = HwDevInfo + ClassDevInfo->
ItemCount;
418 SelectedInClass = (SelectedClassGuid !=
NULL &&
420 ClassDevInfo->
Guid));
421 while (HwDevInfo != LastHwDevInfo)
431 sizeof(szBuffer) /
sizeof(szBuffer[0])))
434 li.iItem = ItemCount;
435 if ((ItemCount == 0 && lpSelectDeviceId ==
NULL) ||
444 li.pszText = szBuffer;
457 sizeof(szBuffer) /
sizeof(szBuffer[0])))
485 GUID SelectedClassGuid = {0};
491 if (HwDevInfo !=
NULL)
504 DevIdLen *
sizeof(
WCHAR));
505 if (lpDeviceId !=
NULL &&
529 (lpDeviceId !=
NULL ?
533 if (lpDeviceId !=
NULL)
552 L"DevMgrSubClassInfo");
605 HWND hControl, hButton;
609 POINT ptMargin = {0};
610 POINT ptMarginGroup = {0};
647 y =
pt.y + hpd->DevListViewHeight + ptMargin.
y;
654 hpd->DevListViewHeight,
688 ptMarginGroup.
y = ptMargin.
y * 2;
690 y += ptMarginGroup.
y;
739 cy -
y - (3 * ptMargin.
y) -
747 y =
cy - (2 * ptMargin.
y) - (rcButton.
bottom - rcButton.
top);
766 x -= (ptMargin.
x / 2) + (rcButton.
right - rcButton.
left);
871 (szWndText !=
NULL && szWndText[0] !=
L'\0'));
900 if (hpd->hWndDevList !=
NULL)
905 hpd->DevListViewHeight = rcClient.
bottom;
909 hpd->DevListViewHeight = (hpd->DevListViewHeight * 3) / 2;
936 if (hpd->ParentOldWndProc !=
NULL &&
938 L"DevMgrSubClassInfo",
1034 ClassDevInfo[uNumberOfGuids]));
1073 if (hpd->hComCtl32 !=
NULL)
LPARAM ListViewGetSelectedItemData(IN HWND hwnd)
BOOL WINAPI SetupDiEnumDeviceInfo(HDEVINFO devinfo, DWORD index, PSP_DEVINFO_DATA info)
struct _HWCLASSDEVINFO * ClassDevInfo
HWND WINAPI GetAncestor(_In_ HWND, _In_ UINT)
HDWP WINAPI BeginDeferWindowPos(_In_ int)
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
#define ListView_SetItem(hwnd, pitem)
static INT_PTR CALLBACK HardwareDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
static VOID HardwareDlgResize(IN PHARDWARE_PAGE_DATA hpd, IN INT cx, IN INT cy)
static VOID BuildDevicesList(IN PHARDWARE_PAGE_DATA hpd)
struct _HWDEVINFO * PHWDEVINFO
struct _HWCLASSDEVINFO * PHWCLASSDEVINFO
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
#define IDC_PROPERTIESGROUP
#define LVS_EX_FULLROWSELECT
struct _HARDWARE_PAGE_DATA * PHARDWARE_PAGE_DATA
#define INVALID_HANDLE_VALUE
DWORD WINAPI GetLastError(VOID)
BOOL GetDeviceDescriptionString(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, OUT LPWSTR szBuffer, IN DWORD BufferSize)
BOOL GetDeviceTypeString(IN PSP_DEVINFO_DATA DeviceInfoData, OUT LPWSTR szBuffer, IN DWORD BufferSize)
GLint GLint GLint GLint GLint x
#define ListView_InsertItem(hwnd, pitem)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI SetupDiGetClassImageList(OUT PSP_CLASSIMAGELIST_DATA ClassImageListData)
#define ListView_InsertColumn(hwnd, iCol, pcol)
static VOID FreeDevicesList(IN PHARDWARE_PAGE_DATA hpd)
#define CX_TYPECOLUMN_WIDTH
BOOL WINAPI EndDeferWindowPos(_In_ HDWP)
_Out_opt_ int _Out_opt_ int * cy
BOOL GetDeviceLocationString(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, IN DEVINST dnParentDevInst OPTIONAL, OUT LPWSTR szBuffer, IN DWORD BufferSize)
#define ListView_SetImageList(hwnd, himl, iImageList)
struct _HWDEVINFO HWDEVINFO
BOOL WINAPI SetupDiDestroyClassImageList(IN PSP_CLASSIMAGELIST_DATA ClassImageListData)
HINSTANCE LoadAndInitComctl32(VOID)
DWORD LoadAndFormatString(IN HINSTANCE hInstance, IN UINT uID, OUT LPTSTR *lpTarget,...)
struct _HWCLASSDEVINFO HWCLASSDEVINFO
struct _SP_DEVINFO_DATA SP_DEVINFO_DATA
static HINSTANCE hDllInstance
HDWP WINAPI DeferWindowPos(_In_ HDWP, _In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
HWPAGE_DISPLAYMODE DisplayMode
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
_In_opt_ PSP_DEVINFO_DATA DeviceInfoData
int WINAPI GetSystemMetrics(_In_ int)
HWND WINAPI DeviceCreateHardwarePage(IN HWND hWndParent, IN LPGUID lpGuid)
BOOL WINAPI SetupDiGetClassImageIndex(IN PSP_CLASSIMAGELIST_DATA ClassImageListData, IN CONST GUID *ClassGuid, OUT PINT ImageIndex)
#define ListView_SetExtendedListViewStyle(hwndLV, dw)
BOOL GetDeviceManufacturerString(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, OUT LPWSTR szBuffer, IN DWORD BufferSize)
static VOID InitializeDevicesList(IN PHARDWARE_PAGE_DATA hpd)
static LRESULT CALLBACK ParentSubWndProc(IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
static VIDEODISPLAYMODE DisplayMode
HWCLASSDEVINFO ClassDevInfo[1]
BOOL IsDeviceHidden(IN DEVINST DevInst, IN HMACHINE hMachine, OUT BOOL *IsHidden)
#define SetupDiGetDeviceInstanceId
#define SetupDiGetClassDevs
static const WCHAR Cleanup[]
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
static VOID UpdateDevicesListViewControl(IN PHARDWARE_PAGE_DATA hpd)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
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
static VOID UpdateControlStates(IN PHARDWARE_PAGE_DATA hpd)
struct tagNMLISTVIEW * LPNMLISTVIEW
HLOCAL NTAPI LocalFree(HLOCAL hMem)
SP_CLASSIMAGELIST_DATA ClassImageListData
struct _HARDWARE_PAGE_DATA HARDWARE_PAGE_DATA
static BOOL DeviceIdMatch(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, IN LPCWSTR lpDeviceId)
#define FIELD_OFFSET(t, f)
static BOOL DisplaySelectedDeviceProperties(IN PHARDWARE_PAGE_DATA hpd)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
GLint GLint GLint GLint GLint GLint y
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
INT_PTR DisplayDeviceAdvancedProperties(IN HWND hWndParent, IN LPCWSTR lpDeviceID OPTIONAL, IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, IN HINSTANCE hComCtl32, IN LPCWSTR lpMachineName, IN DWORD dwFlags)
static VOID FillDevicesListViewControl(IN PHARDWARE_PAGE_DATA hpd, IN LPCWSTR lpSelectDeviceId OPTIONAL, IN GUID *SelectedClassGuid OPTIONAL)
#define GetWindowTextLength
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
BOOL GetDeviceStatusString(IN DEVINST DevInst, IN HMACHINE hMachine, OUT LPWSTR szBuffer, IN DWORD BufferSize)
struct _SP_CLASSIMAGELIST_DATA SP_CLASSIMAGELIST_DATA
static VOID EnableTroubleShoot(PHARDWARE_PAGE_DATA hpd, BOOL Enable)
#define HeapFree(x, y, z)
#define ListView_DeleteAllItems(hwnd)
HWND WINAPI DeviceCreateHardwarePageEx(IN HWND hWndParent, IN LPGUID lpGuids, IN UINT uNumberOfGuids, IN HWPAGE_DISPLAYMODE DisplayMode)
SP_DEVINFO_DATA DevInfoData
#define ERROR_INSUFFICIENT_BUFFER
PULONG MinorVersion OPTIONAL
#define CreateDialogParam