ReactOS  0.4.15-dev-5455-g015cd25
advprop.cpp File Reference
#include "precomp.h"
#include "properties.h"
#include "resource.h"
#include <winver.h>
Include dependency graph for advprop.cpp:

Go to the source code of this file.

Classes

struct  CM_Power_Data_s
 

Macros

#define PDCAP_D0_SUPPORTED   0x00000001
 
#define PDCAP_D1_SUPPORTED   0x00000002
 
#define PDCAP_D2_SUPPORTED   0x00000004
 
#define PDCAP_D3_SUPPORTED   0x00000008
 
#define PDCAP_WAKE_FROM_D0_SUPPORTED   0x00000010
 
#define PDCAP_WAKE_FROM_D1_SUPPORTED   0x00000020
 
#define PDCAP_WAKE_FROM_D2_SUPPORTED   0x00000040
 
#define PDCAP_WAKE_FROM_D3_SUPPORTED   0x00000080
 
#define PDCAP_WARM_EJECT_SUPPORTED   0x00000100
 

Typedefs

typedef struct CM_Power_Data_s CM_POWER_DATA
 
typedef struct CM_Power_Data_sPCM_POWER_DATA
 

Functions

static UINT WINAPI EnumDeviceDriverFilesCallback (IN PVOID Context, IN UINT Notification, IN UINT_PTR Param1, IN UINT_PTR Param2)
 
static VOID UpdateDriverDetailsDlg (IN HWND hwndDlg, IN HWND hDriversListView, IN PDEVADVPROP_INFO dap)
 
static VOID UpdateDriverVersionInfoDetails (IN HWND hwndDlg, IN LPCWSTR lpszDriverPath)
 
static INT_PTR CALLBACK DriverDetailsDlgProc (IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
 
static INT_PTR CALLBACK UninstallDriverDlgProc (IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
 
static VOID UninstallDriver (_In_ HWND hwndDlg, _In_ PDEVADVPROP_INFO dap)
 
static VOID UpdateDriver (IN HWND hwndDlg, IN PDEVADVPROP_INFO dap)
 
static VOID UpdateDriverDlg (IN HWND hwndDlg, IN PDEVADVPROP_INFO dap)
 
static INT_PTR CALLBACK AdvProcDriverDlgProc (IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
 
static VOID SetListViewText (HWND hwnd, INT iItem, LPCWSTR lpText)
 
static VOID UpdateDetailsDlg (IN HWND hwndDlg, IN PDEVADVPROP_INFO dap)
 
static VOID DisplayDevicePropertyText (IN PDEVADVPROP_INFO dap, IN HWND hwndListView, IN DWORD dwProperty)
 
static VOID DisplayDevNodeFlags (IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
 
static VOID DisplayDevNodeEnumerator (IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
 
static VOID DisplayCsFlags (IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
 
static VOID DisplayMatchingDeviceId (IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
 
static VOID DisplayClassCoinstallers (IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
 
static VOID DisplayDeviceCoinstallers (IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
 
static VOID DisplayClassProperties (IN PDEVADVPROP_INFO dap, IN HWND hwndListView, IN LPCWSTR lpProperty)
 
static VOID DisplayDeviceRelations (IN PDEVADVPROP_INFO dap, IN HWND hwndListView, IN ULONG ulFlags)
 
static VOID DisplayCurrentPowerState (IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
 
static VOID DisplayPowerCapabilities (IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
 
static VOID DisplayPowerStateMappings (IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
 
static VOID DisplayDeviceProperties (IN PDEVADVPROP_INFO dap, IN HWND hwndComboBox, IN HWND hwndListView)
 
static INT_PTR CALLBACK AdvProcDetailsDlgProc (IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
 
static VOID InitDevUsageActions (IN HWND hwndDlg, IN HWND hComboBox, IN PDEVADVPROP_INFO dap)
 
static UINT GetSelectedUsageAction (IN HWND hComboBox)
 
static BOOL ApplyGeneralSettings (IN HWND hwndDlg, IN PDEVADVPROP_INFO dap)
 
static VOID UpdateDevInfo (IN HWND hwndDlg, IN PDEVADVPROP_INFO dap, IN BOOL ReOpen)
 
static LRESULT CALLBACK DlgParentSubWndProc (IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
 
static INT_PTR CALLBACK AdvPropGeneralDlgProc (IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
 
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)
 

Macro Definition Documentation

◆ PDCAP_D0_SUPPORTED

#define PDCAP_D0_SUPPORTED   0x00000001

Definition at line 36 of file advprop.cpp.

◆ PDCAP_D1_SUPPORTED

#define PDCAP_D1_SUPPORTED   0x00000002

Definition at line 37 of file advprop.cpp.

◆ PDCAP_D2_SUPPORTED

#define PDCAP_D2_SUPPORTED   0x00000004

Definition at line 38 of file advprop.cpp.

◆ PDCAP_D3_SUPPORTED

#define PDCAP_D3_SUPPORTED   0x00000008

Definition at line 39 of file advprop.cpp.

◆ PDCAP_WAKE_FROM_D0_SUPPORTED

#define PDCAP_WAKE_FROM_D0_SUPPORTED   0x00000010

Definition at line 40 of file advprop.cpp.

◆ PDCAP_WAKE_FROM_D1_SUPPORTED

#define PDCAP_WAKE_FROM_D1_SUPPORTED   0x00000020

Definition at line 41 of file advprop.cpp.

◆ PDCAP_WAKE_FROM_D2_SUPPORTED

#define PDCAP_WAKE_FROM_D2_SUPPORTED   0x00000040

Definition at line 42 of file advprop.cpp.

◆ PDCAP_WAKE_FROM_D3_SUPPORTED

#define PDCAP_WAKE_FROM_D3_SUPPORTED   0x00000080

Definition at line 43 of file advprop.cpp.

◆ PDCAP_WARM_EJECT_SUPPORTED

#define PDCAP_WARM_EJECT_SUPPORTED   0x00000100

Definition at line 44 of file advprop.cpp.

Typedef Documentation

◆ CM_POWER_DATA

◆ PCM_POWER_DATA

Function Documentation

◆ AdvProcDetailsDlgProc()

static INT_PTR CALLBACK AdvProcDetailsDlgProc ( IN HWND  hwndDlg,
IN UINT  uMsg,
IN WPARAM  wParam,
IN LPARAM  lParam 
)
static

Definition at line 1886 of file advprop.cpp.

1890 {
1891  PDEVADVPROP_INFO dap;
1892  INT_PTR Ret = FALSE;
1893 
1894  dap = (PDEVADVPROP_INFO)GetWindowLongPtr(hwndDlg, DWLP_USER);
1895 
1896  if (dap != NULL || uMsg == WM_INITDIALOG)
1897  {
1898  switch (uMsg)
1899  {
1900  case WM_COMMAND:
1901  {
1902  switch (LOWORD(wParam))
1903  {
1904  case IDC_DETAILSPROPNAME:
1905  if (HIWORD(wParam) == CBN_SELCHANGE)
1906  {
1908  GetDlgItem(hwndDlg, IDC_DETAILSPROPNAME),
1909  GetDlgItem(hwndDlg, IDC_DETAILSPROPVALUE));
1910  }
1911  break;
1912  }
1913  break;
1914  }
1915 
1916  case WM_NOTIFY:
1917  {
1918  NMHDR *hdr = (NMHDR*)lParam;
1919  switch (hdr->code)
1920  {
1921  case PSN_APPLY:
1922  break;
1923  }
1924  break;
1925  }
1926 
1927  case WM_INITDIALOG:
1928  {
1930  if (dap != NULL)
1931  {
1932  SetWindowLongPtr(hwndDlg, DWLP_USER, (DWORD_PTR)dap);
1933 
1934  UpdateDetailsDlg(hwndDlg,
1935  dap);
1936  }
1937  Ret = TRUE;
1938  break;
1939  }
1940  }
1941  }
1942 
1943  return Ret;
1944 }
#define IDC_DETAILSPROPVALUE
Definition: resource.h:251
char hdr[14]
Definition: iptest.cpp:33
struct _DEVADVPROP_INFO * PDEVADVPROP_INFO
#define TRUE
Definition: types.h:120
#define PSN_APPLY
Definition: prsht.h:117
int32_t INT_PTR
Definition: typedefs.h:64
#define SetWindowLongPtr
Definition: treelist.c:70
WPARAM wParam
Definition: combotst.c:138
static VOID UpdateDetailsDlg(IN HWND hwndDlg, IN PDEVADVPROP_INFO dap)
Definition: advprop.cpp:770
static VOID DisplayDeviceProperties(IN PDEVADVPROP_INFO dap, IN HWND hwndComboBox, IN HWND hwndListView)
Definition: advprop.cpp:1728
#define FALSE
Definition: types.h:117
#define IDC_DETAILSPROPNAME
Definition: resource.h:250
#define LPPROPSHEETPAGE
Definition: prsht.h:390
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define DWLP_USER
Definition: winuser.h:866
#define WM_COMMAND
Definition: winuser.h:1730
uint32_t DWORD_PTR
Definition: typedefs.h:65
#define NULL
Definition: types.h:112
#define CBN_SELCHANGE
Definition: winuser.h:1969
#define HIWORD(l)
Definition: typedefs.h:247
#define GetWindowLongPtr
Definition: treelist.c:73
#define WM_INITDIALOG
Definition: winuser.h:1729
LPARAM lParam
Definition: combotst.c:139
#define LOWORD(l)
Definition: pedump.c:82
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by UpdateDevInfo().

◆ AdvProcDriverDlgProc()

static INT_PTR CALLBACK AdvProcDriverDlgProc ( IN HWND  hwndDlg,
IN UINT  uMsg,
IN WPARAM  wParam,
IN LPARAM  lParam 
)
static

Definition at line 678 of file advprop.cpp.

682 {
683  PDEVADVPROP_INFO dap;
684  INT_PTR Ret = FALSE;
685 
687 
688  if (dap != NULL || uMsg == WM_INITDIALOG)
689  {
690  switch (uMsg)
691  {
692  case WM_COMMAND:
693  {
694  switch (LOWORD(wParam))
695  {
696  case IDC_DRIVERDETAILS:
699  hwndDlg,
701  (ULONG_PTR)dap);
702  break;
703 
704  case IDC_UPDATEDRIVER:
705  UpdateDriver(hwndDlg, dap);
706  break;
707 
708  case IDC_ROLLBACKDRIVER:
709  // FIXME
710  break;
711 
712  case IDC_UNINSTALLDRIVER:
713  UninstallDriver(hwndDlg, dap);
714  break;
715  }
716  break;
717  }
718 
719  case WM_NOTIFY:
720  {
721  NMHDR *hdr = (NMHDR*)lParam;
722  switch (hdr->code)
723  {
724  case PSN_APPLY:
725  break;
726  }
727  break;
728  }
729 
730  case WM_INITDIALOG:
731  {
733  if (dap != NULL)
734  {
735  SetWindowLongPtr(hwndDlg, DWLP_USER, (DWORD_PTR)dap);
736 
737  UpdateDriverDlg(hwndDlg,
738  dap);
739  }
741  Ret = TRUE;
742  break;
743  }
744  }
745  }
746 
747  return Ret;
748 }
static VOID UpdateDriverDlg(IN HWND hwndDlg, IN PDEVADVPROP_INFO dap)
Definition: advprop.cpp:596
static VOID UninstallDriver(_In_ HWND hwndDlg, _In_ PDEVADVPROP_INFO dap)
Definition: advprop.cpp:496
#define MAKEINTRESOURCE
Definition: winuser.h:591
char hdr[14]
Definition: iptest.cpp:33
struct _DEVADVPROP_INFO * PDEVADVPROP_INFO
#define TRUE
Definition: types.h:120
#define PSN_APPLY
Definition: prsht.h:117
int32_t INT_PTR
Definition: typedefs.h:64
#define SetWindowLongPtr
Definition: treelist.c:70
WPARAM wParam
Definition: combotst.c:138
uint32_t ULONG_PTR
Definition: typedefs.h:65
static INT_PTR CALLBACK DriverDetailsDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: advprop.cpp:305
#define FALSE
Definition: types.h:117
#define LPPROPSHEETPAGE
Definition: prsht.h:390
#define IDC_UNINSTALLDRIVER
Definition: resource.h:255
#define IDC_UPDATEDRIVER
Definition: resource.h:252
static HINSTANCE hDllInstance
Definition: clb.c:30
#define IDD_DRIVERDETAILS
Definition: resource.h:218
#define IDC_DRIVERDETAILS
Definition: resource.h:245
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define DialogBoxParam
Definition: winuser.h:5754
#define DWLP_USER
Definition: winuser.h:866
#define WM_COMMAND
Definition: winuser.h:1730
uint32_t DWORD_PTR
Definition: typedefs.h:65
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define NULL
Definition: types.h:112
static VOID UpdateDriver(IN HWND hwndDlg, IN PDEVADVPROP_INFO dap)
Definition: advprop.cpp:532
#define IDC_ROLLBACKDRIVER
Definition: resource.h:254
#define GetWindowLongPtr
Definition: treelist.c:73
#define WM_INITDIALOG
Definition: winuser.h:1729
LPARAM lParam
Definition: combotst.c:139
#define LOWORD(l)
Definition: pedump.c:82
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by UpdateDevInfo().

◆ AdvPropGeneralDlgProc()

static INT_PTR CALLBACK AdvPropGeneralDlgProc ( IN HWND  hwndDlg,
IN UINT  uMsg,
IN WPARAM  wParam,
IN LPARAM  lParam 
)
static

Definition at line 2727 of file advprop.cpp.

2731 {
2732  PDEVADVPROP_INFO dap;
2733  INT_PTR Ret = FALSE;
2734 
2735  dap = (PDEVADVPROP_INFO)GetWindowLongPtr(hwndDlg, DWLP_USER);
2736 
2737  if (dap != NULL || uMsg == WM_INITDIALOG)
2738  {
2739  switch (uMsg)
2740  {
2741  case WM_COMMAND:
2742  {
2743  switch (LOWORD(wParam))
2744  {
2745  case IDC_DEVUSAGE:
2746  {
2747  if (HIWORD(wParam) == CBN_SELCHANGE)
2748  {
2749  PropSheet_Changed(GetParent(hwndDlg),
2750  hwndDlg);
2751  dap->DeviceUsageChanged = TRUE;
2752  }
2753  break;
2754  }
2755 
2756  case IDC_DEVPROBLEM:
2757  {
2758  if (dap->IsAdmin)
2759  {
2760  /* display the device problem wizard */
2761  ShowDeviceProblemWizard(hwndDlg,
2762  dap->DeviceInfoSet,
2763  &dap->DeviceInfoData,
2764  dap->hMachine);
2765  }
2766  break;
2767  }
2768  }
2769  break;
2770  }
2771 
2772  case WM_NOTIFY:
2773  {
2774  NMHDR *hdr = (NMHDR*)lParam;
2775  switch (hdr->code)
2776  {
2777  case PSN_APPLY:
2778  ApplyGeneralSettings(hwndDlg,
2779  dap);
2780  break;
2781  }
2782  break;
2783  }
2784 
2785  case WM_INITDIALOG:
2786  {
2788  if (dap != NULL)
2789  {
2790  HWND hWndParent;
2791 
2792  dap->hWndGeneralPage = hwndDlg;
2793 
2794  SetWindowLongPtr(hwndDlg, DWLP_USER, (DWORD_PTR)dap);
2795 
2796  /* subclass the parent window to always receive
2797  WM_DEVICECHANGE messages */
2798  hWndParent = GetParent(hwndDlg);
2799  if (hWndParent != NULL)
2800  {
2801  /* subclass the parent window. This is not safe
2802  if the parent window belongs to another thread! */
2804  GWLP_WNDPROC,
2806 
2807  if (dap->ParentOldWndProc != NULL &&
2809  L"DevMgrDevChangeSub",
2810  (HANDLE)dap))
2811  {
2812  dap->hWndParent = hWndParent;
2813  }
2814  }
2815 
2816  /* do not call UpdateDevInfo directly in here because it modifies
2817  the pages of the property sheet! */
2818  PostMessage(hwndDlg,
2819  PM_INITIALIZE,
2820  0,
2821  0);
2822  }
2823  Ret = TRUE;
2824  break;
2825  }
2826 
2827  case WM_DEVICECHANGE:
2828  {
2829  /* FIXME - don't call UpdateDevInfo for all events */
2830  UpdateDevInfo(hwndDlg,
2831  dap,
2832  TRUE);
2833  Ret = TRUE;
2834  break;
2835  }
2836 
2837  case PM_INITIALIZE:
2838  {
2839  UpdateDevInfo(hwndDlg,
2840  dap,
2841  FALSE);
2842  dap->PageInitialized = TRUE;
2843  break;
2844  }
2845 
2846  case WM_DESTROY:
2847  {
2848  /* restore the old window proc of the subclassed parent window */
2849  if (dap->hWndParent != NULL && dap->ParentOldWndProc != NULL)
2850  {
2851  if (SetWindowLongPtr(dap->hWndParent,
2852  GWLP_WNDPROC,
2854  {
2855  RemoveProp(dap->hWndParent,
2856  L"DevMgrDevChangeSub");
2857  }
2858  }
2859  break;
2860  }
2861  }
2862  }
2863 
2864  return Ret;
2865 }
char hdr[14]
Definition: iptest.cpp:33
struct _DEVADVPROP_INFO * PDEVADVPROP_INFO
#define TRUE
Definition: types.h:120
UINT DeviceUsageChanged
Definition: properties.h:44
#define PSN_APPLY
Definition: prsht.h:117
int32_t INT_PTR
Definition: typedefs.h:64
#define SetWindowLongPtr
Definition: treelist.c:70
SP_DEVINFO_DATA DeviceInfoData
Definition: properties.h:20
WPARAM wParam
Definition: combotst.c:138
#define SetProp
Definition: winuser.h:5841
HWND hWndGeneralPage
Definition: properties.h:14
#define L(x)
Definition: ntvdm.h:50
#define FALSE
Definition: types.h:117
#define LPPROPSHEETPAGE
Definition: prsht.h:390
static LRESULT CALLBACK DlgParentSubWndProc(IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: advprop.cpp:2684
static BOOL ApplyGeneralSettings(IN HWND hwndDlg, IN PDEVADVPROP_INFO dap)
Definition: advprop.cpp:2039
HMACHINE hMachine
Definition: properties.h:24
#define WM_DESTROY
Definition: winuser.h:1599
#define PostMessage
Definition: winuser.h:5822
static VOID UpdateDevInfo(IN HWND hwndDlg, IN PDEVADVPROP_INFO dap, IN BOOL ReOpen)
Definition: advprop.cpp:2106
#define PropSheet_Changed(d, w)
Definition: prsht.h:344
#define DWLP_USER
Definition: winuser.h:866
UINT PageInitialized
Definition: properties.h:48
#define WM_COMMAND
Definition: winuser.h:1730
#define IDC_DEVUSAGE
Definition: resource.h:230
uint32_t DWORD_PTR
Definition: typedefs.h:65
#define GWLP_WNDPROC
Definition: treelist.c:66
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2896
#define IDC_DEVPROBLEM
Definition: resource.h:240
HWND WINAPI GetParent(_In_ HWND)
BOOL ShowDeviceProblemWizard(IN HWND hWndParent OPTIONAL, IN HDEVINFO hDevInfo, IN PSP_DEVINFO_DATA DevInfoData, IN HMACHINE hMachine OPTIONAL)
Definition: devprblm.cpp:34
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define NULL
Definition: types.h:112
#define CBN_SELCHANGE
Definition: winuser.h:1969
WNDPROC ParentOldWndProc
Definition: properties.h:16
#define WM_DEVICECHANGE
Definition: winuser.h:1801
#define RemoveProp
Definition: winuser.h:5831
#define HIWORD(l)
Definition: typedefs.h:247
#define GetWindowLongPtr
Definition: treelist.c:73
#define WM_INITDIALOG
Definition: winuser.h:1729
LPARAM lParam
Definition: combotst.c:139
#define LOWORD(l)
Definition: pedump.c:82
#define WM_NOTIFY
Definition: richedit.h:61
HDEVINFO DeviceInfoSet
Definition: properties.h:19
#define PM_INITIALIZE
Definition: properties.h:70

Referenced by DisplayDeviceAdvancedProperties().

◆ ApplyGeneralSettings()

static BOOL ApplyGeneralSettings ( IN HWND  hwndDlg,
IN PDEVADVPROP_INFO  dap 
)
static

Definition at line 2039 of file advprop.cpp.

2041 {
2042  BOOL Ret = FALSE;
2043 
2044  if (dap->DeviceUsageChanged && dap->IsAdmin && dap->CanDisable)
2045  {
2046  UINT SelectedUsageAction;
2047  BOOL NeedReboot = FALSE;
2048 
2049  SelectedUsageAction = GetSelectedUsageAction(GetDlgItem(hwndDlg,
2050  IDC_DEVUSAGE));
2051  switch (SelectedUsageAction)
2052  {
2053  case IDS_ENABLEDEVICE:
2054  if (!dap->DeviceStarted)
2055  {
2056  Ret = EnableDevice(dap->DeviceInfoSet,
2057  &dap->DeviceInfoData,
2058  TRUE,
2059  0,
2060  &NeedReboot);
2061  }
2062  break;
2063 
2064  case IDS_DISABLEDEVICE:
2065  if (dap->DeviceStarted)
2066  {
2067  Ret = EnableDevice(dap->DeviceInfoSet,
2068  &dap->DeviceInfoData,
2069  FALSE,
2070  0,
2071  &NeedReboot);
2072  }
2073  break;
2074 
2075  default:
2076  break;
2077  }
2078 
2079  if (Ret)
2080  {
2081  if (NeedReboot)
2082  {
2083  /* make PropertySheet() return PSM_REBOOTSYSTEM */
2084  PropSheet_RebootSystem(hwndDlg);
2085  }
2086  }
2087  else
2088  {
2089  /* FIXME - display an error message */
2090  FIXME("Failed to enable/disable device! LastError: %d\n",
2091  GetLastError());
2092  }
2093  }
2094  else
2095  Ret = !dap->DeviceUsageChanged;
2096 
2097  /* disable the apply button */
2098  PropSheet_UnChanged(GetParent(hwndDlg),
2099  hwndDlg);
2100  dap->DeviceUsageChanged = FALSE;
2101  return Ret;
2102 }
BOOL WINAPI NeedReboot(DWORD dwRebootCheck)
Definition: advpack.c:311
#define TRUE
Definition: types.h:120
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1040
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
#define FIXME(fmt,...)
Definition: debug.h:111
#define IDS_DISABLEDEVICE
Definition: resource.h:111
#define PropSheet_UnChanged(d, w)
Definition: prsht.h:358
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define PropSheet_RebootSystem(d)
Definition: prsht.h:350
static UINT GetSelectedUsageAction(IN HWND hComboBox)
Definition: advprop.cpp:2013
#define IDC_DEVUSAGE
Definition: resource.h:230
HWND WINAPI GetParent(_In_ HWND)
BOOL EnableDevice(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DevInfoData OPTIONAL, IN BOOL bEnable, IN DWORD HardwareProfile OPTIONAL, OUT BOOL *bNeedReboot OPTIONAL)
Definition: misc.cpp:784
unsigned int UINT
Definition: ndis.h:50
#define IDS_ENABLEDEVICE
Definition: resource.h:110

Referenced by AdvPropGeneralDlgProc().

◆ DisplayClassCoinstallers()

static VOID DisplayClassCoinstallers ( IN PDEVADVPROP_INFO  dap,
IN HWND  hwndListView 
)
static

Definition at line 1219 of file advprop.cpp.

1221 {
1224  WCHAR szClassGuid[45];
1226  DWORD dwSize;
1227  DWORD dwType;
1228  LPBYTE lpBuffer = NULL;
1229  LPWSTR lpStr;
1230  INT index;
1231  INT len;
1232  LONG lError;
1233 
1234  if (dap->CurrentDeviceInfoSet != INVALID_HANDLE_VALUE)
1235  {
1236  DeviceInfoSet = dap->CurrentDeviceInfoSet;
1237  DeviceInfoData = &dap->CurrentDeviceInfoData;
1238  }
1239  else
1240  {
1241  DeviceInfoSet = dap->DeviceInfoSet;
1242  DeviceInfoData = &dap->DeviceInfoData;
1243  }
1244 
1245  dwSize = 45 * sizeof(WCHAR);
1249  &dwType,
1250  (LPBYTE)szClassGuid,
1251  dwSize,
1252  &dwSize))
1253  return;
1254 
1256  L"SYSTEM\\CurrentControlSet\\Control\\CoDeviceInstallers",
1257  0,
1258  GENERIC_READ,
1259  &hKey);
1260  if (lError != ERROR_SUCCESS)
1261  return;
1262 
1263  dwSize = 0;
1264  lError = RegQueryValueEx(hKey,
1265  szClassGuid,
1266  NULL,
1267  &dwType,
1268  NULL,
1269  &dwSize);
1270  if (lError != ERROR_SUCCESS)
1271  goto done;
1272 
1273  if (dwSize == 0)
1274  goto done;
1275 
1278  dwSize);
1279 
1281  szClassGuid,
1282  NULL,
1283  &dwType,
1284  lpBuffer,
1285  &dwSize);
1286 
1287  lpStr = (LPWSTR)lpBuffer;
1288  index = 0;
1289  while (*lpStr != 0)
1290  {
1291  len = wcslen(lpStr) + 1;
1292 
1294 
1295  lpStr += len;
1296  index++;
1297  }
1298 
1299 done:
1300  if (lpBuffer != NULL)
1302 
1303  if (hKey != INVALID_HANDLE_VALUE)
1304  RegCloseKey(hKey);
1305 }
#define RegQueryValueEx
Definition: winreg.h:524
#define ERROR_SUCCESS
Definition: deptool.c:10
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define SetupDiGetDeviceRegistryProperty
Definition: setupapi.h:2603
int32_t INT
Definition: typedefs.h:58
#define SPDRP_CLASSGUID
Definition: setupapi.h:515
#define L(x)
Definition: ntvdm.h:50
unsigned char * LPBYTE
Definition: typedefs.h:53
long LONG
Definition: pedump.c:60
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:175
HWND hwndListView
Definition: eventvwr.c:66
GLuint index
Definition: glext.h:6031
static VOID SetListViewText(HWND hwnd, INT iItem, LPCWSTR lpText)
Definition: advprop.cpp:752
#define GetProcessHeap()
Definition: compat.h:736
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
_In_opt_ PSP_DEVINFO_DATA DeviceInfoData
Definition: setupapi.h:1528
unsigned long DWORD
Definition: ntddk_ex.h:95
#define index(s, c)
Definition: various.h:29
GLenum GLsizei len
Definition: glext.h:6722
#define GENERIC_READ
Definition: compat.h:135
FxAutoRegKey hKey
#define NULL
Definition: types.h:112
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
HANDLE HKEY
Definition: registry.h:26
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3356
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define HeapFree(x, y, z)
Definition: compat.h:735
#define RegCloseKey(hKey)
Definition: registry.h:47
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12

Referenced by DisplayDeviceProperties().

◆ DisplayClassProperties()

static VOID DisplayClassProperties ( IN PDEVADVPROP_INFO  dap,
IN HWND  hwndListView,
IN LPCWSTR  lpProperty 
)
static

Definition at line 1385 of file advprop.cpp.

1388 {
1391  WCHAR szClassGuid[45];
1392  DWORD dwSize;
1393  DWORD dwType;
1394  HKEY hKey;
1395  GUID ClassGuid;
1396  LPBYTE lpBuffer;
1397  LPWSTR lpStr;
1398  INT index = 0;
1399  INT len;
1400 
1401  if (dap->CurrentDeviceInfoSet != INVALID_HANDLE_VALUE)
1402  {
1403  DeviceInfoSet = dap->CurrentDeviceInfoSet;
1404  DeviceInfoData = &dap->CurrentDeviceInfoData;
1405  }
1406  else
1407  {
1408  DeviceInfoSet = dap->DeviceInfoSet;
1409  DeviceInfoData = &dap->DeviceInfoData;
1410  }
1411 
1412  dwSize = 45 * sizeof(WCHAR);
1416  &dwType,
1417  (LPBYTE)szClassGuid,
1418  dwSize,
1419  &dwSize))
1420  return;
1421 
1422  pSetupGuidFromString(szClassGuid,
1423  &ClassGuid);
1424 
1425  hKey = SetupDiOpenClassRegKey(&ClassGuid,
1426  KEY_QUERY_VALUE);
1427  if (hKey != INVALID_HANDLE_VALUE)
1428  {
1429  dwSize = 0;
1430  if (RegQueryValueEx(hKey,
1431  lpProperty,
1432  NULL,
1433  &dwType,
1434  NULL,
1435  &dwSize) == ERROR_SUCCESS &&
1436  dwSize > 0)
1437  {
1440  dwSize);
1441 
1443  lpProperty,
1444  NULL,
1445  &dwType,
1446  lpBuffer,
1447  &dwSize);
1448 
1449  if (dwType == REG_SZ)
1450  {
1452  }
1453  else if (dwType == REG_MULTI_SZ)
1454  {
1455  lpStr = (LPWSTR)lpBuffer;
1456  index = 0;
1457  while (*lpStr != 0)
1458  {
1459  len = wcslen(lpStr) + 1;
1460 
1462 
1463  lpStr += len;
1464  index++;
1465  }
1466  }
1467 
1469  0,
1470  lpBuffer);
1471  }
1472 
1473  RegCloseKey(hKey);
1474  }
1475 }
#define RegQueryValueEx
Definition: winreg.h:524
#define ERROR_SUCCESS
Definition: deptool.c:10
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define SetupDiGetDeviceRegistryProperty
Definition: setupapi.h:2603
int32_t INT
Definition: typedefs.h:58
#define SPDRP_CLASSGUID
Definition: setupapi.h:515
unsigned char * LPBYTE
Definition: typedefs.h:53
#define REG_MULTI_SZ
Definition: nt_native.h:1501
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:175
HWND hwndListView
Definition: eventvwr.c:66
GLuint index
Definition: glext.h:6031
static VOID SetListViewText(HWND hwnd, INT iItem, LPCWSTR lpText)
Definition: advprop.cpp:752
#define GetProcessHeap()
Definition: compat.h:736
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
_In_opt_ PSP_DEVINFO_DATA DeviceInfoData
Definition: setupapi.h:1528
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLsizei len
Definition: glext.h:6722
FxAutoRegKey hKey
#define KEY_QUERY_VALUE
Definition: nt_native.h:1016
#define NULL
Definition: types.h:112
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define HeapFree(x, y, z)
Definition: compat.h:735
HKEY WINAPI SetupDiOpenClassRegKey(const GUID *ClassGuid, REGSAM samDesired)
Definition: devinst.c:3618
#define RegCloseKey(hKey)
Definition: registry.h:47
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
#define REG_SZ
Definition: layer.c:22
DWORD WINAPI pSetupGuidFromString(PCWSTR pString, LPGUID lpGUID)
Definition: misc.c:1751

Referenced by DisplayDeviceProperties().

◆ DisplayCsFlags()

static VOID DisplayCsFlags ( IN PDEVADVPROP_INFO  dap,
IN HWND  hwndListView 
)
static

Definition at line 1145 of file advprop.cpp.

1147 {
1148  DWORD dwValue = 0;
1149  INT index;
1150 
1151  CM_Get_HW_Prof_Flags_Ex(dap->szDevName,
1152  0, /* current hardware profile */
1153  &dwValue,
1154  0,
1155  dap->hMachine);
1156 
1157  index = 0;
1158  swprintf(dap->szTemp, L"%08lx", dwValue);
1159  SetListViewText(hwndListView, index++, dap->szTemp);
1160 
1161  if (dwValue & CSCONFIGFLAG_DISABLED)
1162  SetListViewText(hwndListView, index++, L"CSCONFIGFLAG_DISABLED");
1163 
1164  if (dwValue & CSCONFIGFLAG_DO_NOT_CREATE)
1165  SetListViewText(hwndListView, index++, L"CSCONFIGFLAG_DO_NOT_CREATE");
1166 
1167  if (dwValue & CSCONFIGFLAG_DO_NOT_START)
1168  SetListViewText(hwndListView, index++, L"CSCONFIGFLAG_DO_NOT_START");
1169 }
#define CM_Get_HW_Prof_Flags_Ex
Definition: cfgmgr32.h:1942
#define CSCONFIGFLAG_DISABLED
Definition: regstr.h:401
int32_t INT
Definition: typedefs.h:58
#define L(x)
Definition: ntvdm.h:50
HWND hwndListView
Definition: eventvwr.c:66
GLuint index
Definition: glext.h:6031
static VOID SetListViewText(HWND hwnd, INT iItem, LPCWSTR lpText)
Definition: advprop.cpp:752
unsigned long DWORD
Definition: ntddk_ex.h:95
#define index(s, c)
Definition: various.h:29
int _cdecl swprintf(const WCHAR *,...)
#define CSCONFIGFLAG_DO_NOT_CREATE
Definition: regstr.h:402
#define CSCONFIGFLAG_DO_NOT_START
Definition: regstr.h:403

Referenced by DisplayDeviceProperties().

◆ DisplayCurrentPowerState()

static VOID DisplayCurrentPowerState ( IN PDEVADVPROP_INFO  dap,
IN HWND  hwndListView 
)
static

Definition at line 1530 of file advprop.cpp.

1533 {
1536  CM_POWER_DATA PowerData;
1537  DWORD dwSize, dwType;
1538  PCWSTR lpText = NULL;
1539 
1540  if (dap->CurrentDeviceInfoSet != INVALID_HANDLE_VALUE)
1541  {
1542  DeviceInfoSet = dap->CurrentDeviceInfoSet;
1543  DeviceInfoData = &dap->CurrentDeviceInfoData;
1544  }
1545  else
1546  {
1547  DeviceInfoSet = dap->DeviceInfoSet;
1548  DeviceInfoData = &dap->DeviceInfoData;
1549  }
1550 
1551  dwSize = sizeof(CM_POWER_DATA);
1555  &dwType,
1556  (LPBYTE)&PowerData,
1557  dwSize,
1558  &dwSize))
1559  return;
1560 
1561  switch (PowerData.PD_MostRecentPowerState)
1562  {
1563 // case PowerDeviceUnspecified:
1564 
1565  case PowerDeviceD0:
1566  lpText = L"D0";
1567  break;
1568 
1569  case PowerDeviceD1:
1570  lpText = L"D1";
1571  break;
1572 
1573  case PowerDeviceD2:
1574  lpText = L"D2";
1575  break;
1576 
1577  case PowerDeviceD3:
1578  lpText = L"D3";
1579  break;
1580 
1581  default:
1582  break;
1583  }
1584 
1585  if (lpText != NULL)
1586  SetListViewText(hwndListView, 0, lpText);
1587 }
const uint16_t * PCWSTR
Definition: typedefs.h:57
#define SPDRP_DEVICE_POWER_DATA
Definition: setupapi.h:537
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define SetupDiGetDeviceRegistryProperty
Definition: setupapi.h:2603
#define L(x)
Definition: ntvdm.h:50
unsigned char * LPBYTE
Definition: typedefs.h:53
HWND hwndListView
Definition: eventvwr.c:66
static VOID SetListViewText(HWND hwnd, INT iItem, LPCWSTR lpText)
Definition: advprop.cpp:752
_In_opt_ PSP_DEVINFO_DATA DeviceInfoData
Definition: setupapi.h:1528
unsigned long DWORD
Definition: ntddk_ex.h:95
struct CM_Power_Data_s CM_POWER_DATA
#define NULL
Definition: types.h:112
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56

Referenced by DisplayDeviceProperties().

◆ DisplayDeviceAdvancedProperties()

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 
)

Definition at line 2869 of file advprop.cpp.

2876 {
2877  PROPSHEETHEADER psh = {0};
2878  PROPSHEETPAGE pspGeneral = {0};
2881  PDESTROYPROPERTYSHEETPAGE pDestroyPropertySheetPage;
2882  PDEVADVPROP_INFO DevAdvPropInfo;
2883  HMACHINE hMachine = NULL;
2884  DWORD DevIdSize = 0;
2885  INT_PTR Ret = -1;
2886 
2887  /* we don't want to statically link against comctl32, so find the
2888  functions we need dynamically */
2889  pPropertySheetW =
2890  (PPROPERTYSHEETW)GetProcAddress(hComCtl32,
2891  "PropertySheetW");
2894  "CreatePropertySheetPageW");
2895  pDestroyPropertySheetPage =
2897  "DestroyPropertySheetPage");
2898  if (pPropertySheetW == NULL ||
2900  pDestroyPropertySheetPage == NULL)
2901  {
2902  return -1;
2903  }
2904 
2905  if (lpDeviceID == NULL)
2906  {
2907  /* find out how much size is needed for the device id */
2910  NULL,
2911  0,
2912  &DevIdSize))
2913  {
2914  ERR("SetupDiGetDeviceInstanceId unexpectedly returned TRUE!\n");
2915  return -1;
2916  }
2917 
2919  {
2920  return -1;
2921  }
2922  }
2923  else
2924  {
2925  DevIdSize = (DWORD)wcslen(lpDeviceID) + 1;
2926  }
2927 
2928  if (lpMachineName != NULL && lpMachineName[0] != L'\0')
2929  {
2930  CONFIGRET cr = CM_Connect_Machine(lpMachineName,
2931  &hMachine);
2932  if (cr != CR_SUCCESS)
2933  {
2934  return -1;
2935  }
2936  }
2937 
2938  /* create the internal structure associated with the "General",
2939  "Driver", ... pages */
2940  DevAdvPropInfo = (PDEVADVPROP_INFO)HeapAlloc(GetProcessHeap(),
2943  szDeviceID) +
2944  (DevIdSize * sizeof(WCHAR)));
2945  if (DevAdvPropInfo == NULL)
2946  {
2948  goto Cleanup;
2949  }
2950 
2951  if (lpDeviceID == NULL)
2952  {
2953  /* read the device instance id */
2956  DevAdvPropInfo->szDeviceID,
2957  DevIdSize,
2958  NULL))
2959  {
2960  goto Cleanup;
2961  }
2962  }
2963  else
2964  {
2965  /* copy the device instance id supplied by the caller */
2966  wcscpy(DevAdvPropInfo->szDeviceID,
2967  lpDeviceID);
2968  }
2969 
2970  DevAdvPropInfo->DeviceInfoSet = DeviceInfoSet;
2971  DevAdvPropInfo->DeviceInfoData = *DeviceInfoData;
2972  DevAdvPropInfo->CurrentDeviceInfoSet = INVALID_HANDLE_VALUE;
2973  DevAdvPropInfo->CurrentDeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
2974 
2975  DevAdvPropInfo->ShowRemotePages = (lpMachineName != NULL && lpMachineName[0] != L'\0');
2976  DevAdvPropInfo->hMachine = hMachine;
2977  DevAdvPropInfo->lpMachineName = lpMachineName;
2978  DevAdvPropInfo->szDevName[0] = L'\0';
2979  DevAdvPropInfo->hComCtl32 = hComCtl32;
2981  DevAdvPropInfo->pDestroyPropertySheetPage = pDestroyPropertySheetPage;
2982 
2983  DevAdvPropInfo->IsAdmin = TRUE;// IsUserAdmin();
2984  DevAdvPropInfo->DoDefaultDevAction = ((dwFlags & DPF_DEVICE_STATUS_ACTION) != 0);
2985  DevAdvPropInfo->Extended = ((dwFlags & DPF_EXTENDED) != 0);
2986 
2987  psh.dwSize = sizeof(PROPSHEETHEADER);
2988  psh.dwFlags = PSH_PROPTITLE | PSH_NOAPPLYNOW;
2989  psh.hwndParent = hWndParent;
2990  psh.pszCaption = DevAdvPropInfo->szDevName;
2991 
2992  DevAdvPropInfo->PropertySheetType = DevAdvPropInfo->ShowRemotePages ?
2993  DIGCDP_FLAG_REMOTE_ADVANCED :
2995 
2996  psh.phpage = (HPROPSHEETPAGE *)HeapAlloc(GetProcessHeap(),
2998  1 * sizeof(HPROPSHEETPAGE));
2999  if (psh.phpage == NULL)
3000  {
3001  goto Cleanup;
3002  }
3003 
3004  /* add the "General" property sheet */
3005  pspGeneral.dwSize = sizeof(PROPSHEETPAGE);
3006  pspGeneral.dwFlags = PSP_DEFAULT;
3007  pspGeneral.hInstance = hDllInstance;
3008  pspGeneral.pszTemplate = (LPCWSTR)MAKEINTRESOURCE(IDD_DEVICEGENERAL);
3009  pspGeneral.pfnDlgProc = AdvPropGeneralDlgProc;
3010  pspGeneral.lParam = (LPARAM)DevAdvPropInfo;
3011  psh.phpage[psh.nPages] = pCreatePropertySheetPageW(&pspGeneral);
3012  if (psh.phpage[psh.nPages] != NULL)
3013  {
3014  psh.nPages++;
3015  }
3016 
3017  DevAdvPropInfo->nDevPropSheets = psh.nPages;
3018 
3019  if (psh.nPages != 0)
3020  {
3021  Ret = pPropertySheetW(&psh);
3022 
3023  /* NOTE: no need to destroy the property sheets anymore! */
3024  }
3025  else
3026  {
3027  UINT i;
3028 
3029 Cleanup:
3030  /* in case of failure the property sheets must be destroyed */
3031  if (psh.phpage != NULL)
3032  {
3033  for (i = 0;
3034  i < psh.nPages;
3035  i++)
3036  {
3037  if (psh.phpage[i] != NULL)
3038  {
3039  pDestroyPropertySheetPage(psh.phpage[i]);
3040  }
3041  }
3042  }
3043  }
3044 
3045  if (Ret != 1)
3046  {
3048 
3049  DeviceInstallParams.cbSize = sizeof(DeviceInstallParams);
3053  {
3054  SP_PROPCHANGE_PARAMS PropChangeParams;
3055  PropChangeParams.ClassInstallHeader.cbSize = sizeof(PropChangeParams.ClassInstallHeader);
3057  PropChangeParams.Scope = DICS_FLAG_GLOBAL;
3058  PropChangeParams.StateChange = DICS_PROPCHANGE;
3059 
3062  (PSP_CLASSINSTALL_HEADER)&PropChangeParams,
3063  sizeof(PropChangeParams));
3064 
3066  DeviceInfoSet,
3067  DeviceInfoData);
3068 
3073  }
3074  }
3075 
3076  if (DevAdvPropInfo != NULL)
3077  {
3078  if (DevAdvPropInfo->FreeDevPropSheets)
3079  {
3080  /* don't free the array if it's the one allocated in
3081  DisplayDeviceAdvancedProperties */
3083  0,
3084  DevAdvPropInfo->DevPropSheets);
3085  }
3086 
3087  if (DevAdvPropInfo->CloseDevInst)
3088  {
3089  /* close the device info set in case a new one was created */
3091  }
3092 
3093  if (DevAdvPropInfo->CurrentDeviceInfoSet != INVALID_HANDLE_VALUE)
3094  {
3096  }
3097 
3098  if (DevAdvPropInfo->hDevIcon != NULL)
3099  {
3100  DestroyIcon(DevAdvPropInfo->hDevIcon);
3101  }
3102 
3103  if (DevAdvPropInfo->pResourceList != NULL)
3104  HeapFree(GetProcessHeap(), 0, DevAdvPropInfo->pResourceList);
3105 
3107  0,
3108  DevAdvPropInfo);
3109  }
3110 
3111  if (psh.phpage != NULL)
3112  {
3114  0,
3115  psh.phpage);
3116  }
3117 
3118  if (hMachine != NULL)
3119  {
3120  CM_Disconnect_Machine(hMachine);
3121  }
3122 
3123  return Ret;
3124 }
#define MAKEINTRESOURCE
Definition: winuser.h:591
LPCWSTR lpMachineName
Definition: properties.h:25
HDEVINFO CurrentDeviceInfoSet
Definition: properties.h:21
#define PSH_NOAPPLYNOW
Definition: prsht.h:47
struct _DEVADVPROP_INFO * PDEVADVPROP_INFO
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
BOOL WINAPI SetupDiSetDeviceInstallParamsW(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN PSP_DEVINSTALL_PARAMS_W DeviceInstallParams)
Definition: devinst.c:4558
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2022
#define TRUE
Definition: types.h:120
CONFIGRET WINAPI CM_Disconnect_Machine(_In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:1863
WCHAR szDevName[255]
Definition: properties.h:57
BOOL(WINAPI * PDESTROYPROPERTYSHEETPAGE)(HPROPSHEETPAGE)
Definition: properties.h:10
PDESTROYPROPERTYSHEETPAGE pDestroyPropertySheetPage
Definition: properties.h:29
static FN_PropertySheetW pPropertySheetW
Definition: propsheet.c:122
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1040
INT_PTR(WINAPI * PPROPERTYSHEETW)(LPCPROPSHEETHEADERW)
Definition: properties.h:8
BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION InstallFunction, HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData)
Definition: devinst.c:4024
#define DIF_PROPERTYCHANGE
Definition: setupapi.h:137
int32_t INT_PTR
Definition: typedefs.h:64
#define DWORD
Definition: nt_native.h:44
SP_DEVINFO_DATA DeviceInfoData
Definition: properties.h:20
#define DIGCDP_FLAG_ADVANCED
Definition: setupapi.h:165
HPROPSHEETPAGE(WINAPI * PCREATEPROPERTYSHEETPAGEW)(LPCPROPSHEETPAGEW)
Definition: properties.h:9
UINT DoDefaultDevAction
Definition: properties.h:47
#define L(x)
Definition: ntvdm.h:50
#define IDD_DEVICEGENERAL
Definition: resource.h:215
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
BOOL WINAPI SetupDiGetDeviceInstallParamsW(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, OUT PSP_DEVINSTALL_PARAMS_W DeviceInstallParams)
Definition: devinst.c:4451
#define CR_SUCCESS
Definition: cfgmgr32.h:842
#define PROPSHEETHEADER
Definition: prsht.h:392
LONG_PTR LPARAM
Definition: windef.h:208
SP_DEVINFO_DATA CurrentDeviceInfoData
Definition: properties.h:22
WCHAR szDeviceID[1]
Definition: properties.h:59
HMACHINE hMachine
Definition: properties.h:24
struct _SP_DEVINFO_DATA SP_DEVINFO_DATA
static HINSTANCE hDllInstance
Definition: clb.c:30
SP_CLASSINSTALL_HEADER ClassInstallHeader
Definition: setupapi.h:916
#define PSP_DEFAULT
Definition: prsht.h:22
BOOL WINAPI SetupDiSetClassInstallParamsW(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN PSP_CLASSINSTALL_HEADER ClassInstallParams OPTIONAL, IN DWORD ClassInstallParamsSize)
Definition: devclass.c:972
#define GetProcessHeap()
Definition: compat.h:736
UINT FreeDevPropSheets
Definition: properties.h:41
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static FN_CreatePropertySheetPageW pCreatePropertySheetPageW
Definition: propsheet.c:121
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define PSH_PROPTITLE
Definition: prsht.h:40
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
Definition: devinst.c:2893
_In_opt_ PSP_DEVINFO_DATA DeviceInfoData
Definition: setupapi.h:1528
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:752
PVOID pResourceList
Definition: properties.h:56
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define SetupDiGetDeviceInstanceId
Definition: setupapi.h:2600
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
static const WCHAR Cleanup[]
Definition: register.c:80
HPROPSHEETPAGE * DevPropSheets
Definition: properties.h:33
#define ERR(fmt,...)
Definition: debug.h:110
static INT_PTR CALLBACK AdvPropGeneralDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: advprop.cpp:2727
#define DICS_FLAG_GLOBAL
Definition: setupapi.h:113
#define DICS_PROPCHANGE
Definition: setupapi.h:116
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
Definition: glfuncs.h:248
PCREATEPROPERTYSHEETPAGEW pCreatePropertySheetPageW
Definition: properties.h:28
#define DPF_EXTENDED
Definition: devmgr.h:144
DWORD nDevPropSheets
Definition: properties.h:32
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
#define DPF_DEVICE_STATUS_ACTION
Definition: devmgr.h:145
unsigned int UINT
Definition: ndis.h:50
#define NULL
Definition: types.h:112
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
RETURN_TYPE CONFIGRET
Definition: cfgmgr32.h:74
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
UINT ShowRemotePages
Definition: properties.h:49
#define GetProcAddress(x, y)
Definition: compat.h:753
HINSTANCE hComCtl32
Definition: properties.h:27
#define DI_FLAGSEX_PROPCHANGE_PENDING
Definition: setupapi.h:86
DWORD PropertySheetType
Definition: properties.h:31
#define CM_Connect_Machine
Definition: cfgmgr32.h:1074
#define HeapFree(x, y, z)
Definition: compat.h:735
#define PROPSHEETPAGE
Definition: prsht.h:389
DI_FUNCTION InstallFunction
Definition: setupapi.h:904
HDEVINFO DeviceInfoSet
Definition: properties.h:19
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10

Referenced by DeviceAdvancedPropertiesW(), DevicePropertiesExW(), and DisplaySelectedDeviceProperties().

◆ DisplayDeviceCoinstallers()

static VOID DisplayDeviceCoinstallers ( IN PDEVADVPROP_INFO  dap,
IN HWND  hwndListView 
)
static

Definition at line 1309 of file advprop.cpp.

1311 {
1314  HKEY hKey;
1315  DWORD dwSize;
1316  DWORD dwType;
1317  LPBYTE lpBuffer;
1318  LPWSTR lpStr;
1319  INT index;
1320  INT len;
1321 
1322  if (dap->CurrentDeviceInfoSet != INVALID_HANDLE_VALUE)
1323  {
1324  DeviceInfoSet = dap->CurrentDeviceInfoSet;
1325  DeviceInfoData = &dap->CurrentDeviceInfoData;
1326  }
1327  else
1328  {
1329  DeviceInfoSet = dap->DeviceInfoSet;
1330  DeviceInfoData = &dap->DeviceInfoData;
1331  }
1332 
1336  0,
1337  DIREG_DRV,
1338  KEY_QUERY_VALUE);
1339  if (hKey != INVALID_HANDLE_VALUE)
1340  {
1341  dwSize = 0;
1342  if (RegQueryValueEx(hKey,
1343  L"CoInstallers32",
1344  NULL,
1345  &dwType,
1346  NULL,
1347  &dwSize) == ERROR_SUCCESS &&
1348  dwSize > 0)
1349  {
1350 
1353  dwSize);
1354 
1356  L"CoInstallers32",
1357  NULL,
1358  &dwType,
1359  lpBuffer,
1360  &dwSize);
1361 
1362  lpStr = (LPWSTR)lpBuffer;
1363  index = 0;
1364  while (*lpStr != 0)
1365  {
1366  len = wcslen(lpStr) + 1;
1367 
1369 
1370  lpStr += len;
1371  index++;
1372  }
1373 
1375  0,
1376  lpBuffer);
1377  }
1378 
1379  RegCloseKey(hKey);
1380  }
1381 }
#define RegQueryValueEx
Definition: winreg.h:524
#define ERROR_SUCCESS
Definition: deptool.c:10
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
int32_t INT
Definition: typedefs.h:58
#define L(x)
Definition: ntvdm.h:50
unsigned char * LPBYTE
Definition: typedefs.h:53
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:175
HWND hwndListView
Definition: eventvwr.c:66
GLuint index
Definition: glext.h:6031
static VOID SetListViewText(HWND hwnd, INT iItem, LPCWSTR lpText)
Definition: advprop.cpp:752
#define GetProcessHeap()
Definition: compat.h:736
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
_In_opt_ PSP_DEVINFO_DATA DeviceInfoData
Definition: setupapi.h:1528
unsigned long DWORD
Definition: ntddk_ex.h:95
#define index(s, c)
Definition: various.h:29
GLenum GLsizei len
Definition: glext.h:6722
HKEY WINAPI SetupDiOpenDevRegKey(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Scope, DWORD HwProfile, DWORD KeyType, REGSAM samDesired)
Definition: devinst.c:5934
#define DICS_FLAG_GLOBAL
Definition: setupapi.h:113
FxAutoRegKey hKey
#define KEY_QUERY_VALUE
Definition: nt_native.h:1016
#define NULL
Definition: types.h:112
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define DIREG_DRV
Definition: setupapi.h:182
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define HeapFree(x, y, z)
Definition: compat.h:735
#define RegCloseKey(hKey)
Definition: registry.h:47
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56

Referenced by DisplayDeviceProperties().

◆ DisplayDeviceProperties()

static VOID DisplayDeviceProperties ( IN PDEVADVPROP_INFO  dap,
IN HWND  hwndComboBox,
IN HWND  hwndListView 
)
static

Definition at line 1728 of file advprop.cpp.

1731 {
1732  INT Index;
1733 
1734  Index = (INT)SendMessage(hwndComboBox,
1735  CB_GETCURSEL,
1736  0,
1737  0);
1738  if (Index == CB_ERR)
1739  return;
1740 
1742 
1743  switch (Index)
1744  {
1745  case 0: /* Device ID */
1746  SetListViewText(hwndListView, 0, dap->szDeviceID);
1747  break;
1748 
1749  case 1: /* Hardware ID */
1751  hwndListView,
1753  break;
1754 
1755  case 2: /* Compatible IDs */
1757  hwndListView,
1759  break;
1760 
1761  case 3: /* Matching ID */
1763  hwndListView);
1764  break;
1765 
1766  case 4: /* Service */
1768  hwndListView,
1769  SPDRP_SERVICE);
1770  break;
1771 
1772  case 5: /* Enumerator */
1774  hwndListView);
1775  break;
1776 
1777  case 6: /* Capabilities */
1779  hwndListView,
1781  break;
1782 
1783  case 7: /* Devnode Flags */
1784  DisplayDevNodeFlags(dap,
1785  hwndListView);
1786  break;
1787 
1788  case 8: /* Config Flags */
1790  hwndListView,
1792  break;
1793 
1794  case 9: /* CSConfig Flags */
1795  DisplayCsFlags(dap,
1796  hwndListView);
1797  break;
1798 
1799  case 10: /* Ejection relation */
1801  hwndListView,
1803  break;
1804 
1805  case 11: /* Removal relations */
1807  hwndListView,
1809  break;
1810 
1811  case 12: /* Bus relation */
1813  hwndListView,
1815  break;
1816 
1817  case 13: /* Device Upper Filters */
1819  hwndListView,
1821  break;
1822 
1823  case 14: /* Device Lower Filters */
1825  hwndListView,
1827  break;
1828 
1829  case 15: /* Class Upper Filters */
1831  hwndListView,
1832  L"UpperFilters");
1833  break;
1834 
1835  case 16: /* Class Lower Filters */
1837  hwndListView,
1838  L"LowerFilters");
1839  break;
1840 
1841  case 17: /* Class Installer */
1843  hwndListView,
1844  L"Installer32");
1845  break;
1846 
1847  case 18: /* Class Coinstaller */
1849  hwndListView);
1850  break;
1851 
1852  case 19: /* Device Coinstaller */
1854  hwndListView);
1855  break;
1856 
1857 #if 0
1858  case 20: /* Firmware Revision */
1859  break;
1860 #endif
1861 
1862  case 21: /* Current Power State */
1864  hwndListView);
1865  break;
1866 
1867  case 22: /* Power Capabilities */
1869  hwndListView);
1870  break;
1871 
1872  case 23: /* Power State Mappings */
1874  hwndListView);
1875  break;
1876 
1877  default:
1878  SetListViewText(hwndListView, 0, L"<Not implemented yet>");
1879  break;
1880  }
1881 }
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
#define INT
Definition: polytest.cpp:20
#define CM_GETIDLIST_FILTER_BUSRELATIONS
Definition: cfgmgr32.h:660
int32_t INT
Definition: typedefs.h:58
#define SPDRP_LOWERFILTERS
Definition: setupapi.h:525
#define CB_GETCURSEL
Definition: winuser.h:1933
#define CM_GETIDLIST_FILTER_EJECTRELATIONS
Definition: cfgmgr32.h:657
static VOID DisplayPowerCapabilities(IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
Definition: advprop.cpp:1591
static VOID DisplayCurrentPowerState(IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
Definition: advprop.cpp:1530
static VOID DisplayPowerStateMappings(IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
Definition: advprop.cpp:1652
#define L(x)
Definition: ntvdm.h:50
HWND hwndListView
Definition: eventvwr.c:66
#define CB_ERR
Definition: winuser.h:2425
#define CM_GETIDLIST_FILTER_REMOVALRELATIONS
Definition: cfgmgr32.h:658
static VOID SetListViewText(HWND hwnd, INT iItem, LPCWSTR lpText)
Definition: advprop.cpp:752
_In_ WDFCOLLECTION _In_ ULONG Index
static VOID DisplayDeviceCoinstallers(IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
Definition: advprop.cpp:1309
static VOID DisplayDevNodeEnumerator(IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
Definition: advprop.cpp:1114
#define SPDRP_HARDWAREID
Definition: setupapi.h:508
static VOID DisplayDevNodeFlags(IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
Definition: advprop.cpp:1028
#define SPDRP_SERVICE
Definition: setupapi.h:511
static VOID DisplayClassProperties(IN PDEVADVPROP_INFO dap, IN HWND hwndListView, IN LPCWSTR lpProperty)
Definition: advprop.cpp:1385
#define SPDRP_CONFIGFLAGS
Definition: setupapi.h:517
#define SPDRP_UPPERFILTERS
Definition: setupapi.h:524
static VOID DisplayDevicePropertyText(IN PDEVADVPROP_INFO dap, IN HWND hwndListView, IN DWORD dwProperty)
Definition: advprop.cpp:866
#define SPDRP_COMPATIBLEIDS
Definition: setupapi.h:509
static VOID DisplayMatchingDeviceId(IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
Definition: advprop.cpp:1173
static VOID DisplayClassCoinstallers(IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
Definition: advprop.cpp:1219
static VOID DisplayDeviceRelations(IN PDEVADVPROP_INFO dap, IN HWND hwndListView, IN ULONG ulFlags)
Definition: advprop.cpp:1479
#define SendMessage
Definition: winuser.h:5833
static VOID DisplayCsFlags(IN PDEVADVPROP_INFO dap, IN HWND hwndListView)
Definition: advprop.cpp:1145
#define SPDRP_CAPABILITIES
Definition: setupapi.h:522
#define ListView_DeleteAllItems(hwnd)
Definition: commctrl.h:2414

Referenced by AdvProcDetailsDlgProc().

◆ DisplayDevicePropertyText()

static VOID DisplayDevicePropertyText ( IN PDEVADVPROP_INFO  dap,
IN HWND  hwndListView,
IN DWORD  dwProperty 
)
static

Definition at line 866 of file advprop.cpp.

869 {
872  DWORD dwType;
873  DWORD dwSize;
874  DWORD dwValue;
876  LPWSTR lpStr;
877  INT len;
878  INT index;
879 
880  if (dap->CurrentDeviceInfoSet != INVALID_HANDLE_VALUE)
881  {
882  DeviceInfoSet = dap->CurrentDeviceInfoSet;
883  DeviceInfoData = &dap->CurrentDeviceInfoData;
884  }
885  else
886  {
887  DeviceInfoSet = dap->DeviceInfoSet;
888  DeviceInfoData = &dap->DeviceInfoData;
889  }
890 
891  dwSize = 0;
894  dwProperty,
895  &dwType,
896  NULL,
897  0,
898  &dwSize);
899  if (dwSize == 0)
900  {
902  {
903  swprintf(dap->szTemp, L"Error: Getting the size failed! (Error: %ld)", GetLastError());
904  SetListViewText(hwndListView, 0, dap->szTemp);
905  }
906  return;
907  }
908 
909  if (dwType == REG_SZ)
910  dwSize += sizeof(WCHAR);
911 
914  dwSize);
915  if (lpBuffer == NULL)
916  {
917  SetListViewText(hwndListView, 0, L"Error: Allocating the buffer failed!");
918  return;
919  }
920 
923  dwProperty,
924  &dwType,
925  lpBuffer,
926  dwSize,
927  &dwSize))
928  {
929  if (dwType == REG_SZ)
930  {
932  }
933  else if (dwType == REG_MULTI_SZ)
934  {
935  lpStr = (LPWSTR)lpBuffer;
936  index = 0;
937  while (*lpStr != 0)
938  {
939  len = wcslen(lpStr) + 1;
940 
942 
943  lpStr += len;
944  index++;
945  }
946  }
947  else if (dwType == REG_DWORD)
948  {
949  dwValue = *(DWORD *) lpBuffer;
950 
951  switch (dwProperty)
952  {
953  case SPDRP_CAPABILITIES:
954  index = 0;
955  swprintf(dap->szTemp, L"%08lx", dwValue);
956  SetListViewText(hwndListView, index++, dap->szTemp);
957  if (dwValue & CM_DEVCAP_LOCKSUPPORTED)
958  SetListViewText(hwndListView, index++, L"CM_DEVCAP_LOCKSUPPORTED");
959  if (dwValue & CM_DEVCAP_EJECTSUPPORTED)
960  SetListViewText(hwndListView, index++, L"CM_DEVCAP_EJECTSUPPORTED");
961  if (dwValue & CM_DEVCAP_REMOVABLE)
962  SetListViewText(hwndListView, index++, L"CM_DEVCAP_REMOVABLE");
963  if (dwValue & CM_DEVCAP_DOCKDEVICE)
964  SetListViewText(hwndListView, index++, L"CM_DEVCAP_DOCKDEVICE");
965  if (dwValue & CM_DEVCAP_UNIQUEID)
966  SetListViewText(hwndListView, index++, L"CM_DEVCAP_UNIQUEID");
967  if (dwValue & CM_DEVCAP_SILENTINSTALL)
968  SetListViewText(hwndListView, index++, L"CM_DEVCAP_SILENTINSTALL");
969  if (dwValue & CM_DEVCAP_RAWDEVICEOK)
970  SetListViewText(hwndListView, index++, L"CM_DEVCAP_RAWDEVICEOK");
971  if (dwValue & CM_DEVCAP_SURPRISEREMOVALOK)
972  SetListViewText(hwndListView, index++, L"CM_DEVCAP_SURPRISEREMOVALOK");
973  if (dwValue & CM_DEVCAP_HARDWAREDISABLED)
974  SetListViewText(hwndListView, index++, L"CM_DEVCAP_HARDWAREDISABLED");
975  if (dwValue & CM_DEVCAP_NONDYNAMIC)
976  SetListViewText(hwndListView, index++, L"CM_DEVCAP_NONDYNAMIC");
977  break;
978 
979  case SPDRP_CONFIGFLAGS:
980  index = 0;
981  swprintf(dap->szTemp, L"%08lx", dwValue);
982  SetListViewText(hwndListView, index++, dap->szTemp);
983  if (dwValue & CONFIGFLAG_DISABLED)
984  SetListViewText(hwndListView, index++, L"CONFIGFLAG_DISABLED");
985  if (dwValue & CONFIGFLAG_REMOVED)
986  SetListViewText(hwndListView, index++, L"CONFIGFLAG_REMOVED");
987  if (dwValue & CONFIGFLAG_MANUAL_INSTALL)
988  SetListViewText(hwndListView, index++, L"CONFIGFLAG_MANUAL_INSTALL");
989  if (dwValue & CONFIGFLAG_IGNORE_BOOT_LC)
990  SetListViewText(hwndListView, index++, L"CONFIGFLAG_IGNORE_BOOT_LC");
991  if (dwValue & CONFIGFLAG_NET_BOOT)
992  SetListViewText(hwndListView, index++, L"CONFIGFLAG_NET_BOOT");
993  if (dwValue & CONFIGFLAG_REINSTALL)
994  SetListViewText(hwndListView, index++, L"CONFIGFLAG_REINSTALL");
995  if (dwValue & CONFIGFLAG_FAILEDINSTALL)
996  SetListViewText(hwndListView, index++, L"CONFIGFLAG_FAILEDINSTALL");
997  if (dwValue & CONFIGFLAG_CANTSTOPACHILD)
998  SetListViewText(hwndListView, index++, L"CONFIGFLAG_CANTSTOPACHILD");
999  if (dwValue & CONFIGFLAG_OKREMOVEROM)
1000  SetListViewText(hwndListView, index++, L"CONFIGFLAG_OKREMOVEROM");
1001  if (dwValue & CONFIGFLAG_NOREMOVEEXIT)
1002  SetListViewText(hwndListView, index++, L"CONFIGFLAG_NOREMOVEEXIT");
1003  break;
1004 
1005  default:
1006  swprintf(dap->szTemp, L"0x%08lx", dwValue);
1007  SetListViewText(hwndListView, 0, dap->szTemp);
1008  break;
1009  }
1010  }
1011  else
1012  {
1013  SetListViewText(hwndListView, 0, L"Error: Unsupported value type!");
1014 
1015  }
1016  }
1017  else
1018  {
1019  SetListViewText(hwndListView, 0, L"Error: Retrieving the value failed!");
1020  }
1021 
1023  0,
1024  lpBuffer);
1025 }
#define CM_DEVCAP_LOCKSUPPORTED
Definition: cfgmgr32.h:735
#define CM_DEVCAP_REMOVABLE
Definition: cfgmgr32.h:737
#define CM_DEVCAP_EJECTSUPPORTED
Definition: cfgmgr32.h:736
#define CM_DEVCAP_SILENTINSTALL
Definition: cfgmgr32.h:740
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1040
#define SetupDiGetDeviceRegistryProperty
Definition: setupapi.h:2603
int32_t INT
Definition: typedefs.h:58
#define L(x)
Definition: ntvdm.h:50
unsigned char * LPBYTE
Definition: typedefs.h:53
#define REG_MULTI_SZ
Definition: nt_native.h:1501
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:175
#define CM_DEVCAP_NONDYNAMIC
Definition: cfgmgr32.h:744
#define CONFIGFLAG_NOREMOVEEXIT
Definition: regstr.h:399
HWND hwndListView
Definition: eventvwr.c:66
GLuint index
Definition: glext.h:6031
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
#define CONFIGFLAG_REMOVED
Definition: regstr.h:391
static VOID SetListViewText(HWND hwnd, INT iItem, LPCWSTR lpText)
Definition: advprop.cpp:752
#define CONFIGFLAG_DISABLED
Definition: regstr.h:390
#define GetProcessHeap()
Definition: compat.h:736
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define CONFIGFLAG_IGNORE_BOOT_LC
Definition: regstr.h:393
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define CONFIGFLAG_CANTSTOPACHILD
Definition: regstr.h:397
_In_opt_ PSP_DEVINFO_DATA DeviceInfoData
Definition: setupapi.h:1528
unsigned long DWORD
Definition: ntddk_ex.h:95
#define index(s, c)
Definition: various.h:29
GLenum GLsizei len
Definition: glext.h:6722
#define CONFIGFLAG_MANUAL_INSTALL
Definition: regstr.h:392
int _cdecl swprintf(const WCHAR *,...)
#define SPDRP_CONFIGFLAGS
Definition: setupapi.h:517
#define CM_DEVCAP_RAWDEVICEOK
Definition: cfgmgr32.h:741
#define CONFIGFLAG_REINSTALL
Definition: regstr.h:395
#define NULL
Definition: types.h:112
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define CM_DEVCAP_SURPRISEREMOVALOK
Definition: cfgmgr32.h:742
#define CM_DEVCAP_DOCKDEVICE
Definition: cfgmgr32.h:738
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define REG_DWORD
Definition: sdbapi.c:596
#define CONFIGFLAG_NET_BOOT
Definition: regstr.h:394
#define HeapFree(x, y, z)
Definition: compat.h:735
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
#define CM_DEVCAP_HARDWAREDISABLED
Definition: cfgmgr32.h:743
#define CONFIGFLAG_FAILEDINSTALL
Definition: regstr.h:396
#define SPDRP_CAPABILITIES
Definition: setupapi.h:522
#define CM_DEVCAP_UNIQUEID
Definition: cfgmgr32.h:739
#define CONFIGFLAG_OKREMOVEROM
Definition: regstr.h:398
#define REG_SZ
Definition: layer.c:22

Referenced by DisplayDeviceProperties().

◆ DisplayDeviceRelations()

static VOID DisplayDeviceRelations ( IN PDEVADVPROP_INFO  dap,
IN HWND  hwndListView,
IN ULONG  ulFlags 
)
static

Definition at line 1479 of file advprop.cpp.

1483 {
1484  ULONG ulLength = 0;
1485  LPWSTR pszBuffer = NULL, pszStr;
1486  INT index = 0, len;
1487  CONFIGRET ret;
1488 
1489  ret = CM_Get_Device_ID_List_Size_ExW(&ulLength,
1490  dap->szDeviceID,
1491  ulFlags,
1492  NULL);
1493  if (ret != CR_SUCCESS)
1494  return;
1495 
1496  pszBuffer = (LPWSTR)HeapAlloc(GetProcessHeap(),
1498  ulLength * sizeof(WCHAR));
1499  if (pszBuffer == NULL)
1500  return;
1501 
1502  ret = CM_Get_Device_ID_List_ExW(dap->szDeviceID,
1503  pszBuffer,
1504  ulLength,
1505  ulFlags,
1506  NULL);
1507  if (ret != CR_SUCCESS)
1508  {
1509  HeapFree(GetProcessHeap(), 0, pszBuffer);
1510  return;
1511  }
1512 
1513  pszStr = pszBuffer;
1514  index = 0;
1515  while (*pszStr != 0)
1516  {
1517  len = wcslen(pszStr) + 1;
1518 
1520 
1521  pszStr += len;
1522  index++;
1523  }
1524 
1525  HeapFree(GetProcessHeap(), 0, pszBuffer);
1526 }
int32_t INT
Definition: typedefs.h:58
#define CR_SUCCESS
Definition: cfgmgr32.h:842
HWND hwndListView
Definition: eventvwr.c:66
GLuint index
Definition: glext.h:6031
static VOID SetListViewText(HWND hwnd, INT iItem, LPCWSTR lpText)
Definition: advprop.cpp:752
#define GetProcessHeap()
Definition: compat.h:736
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
int ret
GLenum GLsizei len
Definition: glext.h:6722
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)
Definition: cfgmgr.c:3889
#define NULL
Definition: types.h:112
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
RETURN_TYPE CONFIGRET
Definition: cfgmgr32.h:74
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
unsigned int ULONG
Definition: retypes.h:1
CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExW(_Out_ PULONG pulLen, _In_opt_ PCWSTR pszFilter, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:4020
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define HeapFree(x, y, z)
Definition: compat.h:735

Referenced by DisplayDeviceProperties().

◆ DisplayDevNodeEnumerator()

static VOID DisplayDevNodeEnumerator ( IN PDEVADVPROP_INFO  dap,
IN HWND  hwndListView 
)
static

Definition at line 1114 of file advprop.cpp.

1116 {
1118 
1119  DWORD dwType = 0;
1120  WCHAR szBuffer[256];
1121  DWORD dwSize = 256 * sizeof(WCHAR);
1122 
1123  if (dap->CurrentDeviceInfoSet != INVALID_HANDLE_VALUE)
1124  {
1125  DeviceInfoData = &dap->CurrentDeviceInfoData;
1126  }
1127  else
1128  {
1129  DeviceInfoData = &dap->DeviceInfoData;
1130  }
1131 
1134  &dwType,
1135  &szBuffer,
1136  &dwSize,
1137  0,
1138  dap->hMachine);
1139 
1140  SetListViewText(hwndListView, 0, szBuffer);
1141 }
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)
Definition: cfgmgr.c:3480
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define CM_DRP_ENUMERATOR_NAME
Definition: cfgmgr32.h:704
HWND hwndListView
Definition: eventvwr.c:66
static VOID SetListViewText(HWND hwnd, INT iItem, LPCWSTR lpText)
Definition: advprop.cpp:752
__wchar_t WCHAR
Definition: xmlstorage.h:180
_In_opt_ PSP_DEVINFO_DATA DeviceInfoData
Definition: setupapi.h:1528
unsigned long DWORD
Definition: ntddk_ex.h:95
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56

Referenced by DisplayDeviceProperties().

◆ DisplayDevNodeFlags()

static VOID DisplayDevNodeFlags ( IN PDEVADVPROP_INFO  dap,
IN HWND  hwndListView 
)
static

Definition at line 1028 of file advprop.cpp.

1030 {
1031  DWORD dwStatus = 0;
1032  DWORD dwProblem = 0;
1033  INT index;
1034 
1036  &dwProblem,
1037  dap->DeviceInfoData.DevInst,
1038  0,
1039  dap->hMachine);
1040 
1041  index = 0;
1042  swprintf(dap->szTemp, L"%08lx", dwStatus);
1043  SetListViewText(hwndListView, index++, dap->szTemp);
1045  SetListViewText(hwndListView, index++, L"DN_ROOT_ENUMERATED");
1046  if (dwStatus & DN_DRIVER_LOADED)
1047  SetListViewText(hwndListView, index++, L"DN_DRIVER_LOADED");
1048  if (dwStatus & DN_ENUM_LOADED)
1049  SetListViewText(hwndListView, index++, L"DN_ENUM_LOADED");
1050  if (dwStatus & DN_STARTED)
1051  SetListViewText(hwndListView, index++, L"DN_STARTED");
1052  if (dwStatus & DN_MANUAL)
1053  SetListViewText(hwndListView, index++, L"DN_MANUAL");
1054  if (dwStatus & DN_NEED_TO_ENUM)
1055  SetListViewText(hwndListView, index++, L"DN_NEED_TO_ENUM");
1057  SetListViewText(hwndListView, index++, L"DN_DRIVER_BLOCKED");
1058  if (dwStatus & DN_HARDWARE_ENUM)
1059  SetListViewText(hwndListView, index++, L"DN_HARDWARE_ENUM");
1060  if (dwStatus & DN_NEED_RESTART)
1061  SetListViewText(hwndListView, index++, L"DN_NEED_RESTART");
1063  SetListViewText(hwndListView, index++, L"DN_CHILD_WITH_INVALID_ID");
1064  if (dwStatus & DN_HAS_PROBLEM)
1065  SetListViewText(hwndListView, index++, L"DN_HAS_PROBLEM");
1066  if (dwStatus & DN_FILTERED)
1067  SetListViewText(hwndListView, index++, L"DN_FILTERED");
1068  if (dwStatus & DN_LEGACY_DRIVER)
1069  SetListViewText(hwndListView, index++, L"DN_LEGACY_DRIVER");
1070  if (dwStatus & DN_DISABLEABLE)
1071  SetListViewText(hwndListView, index++, L"DN_DISABLEABLE");
1072  if (dwStatus & DN_REMOVABLE)
1073  SetListViewText(hwndListView, index++, L"DN_REMOVABLE");
1075  SetListViewText(hwndListView, index++, L"DN_PRIVATE_PROBLEM");
1076  if (dwStatus & DN_MF_PARENT)
1077  SetListViewText(hwndListView, index++, L"DN_MF_PARENT");
1078  if (dwStatus & DN_MF_CHILD)
1079  SetListViewText(hwndListView, index++, L"DN_MF_CHILD");
1081  SetListViewText(hwndListView, index++, L"DN_WILL_BE_REMOVED");
1082 
1084  SetListViewText(hwndListView, index++, L"DN_NOT_FIRST_TIMEE");
1085  if (dwStatus & DN_STOP_FREE_RES)
1086  SetListViewText(hwndListView, index++, L"DN_STOP_FREE_RES");
1088  SetListViewText(hwndListView, index++, L"DN_REBAL_CANDIDATE");
1089  if (dwStatus & DN_BAD_PARTIAL)
1090  SetListViewText(hwndListView, index++, L"DN_BAD_PARTIAL");
1091  if (dwStatus & DN_NT_ENUMERATOR)
1092  SetListViewText(hwndListView, index++, L"DN_NT_ENUMERATOR");
1093  if (dwStatus & DN_NT_DRIVER)
1094  SetListViewText(hwndListView, index++, L"DN_NT_DRIVER");
1095 
1096  if (dwStatus & DN_NEEDS_LOCKING)
1097  SetListViewText(hwndListView, index++, L"DN_NEEDS_LOCKING");
1098  if (dwStatus & DN_ARM_WAKEUP)
1099  SetListViewText(hwndListView, index++, L"DN_ARM_WAKEUP");
1101  SetListViewText(hwndListView, index++, L"DN_APM_ENUMERATOR");
1102  if (dwStatus & DN_APM_DRIVER)
1103  SetListViewText(hwndListView, index++, L"DN_APM_DRIVER");
1105  SetListViewText(hwndListView, index++, L"DN_SILENT_INSTALL");
1106  if (dwStatus & DN_NO_SHOW_IN_DM)
1107  SetListViewText(hwndListView, index++, L"DN_NO_SHOW_IN_DM");
1108  if (dwStatus & DN_BOOT_LOG_PROB)
1109  SetListViewText(hwndListView, index++, L"DN_BOOT_LOG_PROB");
1110 }
CONFIGRET WINAPI CM_Get_DevNode_Status_Ex(_Out_ PULONG pulStatus, _Out_ PULONG pulProblemNumber, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:3592
#define DN_NOT_FIRST_TIMEE
Definition: cfg.h:137
#define DN_HARDWARE_ENUM
Definition: cfg.h:125
#define DN_NEED_RESTART
Definition: cfg.h:153
#define DN_ROOT_ENUMERATED
Definition: cfg.h:118
#define DN_DRIVER_BLOCKED
Definition: cfg.h:154
#define DN_ARM_WAKEUP
Definition: cfg.h:144
#define DN_NEEDS_LOCKING
Definition: cfg.h:143
#define DN_NEED_TO_ENUM
Definition: cfg.h:123
#define DN_DRIVER_LOADED
Definition: cfg.h:119
#define DN_DISABLEABLE
Definition: cfg.h:131
#define DN_MF_PARENT
Definition: cfg.h:134
int32_t INT
Definition: typedefs.h:58
#define DN_SILENT_INSTALL
Definition: cfg.h:147
#define L(x)
Definition: ntvdm.h:50
#define DN_STOP_FREE_RES
Definition: cfg.h:138
HWND hwndListView
Definition: eventvwr.c:66
#define DN_ENUM_LOADED
Definition: cfg.h:120
GLuint index
Definition: glext.h:6031
#define DN_NO_SHOW_IN_DM
Definition: cfg.h:148
static VOID SetListViewText(HWND hwnd, INT iItem, LPCWSTR lpText)
Definition: advprop.cpp:752
#define DN_PRIVATE_PROBLEM
Definition: cfg.h:133
#define DN_BAD_PARTIAL
Definition: cfg.h:140
#define DN_REMOVABLE
Definition: cfg.h:132
#define DN_HAS_PROBLEM
Definition: cfg.h:128
unsigned long DWORD
Definition: ntddk_ex.h:95
#define DN_NT_DRIVER
Definition: cfg.h:142
#define DN_NT_ENUMERATOR
Definition: cfg.h:141
#define index(s, c)
Definition: various.h:29
#define DN_APM_DRIVER
Definition: cfg.h:146
int _cdecl swprintf(const WCHAR *,...)
DWORD dwStatus
Definition: mediaobj.idl:95
#define DN_APM_ENUMERATOR
Definition: cfg.h:145
#define DN_MF_CHILD
Definition: cfg.h:135
#define DN_FILTERED
Definition: cfg.h:129
#define DN_BOOT_LOG_PROB
Definition: cfg.h:149
#define DN_LEGACY_DRIVER
Definition: cfg.h:155
#define DN_CHILD_WITH_INVALID_ID
Definition: cfg.h:156
#define DN_STARTED
Definition: cfg.h:121
#define DN_REBAL_CANDIDATE
Definition: cfg.h:139
#define DN_WILL_BE_REMOVED
Definition: cfg.h:136
#define DN_MANUAL
Definition: cfg.h:122

Referenced by DisplayDeviceProperties().

◆ DisplayMatchingDeviceId()

static VOID DisplayMatchingDeviceId ( IN PDEVADVPROP_INFO  dap,
IN HWND  hwndListView 
)
static

Definition at line 1173 of file advprop.cpp.

1175 {
1178  WCHAR szBuffer[256];
1179  HKEY hKey;
1180  DWORD dwSize;
1181  DWORD dwType;
1182 
1183  if (dap->CurrentDeviceInfoSet != INVALID_HANDLE_VALUE)
1184  {
1185  DeviceInfoSet = dap->CurrentDeviceInfoSet;
1186  DeviceInfoData = &dap->CurrentDeviceInfoData;
1187  }
1188  else
1189  {
1190  DeviceInfoSet = dap->DeviceInfoSet;
1191  DeviceInfoData = &dap->DeviceInfoData;
1192  }
1193 
1197  0,
1198  DIREG_DRV,
1199  KEY_QUERY_VALUE);
1200  if (hKey != INVALID_HANDLE_VALUE)
1201  {
1202  dwSize = 256 * sizeof(WCHAR);
1203  if (RegQueryValueEx(hKey,
1204  L"MatchingDeviceId",
1205  NULL,
1206  &dwType,
1207  (LPBYTE)szBuffer,
1208  &dwSize) == ERROR_SUCCESS)
1209  {
1210  SetListViewText(hwndListView, 0, szBuffer);
1211  }
1212 
1213  RegCloseKey(hKey);
1214  }
1215 }
#define RegQueryValueEx
Definition: winreg.h:524
#define ERROR_SUCCESS
Definition: deptool.c:10
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define L(x)
Definition: ntvdm.h:50
unsigned char * LPBYTE
Definition: typedefs.h:53
HWND hwndListView
Definition: eventvwr.c:66
static VOID SetListViewText(HWND hwnd, INT iItem, LPCWSTR lpText)
Definition: advprop.cpp:752
__wchar_t WCHAR
Definition: xmlstorage.h:180
_In_opt_ PSP_DEVINFO_DATA DeviceInfoData
Definition: setupapi.h:1528
unsigned long DWORD
Definition: ntddk_ex.h:95
HKEY WINAPI SetupDiOpenDevRegKey(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Scope, DWORD HwProfile, DWORD KeyType, REGSAM samDesired)
Definition: devinst.c:5934
#define DICS_FLAG_GLOBAL
Definition: setupapi.h:113
FxAutoRegKey hKey
#define KEY_QUERY_VALUE
Definition: nt_native.h:1016
#define NULL
Definition: types.h:112
#define DIREG_DRV
Definition: setupapi.h:182
#define RegCloseKey(hKey)
Definition: registry.h:47
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56

Referenced by DisplayDeviceProperties().

◆ DisplayPowerCapabilities()

static VOID DisplayPowerCapabilities ( IN PDEVADVPROP_INFO  dap,
IN HWND  hwndListView 
)
static

Definition at line 1591 of file advprop.cpp.

1594 {
1597  CM_POWER_DATA PowerData;
1598  DWORD dwSize, dwType;
1599  INT index = 0;
1600 
1601  if (dap->CurrentDeviceInfoSet != INVALID_HANDLE_VALUE)
1602  {
1603  DeviceInfoSet = dap->CurrentDeviceInfoSet;
1604  DeviceInfoData = &dap->CurrentDeviceInfoData;
1605  }
1606  else
1607  {
1608  DeviceInfoSet = dap->DeviceInfoSet;
1609  DeviceInfoData = &dap->DeviceInfoData;
1610  }
1611 
1612  dwSize = sizeof(CM_POWER_DATA);
1616  &dwType,
1617  (LPBYTE)&PowerData,
1618  dwSize,
1619  &dwSize))
1620  return;
1621 
1622  if (PowerData.PD_Capabilities & PDCAP_D0_SUPPORTED)
1623  SetListViewText(hwndListView, index++, L"PDCAP_D0_SUPPORTED");
1624 
1625  if (PowerData.PD_Capabilities & PDCAP_D1_SUPPORTED)
1626  SetListViewText(hwndListView, index++, L"PDCAP_D1_SUPPORTED");
1627 
1628  if (PowerData.PD_Capabilities & PDCAP_D2_SUPPORTED)
1629  SetListViewText(hwndListView, index++, L"PDCAP_D2_SUPPORTED");
1630 
1631  if (PowerData.PD_Capabilities & PDCAP_D3_SUPPORTED)
1632  SetListViewText(hwndListView, index++, L"PDCAP_D3_SUPPORTED");
1633 
1634  if (PowerData.PD_Capabilities & PDCAP_WAKE_FROM_D0_SUPPORTED)
1635  SetListViewText(hwndListView, index++, L"PDCAP_WAKE_FROM_D0_SUPPORTED");
1636 
1637  if (PowerData.PD_Capabilities & PDCAP_WAKE_FROM_D1_SUPPORTED)
1638  SetListViewText(hwndListView, index++, L"PDCAP_WAKE_FROM_D1_SUPPORTED");
1639 
1640  if (PowerData.PD_Capabilities & PDCAP_WAKE_FROM_D2_SUPPORTED)
1641  SetListViewText(hwndListView, index++, L"PDCAP_WAKE_FROM_D2_SUPPORTED");
1642 
1643  if (PowerData.PD_Capabilities & PDCAP_WAKE_FROM_D3_SUPPORTED)
1644  SetListViewText(hwndListView, index++, L"PDCAP_WAKE_FROM_D3_SUPPORTED");
1645 
1646  if (PowerData.PD_Capabilities & PDCAP_WARM_EJECT_SUPPORTED)
1647  SetListViewText(hwndListView, index++, L"PDCAP_WARM_EJECT_SUPPORTED");
1648 }
#define PDCAP_WARM_EJECT_SUPPORTED
Definition: advprop.cpp:44
#define SPDRP_DEVICE_POWER_DATA
Definition: setupapi.h:537
#define PDCAP_D1_SUPPORTED
Definition: advprop.cpp:37
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define SetupDiGetDeviceRegistryProperty
Definition: setupapi.h:2603
int32_t INT
Definition: typedefs.h:58
#define L(x)
Definition: ntvdm.h:50
unsigned char * LPBYTE
Definition: typedefs.h:53
#define PDCAP_D2_SUPPORTED
Definition: advprop.cpp:38
HWND hwndListView
Definition: eventvwr.c:66
GLuint index
Definition: glext.h:6031
#define PDCAP_D3_SUPPORTED
Definition: advprop.cpp:39
static VOID SetListViewText(HWND hwnd, INT iItem, LPCWSTR lpText)
Definition: advprop.cpp:752
_In_opt_ PSP_DEVINFO_DATA DeviceInfoData
Definition: setupapi.h:1528
unsigned long DWORD
Definition: ntddk_ex.h:95
#define PDCAP_WAKE_FROM_D1_SUPPORTED
Definition: advprop.cpp:41
struct CM_Power_Data_s CM_POWER_DATA
#define PDCAP_WAKE_FROM_D0_SUPPORTED
Definition: advprop.cpp:40
#define PDCAP_WAKE_FROM_D2_SUPPORTED
Definition: advprop.cpp:42
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
#define PDCAP_WAKE_FROM_D3_SUPPORTED
Definition: advprop.cpp:43
#define PDCAP_D0_SUPPORTED
Definition: advprop.cpp:36

Referenced by DisplayDeviceProperties().

◆ DisplayPowerStateMappings()

static VOID DisplayPowerStateMappings ( IN PDEVADVPROP_INFO  dap,
IN HWND  hwndListView 
)
static

Definition at line 1652 of file advprop.cpp.

1655 {
1658  CM_POWER_DATA PowerData;
1659  DWORD dwSize, dwType;
1660  INT i;
1662  WCHAR szSystemStateBuffer[40];
1663  WCHAR szDeviceStateBuffer[40];
1664  WCHAR szOutBuffer[100];
1665 
1666  if (dap->CurrentDeviceInfoSet != INVALID_HANDLE_VALUE)
1667  {
1668  DeviceInfoSet = dap->CurrentDeviceInfoSet;
1669  DeviceInfoData = &dap->CurrentDeviceInfoData;
1670  }
1671  else
1672  {
1673  DeviceInfoSet = dap->DeviceInfoSet;
1674  DeviceInfoData = &dap->DeviceInfoData;
1675  }
1676 
1677  dwSize = sizeof(CM_POWER_DATA);
1681  &dwType,
1682  (LPBYTE)&PowerData,
1683  dwSize,
1684  &dwSize))
1685  return;
1686 
1687  for (i = PowerSystemWorking; i < PowerSystemMaximum; i++)
1688  {
1689  PowerState = PowerData.PD_PowerStateMapping[i];
1691  {
1692  swprintf(szSystemStateBuffer, L"S%u", i - 1);
1693 
1694  switch (PowerState)
1695  {
1697  wcscpy(szDeviceStateBuffer, L"Not specified");
1698  break;
1699 
1700  case PowerDeviceD0:
1701  wcscpy(szDeviceStateBuffer, L"D0");
1702  break;
1703 
1704  case PowerDeviceD1:
1705  wcscpy(szDeviceStateBuffer, L"D1");
1706  break;
1707 
1708  case PowerDeviceD2:
1709  wcscpy(szDeviceStateBuffer, L"D2");
1710  break;
1711 
1712  case PowerDeviceD3:
1713  wcscpy(szDeviceStateBuffer, L"D3");
1714  break;
1715 
1716  default:
1717  break;
1718  }
1719 
1720  swprintf(szOutBuffer, L"%s -> %s", szSystemStateBuffer, szDeviceStateBuffer);
1721  SetListViewText(hwndListView, i, szOutBuffer);
1722  }
1723  }
1724 }
#define SPDRP_DEVICE_POWER_DATA
Definition: setupapi.h:537
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define SetupDiGetDeviceRegistryProperty
Definition: setupapi.h:2603
int32_t INT
Definition: typedefs.h:58
#define L(x)
Definition: ntvdm.h:50
unsigned char * LPBYTE
Definition: typedefs.h:53
HWND hwndListView
Definition: eventvwr.c:66
static VOID SetListViewText(HWND hwnd, INT iItem, LPCWSTR lpText)
Definition: advprop.cpp:752
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
__wchar_t WCHAR
Definition: xmlstorage.h:180
_In_opt_ PSP_DEVINFO_DATA DeviceInfoData
Definition: setupapi.h:1528
unsigned long DWORD
Definition: ntddk_ex.h:95
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
int _cdecl swprintf(const WCHAR *,...)
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
Definition: glfuncs.h:248
struct CM_Power_Data_s CM_POWER_DATA
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ WDF_DEVICE_POWER_STATE PowerState
Definition: wdfdevice.h:3032
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56

Referenced by DisplayDeviceProperties().

◆ DlgParentSubWndProc()

static LRESULT CALLBACK DlgParentSubWndProc ( IN HWND  hwnd,
IN UINT  uMsg,
IN WPARAM  wParam,
IN LPARAM  lParam 
)
static

Definition at line 2684 of file advprop.cpp.

2688 {
2689  PDEVADVPROP_INFO dap;
2690 
2691  dap = (PDEVADVPROP_INFO)GetProp(hwnd,
2692  L"DevMgrDevChangeSub");
2693  if (dap != NULL)
2694  {
2695  if (uMsg == WM_DEVICECHANGE && !IsWindowVisible(dap->hWndGeneralPage))
2696  {
2699  wParam,
2700  lParam);
2701  }
2702 
2703  /* pass the message the the old window proc */
2704  return CallWindowProc(dap->ParentOldWndProc,
2705  hwnd,
2706  uMsg,
2707  wParam,
2708  lParam);
2709  }
2710  else
2711  {
2712  /* this is not a good idea if the subclassed window was an ansi
2713  window, but we failed finding out the previous window proc
2714  so we can't use CallWindowProc. This should rarely - if ever -
2715  happen. */
2716 
2717  return DefWindowProc(hwnd,
2718  uMsg,
2719  wParam,
2720  lParam);
2721  }
2722 }
#define CallWindowProc
Definition: winuser.h:5725
#define GetProp
Definition: winuser.h:5782
struct _DEVADVPROP_INFO * PDEVADVPROP_INFO
WPARAM wParam
Definition: combotst.c:138
HWND hWndGeneralPage
Definition: properties.h:14
#define L(x)
Definition: ntvdm.h:50
#define DefWindowProc
Definition: ros2win.h:31
#define NULL
Definition: types.h:112
WNDPROC ParentOldWndProc
Definition: properties.h:16
#define WM_DEVICECHANGE
Definition: winuser.h:1801
#define SendMessage
Definition: winuser.h:5833
BOOL WINAPI IsWindowVisible(_In_ HWND)
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4022
LPARAM lParam
Definition: combotst.c:139

Referenced by AdvPropGeneralDlgProc().

◆ DriverDetailsDlgProc()

static INT_PTR CALLBACK DriverDetailsDlgProc ( IN HWND  hwndDlg,
IN UINT  uMsg,
IN WPARAM  wParam,
IN LPARAM  lParam 
)
static

Definition at line 305 of file advprop.cpp.

309 {
310  PDEVADVPROP_INFO dap;
311  INT_PTR Ret = FALSE;
312 
314 
315  if (dap != NULL || uMsg == WM_INITDIALOG)
316  {
317  switch (uMsg)
318  {
319  case WM_COMMAND:
320  {
321  switch (LOWORD(wParam))
322  {
323  case IDOK:
324  case IDCANCEL:
325  {
326  EndDialog(hwndDlg,
327  IDOK);
328  break;
329  }
330  }
331  break;
332  }
333 
334  case WM_CLOSE:
335  {
336  EndDialog(hwndDlg,
337  IDCANCEL);
338  break;
339  }
340 
341  case WM_INITDIALOG:
342  {
343  LV_COLUMN lvc;
344  HWND hDriversListView;
345  WCHAR szBuffer[260];
346 
347  dap = (PDEVADVPROP_INFO)lParam;
348  if (dap != NULL)
349  {
350  SetWindowLongPtr(hwndDlg, DWLP_USER, (DWORD_PTR)dap);
351 
352  hDriversListView = GetDlgItem(hwndDlg,
354 
355  /* add a column to the list view control */
356  lvc.mask = LVCF_FMT | LVCF_WIDTH;
357  lvc.fmt = LVCFMT_LEFT;
358  lvc.cx = 0;
359  (void)ListView_InsertColumn(hDriversListView,
360  0,
361  &lvc);
362 
363  UpdateDriverDetailsDlg(hwndDlg,
364  hDriversListView,
365  dap);
366 
367  if (ListView_GetItemCount(hDriversListView) == 0)
368  {
369  if (LoadStringW(hDllInstance, IDS_NODRIVERS, szBuffer, _countof(szBuffer)))
370  MessageBoxW(hwndDlg, szBuffer, dap->szDevName, MB_OK);
371  EndDialog(hwndDlg, IDCANCEL);
372  }
373  }
374 
375  Ret = TRUE;
376  break;
377  }
378 
379  case WM_NOTIFY:
380  {
381  LPNMHDR pnmhdr = (LPNMHDR)lParam;
382 
383  switch (pnmhdr->code)
384  {
385  case LVN_ITEMCHANGED:
386  {
388  HWND hDriversListView = GetDlgItem(hwndDlg,
390 
391  if (ListView_GetSelectedCount(hDriversListView) == 0)
392  {
393  /* nothing is selected - empty the labels */
394  SetDlgItemText(hwndDlg,
396  NULL);
397  SetDlgItemText(hwndDlg,
399  NULL);
400  SetDlgItemText(hwndDlg,
402  NULL);
403  SetDlgItemText(hwndDlg,
405  NULL);
406  }
407  else if (pnmv->uNewState != 0)
408  {
409  /* extract version info and update the labels */
410  WCHAR szDriverPath[MAX_PATH];
411 
412  ListView_GetItemText(hDriversListView,
413  pnmv->iItem,
414  pnmv->iSubItem,
415  szDriverPath,
416  MAX_PATH);
417 
419  szDriverPath);
420  }
421  }
422  }
423  break;
424  }
425  }
426  }
427 
428  return Ret;
429 }
static VOID UpdateDriverDetailsDlg(IN HWND hwndDlg, IN HWND hDriversListView, IN PDEVADVPROP_INFO dap)
Definition: advprop.cpp:81
#define IDOK
Definition: winuser.h:824
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
#define LVCF_WIDTH
Definition: commctrl.h:2587
UINT uNewState
Definition: commctrl.h:3036
struct _DEVADVPROP_INFO * PDEVADVPROP_INFO
#define TRUE
Definition: types.h:120
#define ListView_GetItemText(hwndLV, i, iSubItem_, pszText_, cchTextMax_)
Definition: commctrl.h:2684
WCHAR szDevName[255]
Definition: properties.h:57
#define LV_COLUMN
Definition: commctrl.h:2547
#define LVN_ITEMCHANGED
Definition: commctrl.h:3131
#define LVCFMT_LEFT
Definition: commctrl.h:2598
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#define IDC_DIGITALSIGNER
Definition: resource.h:244
#define IDC_FILEPROVIDER
Definition: resource.h:247
int32_t INT_PTR
Definition: typedefs.h:64
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define SetWindowLongPtr
Definition: treelist.c:70
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
WPARAM wParam
Definition: combotst.c:138
struct tagNMHDR * LPNMHDR
UINT code
Definition: winuser.h:3149
#define ListView_InsertColumn(hwnd, iCol, pcol)
Definition: commctrl.h:2636
#define ListView_GetSelectedCount(hwndLV)
Definition: commctrl.h:2709
#define FALSE
Definition: types.h:117
#define IDC_DRIVERFILES
Definition: resource.h:246
#define IDS_NODRIVERS
Definition: resource.h:123
#define ListView_GetItemCount(hwnd)
Definition: commctrl.h:2307
static HINSTANCE hDllInstance
Definition: clb.c:30
#define IDC_FILECOPYRIGHT
Definition: resource.h:249
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define _countof(array)
Definition: sndvol32.h:68
#define WM_CLOSE
Definition: winuser.h:1611
#define MAX_PATH
Definition: compat.h:34
#define SetDlgItemText
Definition: winuser.h:5839
#define IDC_FILEVERSION
Definition: resource.h:248
#define DWLP_USER
Definition: winuser.h:866
#define WM_COMMAND
Definition: winuser.h:1730
uint32_t DWORD_PTR
Definition: typedefs.h:65
#define LVCF_FMT
Definition: commctrl.h:2586
struct tagNMLISTVIEW * LPNMLISTVIEW
#define NULL
Definition: types.h:112
#define MB_OK
Definition: winuser.h:784
#define GetWindowLongPtr
Definition: treelist.c:73
#define IDCANCEL
Definition: winuser.h:825
#define WM_INITDIALOG
Definition: winuser.h:1729
LPARAM lParam
Definition: combotst.c:139
#define LOWORD(l)
Definition: pedump.c:82
#define WM_NOTIFY
Definition: richedit.h:61
static VOID UpdateDriverVersionInfoDetails(IN HWND hwndDlg, IN LPCWSTR lpszDriverPath)
Definition: advprop.cpp:186

Referenced by AdvProcDriverDlgProc().

◆ EnumDeviceDriverFilesCallback()

static UINT WINAPI EnumDeviceDriverFilesCallback ( IN PVOID  Context,
IN UINT  Notification,
IN UINT_PTR  Param1,
IN UINT_PTR  Param2 
)
static

Definition at line 60 of file advprop.cpp.

64 {
65  LVITEM li;
67 
68  li.mask = LVIF_TEXT | LVIF_STATE;
69  li.iItem = EnumDriverFilesContext->nCount++;
70  li.iSubItem = 0;
71  li.state = (li.iItem == 0 ? LVIS_SELECTED : 0);
72  li.stateMask = LVIS_SELECTED;
73  li.pszText = (LPWSTR)Param1;
74  (void)ListView_InsertItem(EnumDriverFilesContext->hDriversListView,
75  &li);
76  return NO_ERROR;
77 }
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
#define ListView_InsertItem(hwnd, pitem)
Definition: commctrl.h:2408
#define NO_ERROR
Definition: dderror.h:5
#define LVIF_TEXT
Definition: commctrl.h:2309
#define LVIS_SELECTED
Definition: commctrl.h:2319
struct _ENUMDRIVERFILES_CONTEXT * PENUMDRIVERFILES_CONTEXT
#define LVITEM
Definition: commctrl.h:2375
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define LVIF_STATE
Definition: commctrl.h:2312
LARGE_INTEGER li
Definition: fxtimerapi.cpp:235

Referenced by UpdateDriverDetailsDlg().

◆ GetSelectedUsageAction()

static UINT GetSelectedUsageAction ( IN HWND  hComboBox)
static

Definition at line 2013 of file advprop.cpp.

2014 {
2015  INT Index;
2016  UINT Ret = 0;
2017 
2018  Index = (INT)SendMessage(hComboBox,
2019  CB_GETCURSEL,
2020  0,
2021  0);
2022  if (Index != CB_ERR)
2023  {
2024  INT iRet = (INT) SendMessage(hComboBox,
2026  (WPARAM)Index,
2027  0);
2028  if (iRet != CB_ERR)
2029  {
2030  Ret = (UINT)iRet;
2031  }
2032  }
2033 
2034  return Ret;
2035 }
#define CB_GETITEMDATA
Definition: winuser.h:1940
#define INT
Definition: polytest.cpp:20
UINT_PTR WPARAM
Definition: windef.h:207
int32_t INT
Definition: typedefs.h:58
#define CB_GETCURSEL
Definition: winuser.h:1933
#define CB_ERR
Definition: winuser.h:2425
_In_ WDFCOLLECTION _In_ ULONG Index
unsigned int UINT
Definition: ndis.h:50
#define SendMessage
Definition: winuser.h:5833

Referenced by ApplyGeneralSettings().

◆ InitDevUsageActions()

static VOID InitDevUsageActions ( IN HWND  hwndDlg,
IN HWND  hComboBox,
IN PDEVADVPROP_INFO  dap 
)
static

Definition at line 1948 of file advprop.cpp.

1951 {
1952  INT Index;
1953  UINT i;
1954  UINT Actions[] =
1955  {
1958  };
1959 
1960  for (i = 0;
1961  i != sizeof(Actions) / sizeof(Actions[0]);
1962  i++)
1963  {
1964  /* fill in the device usage combo box */
1966  Actions[i],
1967  dap->szTemp,
1968  sizeof(dap->szTemp) / sizeof(dap->szTemp[0])))
1969  {
1970  Index = (INT)SendMessage(hComboBox,
1971  CB_ADDSTRING,
1972  0,
1973  (LPARAM)dap->szTemp);
1974  if (Index != CB_ERR)
1975  {
1976  SendMessage(hComboBox,
1978  (WPARAM)Index,
1979  (LPARAM)Actions[i]);
1980 
1981  switch (Actions[i])
1982  {
1983  case IDS_ENABLEDEVICE:
1984  if (dap->DeviceStarted)
1985  {
1986  SendMessage(hComboBox,
1987  CB_SETCURSEL,
1988  (WPARAM)Index,
1989  0);
1990  }
1991  break;
1992 
1993  case IDS_DISABLEDEVICE:
1994  if (!dap->DeviceStarted)
1995  {
1996  SendMessage(hComboBox,
1997  CB_SETCURSEL,
1998  (WPARAM)Index,
1999  0);
2000  }
2001  break;
2002 
2003  default:
2004  break;
2005  }
2006  }
2007  }
2008  }
2009 }
#define CB_SETITEMDATA
Definition: winuser.h:1956
#define INT
Definition: polytest.cpp:20
UINT_PTR WPARAM
Definition: windef.h:207
int32_t INT
Definition: typedefs.h:58
#define IDS_DISABLEDEVICE
Definition: resource.h:111
#define CB_ADDSTRING
Definition: winuser.h:1926
LONG_PTR LPARAM
Definition: windef.h:208
#define CB_ERR
Definition: winuser.h:2425
static HINSTANCE hDllInstance
Definition: clb.c:30
_In_ WDFCOLLECTION _In_ ULONG Index
#define CB_SETCURSEL
Definition: winuser.h:1951
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
Definition: glfuncs.h:248
unsigned int UINT
Definition: ndis.h:50
#define SendMessage
Definition: winuser.h:5833
#define IDS_ENABLEDEVICE
Definition: resource.h:110
#define LoadString
Definition: winuser.h:5809

Referenced by UpdateDevInfo().

◆ SetListViewText()

static VOID SetListViewText ( HWND  hwnd,
INT  iItem,
LPCWSTR  lpText 
)
static

Definition at line 752 of file advprop.cpp.

755 {
756  LVITEM li;
757 
758  li.mask = LVIF_TEXT | LVIF_STATE;
759  li.iItem = iItem;
760  li.iSubItem = 0;
761  li.state = 0; //(li.iItem == 0 ? LVIS_SELECTED : 0);
762  li.stateMask = LVIS_SELECTED;
763  li.pszText = (LPWSTR)lpText;
765  &li);
766 }
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
#define ListView_InsertItem(hwnd, pitem)
Definition: commctrl.h:2408
#define LVIF_TEXT
Definition: commctrl.h:2309
#define LVIS_SELECTED
Definition: commctrl.h:2319
#define LVITEM
Definition: commctrl.h:2375
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define LVIF_STATE
Definition: commctrl.h:2312
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4022
LARGE_INTEGER li
Definition: fxtimerapi.cpp:235

Referenced by DisplayClassCoinstallers(), DisplayClassProperties(), DisplayCsFlags(), DisplayCurrentPowerState(), DisplayDeviceCoinstallers(), DisplayDeviceProperties(), DisplayDevicePropertyText(), DisplayDeviceRelations(), DisplayDevNodeEnumerator(), DisplayDevNodeFlags(), DisplayMatchingDeviceId(), DisplayPowerCapabilities(), DisplayPowerStateMappings(), and UpdateDetailsDlg().

◆ UninstallDriver()

static VOID UninstallDriver ( _In_ HWND  hwndDlg,
_In_ PDEVADVPROP_INFO  dap 
)
static

Definition at line 496 of file advprop.cpp.

499 {
500  SP_REMOVEDEVICE_PARAMS RemoveDevParams;
501 
504  hwndDlg,
506  (ULONG_PTR)dap) == IDCANCEL)
507  return;
508 
509  RemoveDevParams.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
511  RemoveDevParams.Scope = DI_REMOVEDEVICE_GLOBAL;
512  RemoveDevParams.HwProfile = 0;
513 
514  SetupDiSetClassInstallParamsW(dap->DeviceInfoSet,
515  &dap->DeviceInfoData,
516  &RemoveDevParams.ClassInstallHeader,
517  sizeof(SP_REMOVEDEVICE_PARAMS));
518 
520  dap->DeviceInfoSet,
521  &dap->DeviceInfoData);
522 
523  SetupDiSetClassInstallParamsW(dap->DeviceInfoSet,
524  &dap->DeviceInfoData,
525  NULL,
526  0);
527 }
#define MAKEINTRESOURCE
Definition: winuser.h:591
BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION InstallFunction, HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData)
Definition: devinst.c:4024
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define DI_REMOVEDEVICE_GLOBAL
Definition: setupapi.h:42
static HINSTANCE hDllInstance
Definition: clb.c:30
BOOL WINAPI SetupDiSetClassInstallParamsW(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN PSP_CLASSINSTALL_HEADER ClassInstallParams OPTIONAL, IN DWORD ClassInstallParamsSize)
Definition: devclass.c:972
#define DialogBoxParam
Definition: winuser.h:5754
static INT_PTR CALLBACK UninstallDriverDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: advprop.cpp:435
#define NULL
Definition: types.h:112
struct _SP_CLASSINSTALL_HEADER SP_CLASSINSTALL_HEADER
#define DIF_REMOVE
Definition: setupapi.h:124
#define IDCANCEL
Definition: winuser.h:825
SP_CLASSINSTALL_HEADER ClassInstallHeader
Definition: setupapi.h:922
#define IDD_UNINSTALLDRIVER
Definition: resource.h:221
DI_FUNCTION InstallFunction
Definition: setupapi.h:904

Referenced by AdvProcDriverDlgProc().

◆ UninstallDriverDlgProc()

static INT_PTR CALLBACK UninstallDriverDlgProc ( IN HWND  hwndDlg,
IN UINT  uMsg,
IN WPARAM  wParam,
IN LPARAM  lParam 
)
static

Definition at line 435 of file advprop.cpp.

439 {
440  PDEVADVPROP_INFO dap;
441  INT_PTR Ret = FALSE;
442 
444 
445  if (dap != NULL || uMsg == WM_INITDIALOG)
446  {
447  switch (uMsg)
448  {
449  case WM_INITDIALOG:
450  dap = (PDEVADVPROP_INFO)lParam;
451  if (dap != NULL)
452  {
453  SetWindowLongPtr(hwndDlg, DWLP_USER, (DWORD_PTR)dap);
454 
455  /* Set the device image */
456  SendDlgItemMessage(hwndDlg,
457  IDC_DEVICON,
458  STM_SETICON,
459  (WPARAM)dap->hDevIcon,
460  0);
461 
462  /* Set the device name */
463  SetDlgItemText(hwndDlg,
464  IDC_DEVNAME,
465  dap->szDevName);
466  }
467 
468  Ret = TRUE;
469  break;
470 
471  case WM_COMMAND:
472  switch (LOWORD(wParam))
473  {
474  case IDOK:
475  EndDialog(hwndDlg, IDOK);
476  break;
477 
478  case IDCANCEL:
479  EndDialog(hwndDlg, IDCANCEL);
480  break;
481  }
482  break;
483 
484  case WM_CLOSE:
485  EndDialog(hwndDlg, IDCANCEL);
486  break;
487  }
488  }
489 
490  return Ret;
491 }
#define STM_SETICON
Definition: winuser.h:2082
#define IDOK
Definition: winuser.h:824
struct _DEVADVPROP_INFO * PDEVADVPROP_INFO
#define IDC_DEVICON
Definition: resource.h:223
#define TRUE
Definition: types.h:120
WCHAR szDevName[255]
Definition: properties.h:57
UINT_PTR WPARAM
Definition: windef.h:207
#define SendDlgItemMessage
Definition: winuser.h:5832
int32_t INT_PTR
Definition: typedefs.h:64
#define SetWindowLongPtr
Definition: treelist.c:70
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
WPARAM wParam
Definition: combotst.c:138
#define FALSE
Definition: types.h:117
#define IDC_DEVNAME
Definition: resource.h:224
#define WM_CLOSE
Definition: winuser.h:1611
#define SetDlgItemText
Definition: winuser.h:5839
#define DWLP_USER
Definition: winuser.h:866
#define WM_COMMAND
Definition: winuser.h:1730
uint32_t DWORD_PTR
Definition: typedefs.h:65
#define NULL
Definition: types.h:112
#define GetWindowLongPtr
Definition: treelist.c:73
#define IDCANCEL
Definition: winuser.h:825
#define WM_INITDIALOG
Definition: winuser.h:1729
LPARAM lParam
Definition: combotst.c:139
#define LOWORD(l)
Definition: pedump.c:82

Referenced by UninstallDriver().

◆ UpdateDetailsDlg()

static VOID UpdateDetailsDlg ( IN HWND  hwndDlg,
IN PDEVADVPROP_INFO  dap 
)
static

Definition at line 770 of file advprop.cpp.

772 {
773  HWND hwndComboBox;
775  LV_COLUMN lvc;
776  RECT rcClient;
777 
778  UINT i;
779  UINT Properties[] =
780  {
805  };
806 
807 
808  /* set the device image */
809  SendDlgItemMessage(hwndDlg,
810  IDC_DEVICON,
811  STM_SETICON,
812  (WPARAM)dap->hDevIcon,
813  0);
814 
815  /* set the device name edit control text */
816  SetDlgItemText(hwndDlg,
817  IDC_DEVNAME,
818  dap->szDevName);
819 
820 
821  hwndComboBox = GetDlgItem(hwndDlg,
823 
824  hwndListView = GetDlgItem(hwndDlg,
826 
827  for (i = 0; i != sizeof(Properties) / sizeof(Properties[0]); i++)
828  {
829  /* fill in the device usage combo box */
831  Properties[i],
832  dap->szTemp,
833  sizeof(dap->szTemp) / sizeof(dap->szTemp[0])))
834  {
835  SendMessage(hwndComboBox,
836  CB_ADDSTRING,
837  0,
838  (LPARAM)dap->szTemp);
839  }
840  }
841 
842 
844  &rcClient);
845 
846  /* add a column to the list view control */
847  lvc.mask = LVCF_FMT | LVCF_WIDTH;
848  lvc.fmt = LVCFMT_LEFT;
849  lvc.cx = rcClient.right;
851  0,
852  &lvc);
853 
854  SendMessage(hwndComboBox,
855  CB_SETCURSEL,
856  0,
857  0);
858 
859  SetListViewText(hwndListView, 0, dap->szDeviceID);
860 
861  SetFocus(hwndComboBox);
862 }
#define IDS_PROP_HARDWAREIDS
Definition: resource.h:190
#define STM_SETICON
Definition: winuser.h:2082
#define IDC_DETAILSPROPVALUE
Definition: resource.h:251
#define IDS_PROP_FIRMWAREREVISION
Definition: resource.h:209
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
#define LVCF_WIDTH
Definition: commctrl.h:2587
#define IDC_DEVICON
Definition: resource.h:223
#define IDS_PROP_COMPATIBLEIDS
Definition: resource.h:191
#define LV_COLUMN
Definition: commctrl.h:2547
#define LVCFMT_LEFT
Definition: commctrl.h:2598
HWND WINAPI SetFocus(_In_opt_ HWND)
#define IDS_PROP_CLASSLOWERFILTERS
Definition: resource.h:205
UINT_PTR WPARAM
Definition: windef.h:207
#define IDS_PROP_CONFIGFLAGS
Definition: resource.h:197
#define SendDlgItemMessage
Definition: winuser.h:5832
LONG right
Definition: windef.h:308
#define IDS_PROP_DEVLOWERFILTERS
Definition: resource.h:203
#define ListView_InsertColumn(hwnd, iCol, pcol)
Definition: commctrl.h:2636
#define IDS_PROP_DEVICEID
Definition: resource.h:189
#define IDS_PROP_POWERSTATEMAPPINGS
Definition: resource.h:212
#define IDC_DETAILSPROPNAME
Definition: resource.h:250
#define CB_ADDSTRING
Definition: winuser.h:1926
HWND hwndListView
Definition: eventvwr.c:66
LONG_PTR LPARAM
Definition: windef.h:208
#define IDC_DEVNAME
Definition: resource.h:224
static HINSTANCE hDllInstance
Definition: clb.c:30
#define IDS_PROP_DEVICECOINSTALLER
Definition: resource.h:208
static VOID SetListViewText(HWND hwnd, INT iItem, LPCWSTR lpText)
Definition: advprop.cpp:752
#define IDS_PROP_REMOVALRELATIONS
Definition: resource.h:200
#define IDS_PROP_POWERCAPABILITIES
Definition: resource.h:211
#define IDS_PROP_DEVUPPERFILTERS
Definition: resource.h:202
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDS_PROP_BUSRELATIONS
Definition: resource.h:201
#define SetDlgItemText
Definition: winuser.h:5839
#define IDS_PROP_ENUMERATOR
Definition: resource.h:194
#define IDS_PROP_MATCHINGDEVICEID
Definition: resource.h:192
#define IDS_PROP_EJECTIONRELATIONS
Definition: resource.h:199
#define CB_SETCURSEL
Definition: winuser.h:1951
#define IDS_PROP_DEVNODEFLAGS
Definition: resource.h:196
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define LVCF_FMT
Definition: commctrl.h:2586
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
Definition: glfuncs.h:248
unsigned int UINT
Definition: ndis.h:50
#define IDS_PROP_CLASSCOINSTALLER
Definition: resource.h:207
#define IDS_PROP_CSCONFIGFLAGS
Definition: resource.h:198
#define SendMessage
Definition: winuser.h:5833
#define IDS_PROP_SERVICE
Definition: resource.h:193
#define IDS_PROP_CURRENTPOWERSTATE
Definition: resource.h:210
#define IDS_PROP_CLASSINSTALLER
Definition: resource.h:206
#define IDS_PROP_CLASSUPPERFILTERS
Definition: resource.h:204
#define LoadString
Definition: winuser.h:5809
#define IDS_PROP_CAPABILITIES
Definition: resource.h:195

Referenced by AdvProcDetailsDlgProc().

◆ UpdateDevInfo()

static VOID UpdateDevInfo ( IN HWND  hwndDlg,
IN PDEVADVPROP_INFO  dap,
IN BOOL  ReOpen 
)
static

Definition at line 2106 of file advprop.cpp.

2109 {
2110  HWND hDevUsage, hPropSheetDlg, hDevProbBtn;
2111  CONFIGRET cr;
2112  ULONG Status, ProblemNumber;
2113  SP_DEVINSTALL_PARAMS_W InstallParams;
2114  UINT TroubleShootStrId = IDS_TROUBLESHOOTDEV;
2115  BOOL bFlag, bDevActionAvailable = TRUE;
2116  BOOL bDrvInstalled = FALSE;
2117  DWORD iPage;
2120  PROPSHEETHEADER psh;
2121  DWORD nDriverPages = 0;
2122  BOOL RecalcPages = FALSE;
2123 
2124  hPropSheetDlg = GetParent(hwndDlg);
2125 
2126  if (dap->PageInitialized)
2127  {
2128  /* switch to the General page */
2129  PropSheet_SetCurSelByID(hPropSheetDlg,
2131 
2132  /* remove and destroy the existing device property sheet pages */
2133  if (dap->DevPropSheets != NULL)
2134  {
2135  for (iPage = 0;
2136  iPage != dap->nDevPropSheets;
2137  iPage++)
2138  {
2139  if (dap->DevPropSheets[iPage] != NULL)
2140  {
2141  PropSheet_RemovePage(hPropSheetDlg,
2142  (WPARAM) -1,
2143  dap->DevPropSheets[iPage]);
2144  RecalcPages = TRUE;
2145  }
2146  }
2147  }
2148  }
2149 
2150  iPage = 0;
2151 
2152  if (dap->FreeDevPropSheets)
2153  {
2154  /* don't free the array if it's the one allocated in
2155  DisplayDeviceAdvancedProperties */
2157  0,
2158  dap->DevPropSheets);
2159 
2160  dap->FreeDevPropSheets = FALSE;
2161  }
2162 
2163  dap->DevPropSheets = NULL;
2164  dap->nDevPropSheets = 0;
2165 
2166  if (ReOpen)
2167  {
2168  /* create a new device info set and re-open the device */
2169  if (dap->CurrentDeviceInfoSet != INVALID_HANDLE_VALUE)
2170  {
2171  SetupDiDestroyDeviceInfoList(dap->CurrentDeviceInfoSet);
2172  }
2173 
2174  dap->ParentDevInst = 0;
2175  dap->CurrentDeviceInfoSet = SetupDiCreateDeviceInfoListEx(NULL,
2176  hwndDlg,
2177  dap->lpMachineName,
2178  NULL);
2179  if (dap->CurrentDeviceInfoSet != INVALID_HANDLE_VALUE)
2180  {
2181  if (SetupDiOpenDeviceInfo(dap->CurrentDeviceInfoSet,
2182  dap->szDeviceID,
2183  hwndDlg,
2184  0,
2185  &dap->CurrentDeviceInfoData))
2186  {
2187  if (dap->CloseDevInst)
2188  {
2189  SetupDiDestroyDeviceInfoList(dap->DeviceInfoSet);
2190  }
2191 
2192  dap->CloseDevInst = TRUE;
2193  dap->DeviceInfoSet = dap->CurrentDeviceInfoSet;
2194  dap->DeviceInfoData = dap->CurrentDeviceInfoData;
2195  dap->CurrentDeviceInfoSet = INVALID_HANDLE_VALUE;
2196  }
2197  else
2198  goto GetParentNode;
2199  }
2200  else
2201  {
2202 GetParentNode:
2203  /* get the parent node from the initial devinst */
2204  CM_Get_Parent_Ex(&dap->ParentDevInst,
2205  dap->DeviceInfoData.DevInst,
2206  0,
2207  dap->hMachine);
2208  }
2209 
2210  if (dap->CurrentDeviceInfoSet != INVALID_HANDLE_VALUE)
2211  {
2212  DeviceInfoSet = dap->CurrentDeviceInfoSet;
2213  DeviceInfoData = &dap->CurrentDeviceInfoData;
2214  }
2215  else
2216  {
2217  DeviceInfoSet = dap->DeviceInfoSet;
2218  DeviceInfoData = &dap->DeviceInfoData;
2219  }
2220  }
2221  else
2222  {
2223  DeviceInfoSet = dap->DeviceInfoSet;
2224  DeviceInfoData = &dap->DeviceInfoData;
2225  }
2226 
2227  dap->HasDriverPage = TRUE;
2228  dap->HasResourcePage = TRUE;
2229  dap->HasPowerPage = TRUE;
2231  dap->hMachine,
2232  &bDrvInstalled) &&
2233  bDrvInstalled)
2234  {
2235  if (SetupDiCallClassInstaller((dap->ShowRemotePages ?
2238  DeviceInfoSet,
2239  DeviceInfoData))
2240  {
2241  /* get install params */
2242  InstallParams.cbSize = sizeof(SP_DEVINSTALL_PARAMS_W);
2245  &InstallParams))
2246  {
2247  /* zero the flags */
2248  InstallParams.Flags = 0;
2249  InstallParams.FlagsEx = 0;
2250  }
2251 
2252  dap->HasDriverPage = !(InstallParams.Flags & DI_DRIVERPAGE_ADDED);
2253  dap->HasResourcePage = !(InstallParams.Flags & DI_RESOURCEPAGE_ADDED);
2254  dap->HasPowerPage = !(InstallParams.FlagsEx & DI_FLAGSEX_POWERPAGE_ADDED);
2255  }
2256  }
2257 
2258  /* get the device icon */
2259  if (dap->hDevIcon != NULL)
2260  {
2261  DestroyIcon(dap->hDevIcon);
2262  dap->hDevIcon = NULL;
2263  }
2265  &dap->hDevIcon,
2266  NULL))
2267  {
2268  dap->hDevIcon = NULL;
2269  }
2270 
2271  /* get the device name */
2274  dap->szDevName,
2275  sizeof(dap->szDevName) / sizeof(dap->szDevName[0])))
2276  {
2277  PropSheet_SetTitle(hPropSheetDlg,
2278  PSH_PROPTITLE,
2279  dap->szDevName);
2280  }
2281 
2282  /* set the device image */
2283  SendDlgItemMessage(hwndDlg,
2284  IDC_DEVICON,
2285  STM_SETICON,
2286  (WPARAM)dap->hDevIcon,
2287  0);
2288 
2289  /* set the device name edit control text */
2290  SetDlgItemText(hwndDlg,
2291  IDC_DEVNAME,
2292  dap->szDevName);
2293 
2294  /* set the device type edit control text */
2296  dap->szTemp,
2297  sizeof(dap->szTemp) / sizeof(dap->szTemp[0])))
2298  {
2299  SetDlgItemText(hwndDlg,
2300  IDC_DEVTYPE,
2301  dap->szTemp);
2302  }
2303 
2304  /* set the device manufacturer edit control text */
2307  dap->szTemp,
2308  sizeof(dap->szTemp) / sizeof(dap->szTemp[0])))
2309  {
2310  SetDlgItemText(hwndDlg,
2312  dap->szTemp);
2313  }
2314 
2315  /* set the device location edit control text */
2318  dap->ParentDevInst,
2319  dap->szTemp,
2320  sizeof(dap->szTemp) / sizeof(dap->szTemp[0])))
2321  {
2322  SetDlgItemText(hwndDlg,
2324  dap->szTemp);
2325  }
2326 
2327  /* set the device status edit control text */
2329  dap->hMachine,
2330  dap->szTemp,
2331  sizeof(dap->szTemp) / sizeof(dap->szTemp[0])))
2332  {
2333  SetDlgItemText(hwndDlg,
2334  IDC_DEVSTATUS,
2335  dap->szTemp);
2336  }
2337 
2338  /* set the device troubleshoot button text and disable it if necessary */
2339  hDevProbBtn = GetDlgItem(hwndDlg,
2340  IDC_DEVPROBLEM);
2342  &ProblemNumber,
2344  0,
2345  dap->hMachine);
2346  if (cr == CR_SUCCESS && (Status & DN_HAS_PROBLEM))
2347  {
2348  switch (ProblemNumber)
2349  {
2351  {
2352  /* FIXME - only if it's not a root bus devloader,
2353  disable the button otherwise */
2354  TroubleShootStrId = IDS_UPDATEDRV;
2355  break;
2356  }
2357 
2358  case CM_PROB_OUT_OF_MEMORY:
2361  case CM_PROB_FAILED_START:
2362  case CM_PROB_LIAR:
2364  {
2365  TroubleShootStrId = IDS_UPDATEDRV;
2366  break;
2367  }
2368 
2371  case CM_PROB_REENUMERATION:
2372  {
2373  /* FIXME - Troubleshoot conflict */
2374  break;
2375  }
2376 
2377  case CM_PROB_FAILED_FILTER:
2378  case CM_PROB_REINSTALL:
2380  {
2381  TroubleShootStrId = IDS_REINSTALLDRV;
2382  break;
2383  }
2384 
2386  {
2387  /* FIXME - 4 cases:
2388  1) if it's a missing system devloader:
2389  - disable the button (Reinstall Driver)
2390  2) if it's not a system devloader but still missing:
2391  - Reinstall Driver
2392  3) if it's not a system devloader but the file can be found:
2393  - Update Driver
2394  4) if it's a missing or empty software key
2395  - Update Driver
2396  */
2397  break;
2398  }
2399 
2400  case CM_PROB_INVALID_DATA:
2407  case CM_PROB_PHANTOM:
2408  bDevActionAvailable = FALSE;
2409  break;
2410 
2411  case CM_PROB_NOT_VERIFIED:
2413  /* FIXME - search hardware */
2414  break;
2415 
2416  case CM_PROB_NEED_RESTART:
2418  case CM_PROB_MOVED:
2419  case CM_PROB_TOO_EARLY:
2421  TroubleShootStrId = IDS_REBOOT;
2422  break;
2423 
2424  case CM_PROB_REGISTRY:
2425  /* FIXME - check registry? */
2426  break;
2427 
2428  case CM_PROB_DISABLED:
2429  /* if device was disabled by the user: */
2430  TroubleShootStrId = IDS_ENABLEDEV;
2431  /* FIXME - otherwise disable button because the device was
2432  disabled by the system*/
2433  break;
2434 
2436  /* FIXME - if it's a graphics adapter:
2437  - if it's a a secondary adapter and the main adapter
2438  couldn't be found
2439  - disable button
2440  - else
2441  - Properties
2442  - else
2443  - Update driver
2444  */
2445  break;
2446 
2447  case CM_PROB_FAILED_ADD:
2448  TroubleShootStrId = IDS_PROPERTIES;
2449  break;
2450  }
2451  }
2452 
2454  TroubleShootStrId,
2455  dap->szTemp,
2456  sizeof(dap->szTemp) / sizeof(dap->szTemp[0])) != 0)
2457  {
2458  SetWindowText(hDevProbBtn,
2459  dap->szTemp);
2460  }
2461  EnableWindow(hDevProbBtn,
2462  dap->IsAdmin && bDevActionAvailable);
2463 
2464  /* check if the device can be enabled/disabled */
2465  hDevUsage = GetDlgItem(hwndDlg,
2466  IDC_DEVUSAGE);
2467 
2468  dap->CanDisable = FALSE;
2469  dap->DeviceStarted = FALSE;
2470 
2472  dap->hMachine,
2473  &bFlag))
2474  {
2475  dap->CanDisable = bFlag;
2476  }
2477 
2479  dap->hMachine,
2480  &bFlag))
2481  {
2482  dap->DeviceStarted = bFlag;
2483  }
2484 
2485  /* enable/disable the device usage controls */
2486  EnableWindow(GetDlgItem(hwndDlg,
2488  dap->CanDisable && dap->IsAdmin);
2489  EnableWindow(hDevUsage,
2490  dap->CanDisable && dap->IsAdmin);
2491 
2492  /* clear the combobox */
2493  SendMessage(hDevUsage,
2495  0,
2496  0);
2497  if (dap->CanDisable)
2498  {
2499  InitDevUsageActions(hwndDlg,
2500  hDevUsage,
2501  dap);
2502  }
2503 
2504  /* find out how many new device property sheets to add.
2505  fake a PROPSHEETHEADER structure, we don't plan to
2506  call PropertySheet again!*/
2507  psh.dwSize = sizeof(PROPSHEETHEADER);
2508  psh.dwFlags = 0;
2509  psh.nPages = 0;
2510 
2511  /* get the number of device property sheets for the device */
2514  &psh,
2515  0,
2516  &nDriverPages,
2517  dap->PropertySheetType) &&
2518  nDriverPages != 0 && GetLastError() == ERROR_INSUFFICIENT_BUFFER)
2519  {
2520  dap->nDevPropSheets += nDriverPages;
2521  }
2522  else
2523  {
2524  nDriverPages = 0;
2525  }
2526 
2527  dap->pResourceList = GetResourceList(dap->szDeviceID);
2528 
2529  /* include the driver page */
2530  if (dap->HasDriverPage)
2531  dap->nDevPropSheets++;
2532 
2533  /* include the details page */
2534  if (dap->Extended)
2535  dap->nDevPropSheets++;
2536 
2537  if (dap->HasResourcePage && dap->pResourceList != NULL)
2538  dap->nDevPropSheets++;
2539 
2540  /* add the device property sheets */
2541  if (dap->nDevPropSheets != 0)
2542  {
2543  dap->DevPropSheets = (HPROPSHEETPAGE *)HeapAlloc(GetProcessHeap(),
2545  dap->nDevPropSheets * sizeof(HPROPSHEETPAGE));
2546  if (dap->DevPropSheets != NULL)
2547  {
2548  if (nDriverPages != 0)
2549  {
2550  psh.phpage = dap->DevPropSheets;
2551 
2552  /* query the device property sheet pages to add */
2555  &psh,
2556  dap->nDevPropSheets,
2557  NULL,
2558  dap->PropertySheetType))
2559  {
2560  /* add the property sheets */
2561  for (iPage = 0;
2562  iPage < nDriverPages;
2563  iPage++)
2564  {
2565  if (PropSheet_AddPage(hPropSheetDlg,
2566  dap->DevPropSheets[iPage]))
2567  {
2568  RecalcPages = TRUE;
2569  }
2570  }
2571 
2572  dap->FreeDevPropSheets = TRUE;
2573  }
2574  else
2575  {
2576  /* cleanup, we were unable to get the device property sheets */
2577  iPage = nDriverPages;
2578  dap->nDevPropSheets -= nDriverPages;
2579  nDriverPages = 0;
2580  }
2581  }
2582  else
2583  iPage = 0;
2584 
2585  /* add the driver page if necessary */
2586  if (dap->HasDriverPage)
2587  {
2588  PROPSHEETPAGE pspDriver = {0};
2589  pspDriver.dwSize = sizeof(PROPSHEETPAGE);
2590  pspDriver.dwFlags = PSP_DEFAULT;
2591  pspDriver.hInstance = hDllInstance;
2592  pspDriver.pszTemplate = (LPCWSTR)MAKEINTRESOURCE(IDD_DEVICEDRIVER);
2593  pspDriver.pfnDlgProc = AdvProcDriverDlgProc;
2594  pspDriver.lParam = (LPARAM)dap;
2595  dap->DevPropSheets[iPage] = dap->pCreatePropertySheetPageW(&pspDriver);
2596  if (dap->DevPropSheets[iPage] != NULL)
2597  {
2598  if (PropSheet_AddPage(hPropSheetDlg,
2599  dap->DevPropSheets[iPage]))
2600  {
2601  iPage++;
2602  RecalcPages = TRUE;
2603  }
2604  else
2605  {
2606  dap->pDestroyPropertySheetPage(dap->DevPropSheets[iPage]);
2607  dap->DevPropSheets[iPage] = NULL;
2608  }
2609  }
2610  }
2611 
2612  if (dap->Extended)
2613  {
2614  /* Add the details page */
2615  PROPSHEETPAGE pspDetails = {0};
2616  pspDetails.dwSize = sizeof(PROPSHEETPAGE);
2617  pspDetails.dwFlags = PSP_DEFAULT;
2618  pspDetails.hInstance = hDllInstance;
2619  pspDetails.pszTemplate = (LPCWSTR)MAKEINTRESOURCE(IDD_DEVICEDETAILS);
2620  pspDetails.pfnDlgProc = AdvProcDetailsDlgProc;
2621  pspDetails.lParam = (LPARAM)dap;
2622  dap->DevPropSheets[iPage] = dap->pCreatePropertySheetPageW(&pspDetails);
2623  if (dap->DevPropSheets[iPage] != NULL)
2624  {
2625  if (PropSheet_AddPage(hPropSheetDlg,
2626  dap->DevPropSheets[iPage]))
2627  {
2628  iPage++;
2629  RecalcPages = TRUE;
2630  }
2631  else
2632  {
2633  dap->pDestroyPropertySheetPage(dap->DevPropSheets[iPage]);
2634  dap->DevPropSheets[iPage] = NULL;
2635  }
2636  }
2637  }
2638 
2639  if (dap->HasResourcePage && dap->pResourceList)
2640  {
2641  PROPSHEETPAGE pspDriver = {0};
2642  pspDriver.dwSize = sizeof(PROPSHEETPAGE);
2643  pspDriver.dwFlags = PSP_DEFAULT;
2644  pspDriver.hInstance = hDllInstance;
2645  pspDriver.pszTemplate = (LPCWSTR)MAKEINTRESOURCE(IDD_DEVICERESOURCES);
2646  pspDriver.pfnDlgProc = ResourcesProcDriverDlgProc;
2647  pspDriver.lParam = (LPARAM)dap;
2648  dap->DevPropSheets[iPage] = dap->pCreatePropertySheetPageW(&pspDriver);
2649  if (dap->DevPropSheets[iPage] != NULL)
2650  {
2651  if (PropSheet_AddPage(hPropSheetDlg,
2652  dap->DevPropSheets[iPage]))
2653  {
2654  iPage++;
2655  RecalcPages = TRUE;
2656  }
2657  else
2658  {
2659  dap->pDestroyPropertySheetPage(dap->DevPropSheets[iPage]);
2660  dap->DevPropSheets[iPage] = NULL;
2661  }
2662  }
2663  }
2664  /* FIXME: Add the power page */
2665  }
2666  else
2667  dap->nDevPropSheets = 0;
2668  }
2669 
2670  if (RecalcPages)
2671  {
2672  PropSheet_RecalcPageSizes(hPropSheetDlg);
2673  }
2674 
2675  /* finally, disable the apply button */
2676  PropSheet_UnChanged(hPropSheetDlg,
2677  hwndDlg);
2678  dap->DeviceUsageChanged = FALSE;
2679 }
CONFIGRET WINAPI CM_Get_DevNode_Status_Ex(_Out_ PULONG pulStatus, _Out_ PULONG pulProblemNumber, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:3592
#define STM_SETICON
Definition: winuser.h:2082
#define MAKEINTRESOURCE
Definition: winuser.h:591
#define IDS_TROUBLESHOOTDEV
Definition: resource.h:115
#define CM_PROB_REENUMERATION
Definition: cfg.h:45
INT_PTR CALLBACK ResourcesProcDriverDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: hwresource.cpp:316
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
#define IDC_DEVICON
Definition: resource.h:223
#define IDD_DEVICERESOURCES
Definition: resource.h:217
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2022
#define TRUE
Definition: types.h:120
#define CM_PROB_NOT_VERIFIED
Definition: cfg.h:43
#define CM_PROB_PHANTOM
Definition: cfg.h:75
#define CM_PROB_LACKED_ARBITRATOR
Definition: cfg.h:35
#define DIF_ADDREMOTEPROPERTYPAGE_ADVANCED
Definition: setupapi.h:159
BOOL IsDriverInstalled(IN DEVINST DevInst, IN HMACHINE hMachine, OUT BOOL *Installed)
Definition: misc.cpp:759
#define CM_PROB_OUT_OF_MEMORY
Definition: cfg.h:33
#define IDD_DEVICEDRIVER
Definition: resource.h:216
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1040
BOOL GetDeviceDescriptionString(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, OUT LPWSTR szBuffer, IN DWORD BufferSize)
Definition: misc.cpp:880
BOOL GetDeviceTypeString(IN PSP_DEVINFO_DATA DeviceInfoData, OUT LPWSTR szBuffer, IN DWORD BufferSize)
Definition: misc.cpp:849
#define CM_PROB_FAILED_START
Definition: cfg.h:40
static INT_PTR CALLBACK AdvProcDriverDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: advprop.cpp:678
UINT_PTR WPARAM
Definition: windef.h:207
BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION InstallFunction, HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData)
Definition: devinst.c:4024
#define SendDlgItemMessage
Definition: winuser.h:5832
#define IDS_PROPERTIES
Definition: resource.h:101
BOOL CanDisableDevice(IN DEVINST DevInst, IN HMACHINE hMachine, OUT BOOL *CanDisable)
Definition: misc.cpp:711
#define PropSheet_RemovePage(d, i, p)
Definition: prsht.h:351
#define DI_DRIVERPAGE_ADDED
Definition: setupapi.h:71
#define CM_PROB_WILL_BE_REMOVED
Definition: cfg.h:51
#define PropSheet_RecalcPageSizes(d)
Definition: prsht.h:359
#define PropSheet_AddPage(d, p)
Definition: prsht.h:341
#define DI_FLAGSEX_POWERPAGE_ADDED
Definition: setupapi.h:100
#define CM_PROB_PARTIAL_LOG_CONF
Definition: cfg.h:46
#define IDC_DEVLOCATION
Definition: resource.h:227
#define CM_PROB_DISABLED
Definition: cfg.h:52
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
#define IDD_DEVICEGENERAL
Definition: resource.h:215
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
#define CM_PROB_INVALID_DATA
Definition: cfg.h:39
BOOL WINAPI SetupDiGetDeviceInstallParamsW(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, OUT PSP_DEVINSTALL_PARAMS_W DeviceInstallParams)
Definition: devinst.c:4451
#define CR_SUCCESS
Definition: cfgmgr32.h:842
BOOL GetDeviceLocationString(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, IN DEVINST dnParentDevInst OPTIONAL, OUT LPWSTR szBuffer, IN DWORD BufferSize)
Definition: misc.cpp:318
#define IDS_REBOOT
Definition: resource.h:120
#define PROPSHEETHEADER
Definition: prsht.h:392
#define CM_PROB_NORMAL_CONFLICT
Definition: cfg.h:42
#define DIF_ADDPROPERTYPAGE_ADVANCED
Definition: setupapi.h:154
LONG_PTR LPARAM
Definition: windef.h:208
#define IDC_DEVNAME
Definition: resource.h:224
#define SetupDiCreateDeviceInfoListEx
Definition: setupapi.h:2580
#define CB_RESETCONTENT
Definition: winuser.h:1949
BOOL IsDeviceStarted(IN DEVINST DevInst, IN HMACHINE hMachine, OUT BOOL *IsStarted)
Definition: misc.cpp:735
static HINSTANCE hDllInstance
Definition: clb.c:30
#define CM_PROB_DEVLOADER_NOT_FOUND
Definition: cfg.h:38
Status
Definition: gdiplustypes.h:24
#define CM_PROB_LIAR
Definition: cfg.h:41
#define PSP_DEFAULT
Definition: prsht.h:22
#define CM_PROB_HARDWARE_DISABLED
Definition: cfg.h:59
#define GetProcessHeap()
Definition: compat.h:736
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
PVOID GetResourceList(LPWSTR pszDeviceID)
Definition: hwresource.cpp:357
#define PropSheet_UnChanged(d, w)
Definition: prsht.h:358
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define PSH_PROPTITLE
Definition: prsht.h:40
#define IDC_DEVUSAGELABEL
Definition: resource.h:239
#define CM_PROB_DISABLED_SERVICE
Definition: cfg.h:62
#define IDC_DEVSTATUS
Definition: resource.h:229
BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO devinfo)
Definition: devinst.c:2893
#define CM_PROB_TRANSLATION_FAILED
Definition: cfg.h:63
#define DN_HAS_PROBLEM
Definition: cfg.h:128
_In_opt_ PSP_DEVINFO_DATA DeviceInfoData
Definition: setupapi.h:1528
#define IDC_DEVTYPE
Definition: resource.h:225
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetDlgItemText
Definition: winuser.h:5839
BOOL GetDeviceManufacturerString(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, OUT LPWSTR szBuffer, IN DWORD BufferSize)
Definition: misc.cpp:281
#define DI_RESOURCEPAGE_ADDED
Definition: setupapi.h:59
#define CM_PROB_CANT_SHARE_IRQ
Definition: cfg.h:60
#define CM_PROB_REINSTALL
Definition: cfg.h:48
#define PropSheet_SetCurSelByID(d, i)
Definition: prsht.h:354
#define IDD_DEVICEDETAILS
Definition: resource.h:219
#define IDS_UPDATEDRV
Definition: resource.h:118
#define IDS_REINSTALLDRV
Definition: resource.h:119
#define IDC_DEVUSAGE
Definition: resource.h:230
#define CM_PROB_UNKNOWN_RESOURCE
Definition: cfg.h:47
#define CM_PROB_NEED_RESTART
Definition: cfg.h:44
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define IDC_DEVPROBLEM
Definition: resource.h:240
HWND WINAPI GetParent(_In_ HWND)
#define CM_PROB_TOO_EARLY
Definition: cfg.h:56
#define CM_PROB_DEVLOADER_NOT_READY
Definition: cfg.h:53
#define SetupDiGetClassDevPropertySheets
Definition: setupapi.h:2592
#define IDC_DEVMANUFACTURER
Definition: resource.h:226
static INT_PTR CALLBACK AdvProcDetailsDlgProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
Definition: advprop.cpp:1886
#define CM_PROB_DEVICE_NOT_THERE
Definition: cfg.h:54
#define SetWindowText
Definition: winuser.h:5847
unsigned int UINT
Definition: ndis.h:50
#define NULL
Definition: types.h:112
#define CM_PROB_SYSTEM_SHUTDOWN
Definition: cfg.h:76
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
RETURN_TYPE CONFIGRET
Definition: cfgmgr32.h:74
#define CM_PROB_FAILED_INSTALL
Definition: cfg.h:58
struct _SP_DEVINSTALL_PARAMS_W SP_DEVINSTALL_PARAMS_W
#define SendMessage
Definition: winuser.h:5833
#define CM_PROB_MOVED
Definition: cfg.h:55
unsigned int ULONG
Definition: retypes.h:1
static VOID InitDevUsageActions(IN HWND hwndDlg, IN HWND hComboBox, IN PDEVADVPROP_INFO dap)
Definition: advprop.cpp:1948
#define CM_PROB_FAILED_FILTER
Definition: cfg.h:37
#define CM_PROB_BOOT_CONFIG_CONFLICT
Definition: cfg.h:36
BOOL GetDeviceStatusString(IN DEVINST DevInst, IN HMACHINE hMachine, OUT LPWSTR szBuffer, IN DWORD BufferSize)
Definition: misc.cpp:443
#define IDS_ENABLEDEV
Definition: resource.h:116
#define CM_PROB_ENTRY_IS_WRONG_TYPE
Definition: cfg.h:34
#define CM_PROB_FAILED_ADD
Definition: cfg.h:61
CONFIGRET WINAPI CM_Get_Parent_Ex(_Out_ PDEVINST pdnDevInst, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine)
Definition: cfgmgr.c:5315
#define PropSheet_SetTitle(d, w, s)
Definition: prsht.h:356
BOOL WINAPI SetupDiLoadClassIcon(IN CONST GUID *ClassGuid, OUT HICON *LargeIcon OPTIONAL, OUT PINT MiniIconIndex OPTIONAL)
Definition: devclass.c:658
#define SetupDiOpenDeviceInfo
Definition: setupapi.h:2614
#define CM_PROB_DEVLOADER_FAILED
Definition: cfg.h:32
#define HeapFree(x, y, z)
Definition: compat.h:735
#define CM_PROB_REGISTRY
Definition: cfg.h:49
#define LoadString
Definition: winuser.h:5809
#define PROPSHEETPAGE
Definition: prsht.h:389
#define CM_PROB_NO_VALID_LOG_CONF
Definition: cfg.h:57
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10

Referenced by AdvPropGeneralDlgProc().

◆ UpdateDriver()

static VOID UpdateDriver ( IN HWND  hwndDlg,
IN PDEVADVPROP_INFO  dap 
)
static

Definition at line 532 of file advprop.cpp.

535 {
537  HANDLE hToken;
538  DWORD dwReboot;
540 
541  // Better use InstallDevInst:
542  // BOOL
543  // WINAPI
544  // InstallDevInst(
545  // HWND hWnd,
546  // LPWSTR wszDeviceId,
547  // BOOL bUpdate,
548  // DWORD *dwReboot);
549  // See: http://comp.os.ms-windows.programmer.win32.narkive.com/J8FTd4KK/signature-of-undocumented-installdevinstex
550 
551  if (!InstallDevInst(hwndDlg, dap->szDeviceID, TRUE, &dwReboot))
552  return;
553 
554  if (NeedReboot == FALSE)
555  return;
556 
557  //FIXME: load text from resource file
558  if (MessageBoxW(hwndDlg, L"Reboot now?", L"Reboot required", MB_YESNO | MB_ICONQUESTION) != IDYES)
559  return;
560 
562  {
563  ERR("OpenProcessToken failed\n");
564  return;
565  }
566 
567  /* Get the LUID for the Shutdown privilege */
568  if (!LookupPrivilegeValueW(NULL, SE_SHUTDOWN_NAME, &Privileges.Privileges[0].Luid))
569  {
570  ERR("LookupPrivilegeValue failed\n");
571  CloseHandle(hToken);
572  return;
573  }
574 
575  /* Assign the Shutdown privilege to our process */
576  Privileges.PrivilegeCount = 1;
577  Privileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
578 
579  if (!AdjustTokenPrivileges(hToken, FALSE, &Privileges, 0, NULL, NULL))
580  {
581  ERR("AdjustTokenPrivileges failed\n");
582  CloseHandle(hToken);
583  return;
584  }
585 
586  /* Finally shut down the system */
587  if (!ExitWindowsEx(EWX_REBOOT, SHTDN_REASON_MAJOR_OTHER | SHTDN_REASON_MINOR_OTHER | SHTDN_REASON_FLAG_PLANNED))
588  {
589  ERR("ExitWindowsEx failed\n");
590  CloseHandle(hToken);
591  }
592 }
BOOL WINAPI NeedReboot(DWORD dwRebootCheck)
Definition: advpack.c:311
#define CloseHandle
Definition: compat.h:739
BOOL WINAPI LookupPrivilegeValueW(LPCWSTR lpSystemName, LPCWSTR lpPrivilegeName, PLUID lpLuid)
Definition: misc.c:782
#define IDYES
Definition: winuser.h:829
#define TRUE
Definition: types.h:120
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#define EWX_REBOOT
Definition: winuser.h:633
#define SE_PRIVILEGE_ENABLED
Definition: setypes.h:63
#define L(x)
Definition: ntvdm.h:50
#define FALSE
Definition: types.h:117
#define MB_YESNO
Definition: winuser.h:811
unsigned int BOOL
Definition: ntddk_ex.h:94
#define MB_ICONQUESTION
Definition: winuser.h:783
unsigned long DWORD
Definition: ntddk_ex.h:95
BOOL WINAPI InstallDevInst(IN HWND hWndParent, IN LPCWSTR InstanceId, IN BOOL bUpdate, OUT LPDWORD lpReboot)
Definition: stubs.cpp:24
_In_ PSECURITY_SUBJECT_CONTEXT _In_ BOOLEAN _In_ ACCESS_MASK _In_ ACCESS_MASK _Outptr_opt_ PPRIVILEGE_SET * Privileges
Definition: sefuncs.h:13
#define GetCurrentProcess()
Definition: compat.h:759
BOOL WINAPI ExitWindowsEx(_In_ UINT, _In_ DWORD)
BOOL WINAPI AdjustTokenPrivileges(HANDLE TokenHandle, BOOL DisableAllPrivileges, PTOKEN_PRIVILEGES NewState, DWORD BufferLength, PTOKEN_PRIVILEGES PreviousState, PDWORD ReturnLength)
Definition: security.c:376
#define ERR(fmt,...)
Definition: debug.h:110
#define NULL
Definition: types.h:112
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
Definition: security.c:296
#define SE_SHUTDOWN_NAME
Definition: winnt_old.h:384
#define TOKEN_ADJUST_PRIVILEGES
Definition: setypes.h:926

Referenced by AdvProcDriverDlgProc().

◆ UpdateDriverDetailsDlg()

static VOID UpdateDriverDetailsDlg ( IN HWND  hwndDlg,
IN HWND  hDriversListView,
IN PDEVADVPROP_INFO  dap 
)
static

Definition at line 81 of file advprop.cpp.

84 {
87  SP_DRVINFO_DATA DriverInfoData;
88  ENUMDRIVERFILES_CONTEXT EnumDriverFilesContext;
89 
90  if (dap->CurrentDeviceInfoSet != INVALID_HANDLE_VALUE)
91  {
92  DeviceInfoSet = dap->CurrentDeviceInfoSet;
93  DeviceInfoData = &dap->CurrentDeviceInfoData;
94  }
95  else
96  {
97  DeviceInfoSet = dap->DeviceInfoSet;
98  DeviceInfoData = &dap->DeviceInfoData;
99  }
100 
101  /* set the device image */
102  SendDlgItemMessage(hwndDlg,
103  IDC_DEVICON,
104  STM_SETICON,
105  (WPARAM)dap->hDevIcon,
106  0);
107 
108  /* set the device name edit control text */
109  SetDlgItemText(hwndDlg,
110  IDC_DEVNAME,
111  dap->szDevName);
112 
113  /* fill the driver files list view */
114  EnumDriverFilesContext.hDriversListView = hDriversListView;
115  EnumDriverFilesContext.nCount = 0;
116 
117  (void)ListView_DeleteAllItems(EnumDriverFilesContext.hDriversListView);
118  DriverInfoData.cbSize = sizeof(SP_DRVINFO_DATA);
121  &DriverInfoData) &&
124  &DriverInfoData))
125  {
126  HSPFILEQ queueHandle;
127 
128  queueHandle = SetupOpenFileQueue();
129  if (queueHandle != (HSPFILEQ)INVALID_HANDLE_VALUE)
130  {
132  DeviceInstallParams.cbSize = sizeof(SP_DEVINSTALL_PARAMS);
136  {
137  DeviceInstallParams.FileQueue = queueHandle;
138  DeviceInstallParams.Flags |= DI_NOVCP;
139 
146  {
147  DWORD scanResult;
148  RECT rcClient;
149  LVCOLUMN lvc;
150 
151  /* enumerate the driver files */
152  SetupScanFileQueue(queueHandle,
154  NULL,
156  &EnumDriverFilesContext,
157  &scanResult);
158 
159  /* update the list view column width */
160  GetClientRect(hDriversListView,
161  &rcClient);
162  lvc.mask = LVCF_WIDTH;
163  lvc.cx = rcClient.right;
164  (void)ListView_SetColumn(hDriversListView,
165  0,
166  &lvc);
167 
168  /* highlight the first item from list */
169  if (ListView_GetSelectedCount(hDriversListView) != 0)
170  {
171  ListView_SetItemState(hDriversListView,
172  0,
175  }
176  }
177  }
178 
179  SetupCloseFileQueue(queueHandle);
180  }
181  }
182 }
#define SetupDiSetSelectedDriver
Definition: setupapi.h:2622
#define ListView_SetColumn(hwnd, iCol, pcol)
Definition: commctrl.h:2629
#define STM_SETICON
Definition: winuser.h:2082
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
#define LVCF_WIDTH
Definition: commctrl.h:2587
#define IDC_DEVICON
Definition: resource.h:223
#define SetupDiGetDeviceInstallParams
Definition: setupapi.h:2599
HSPFILEQ WINAPI SetupOpenFileQueue(VOID)
Definition: fileqsup.c:161
BOOL FindCurrentDriver(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData, OUT PSP_DRVINFO_DATA DriverInfoData)
Definition: misc.cpp:924
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
UINT_PTR WPARAM
Definition: windef.h:207
BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION InstallFunction, HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData)
Definition: devinst.c:4024
#define SendDlgItemMessage
Definition: winuser.h:5832
LONG right
Definition: windef.h:308