ReactOS  0.4.12-dev-918-g6c6e7b8
hwresource.cpp File Reference
#include "precomp.h"
#include "properties.h"
#include "resource.h"
#include <pshpack4.h>
#include <poppack.h>
Include dependency graph for hwresource.cpp:

Go to the source code of this file.

Classes

struct  HARDWARE_RESOURCE_DATA
 
struct  _CM_PARTIAL_RESOURCE_DESCRIPTOR
 
struct  _CM_PARTIAL_RESOURCE_LIST
 
struct  _CM_FULL_RESOURCE_DESCRIPTOR
 
struct  _CM_RESOURCE_LIST
 

Macros

#define CmResourceTypeNull   0
 
#define CmResourceTypePort   1
 
#define CmResourceTypeInterrupt   2
 
#define CmResourceTypeMemory   3
 
#define CmResourceTypeDma   4
 
#define CmResourceTypeDeviceSpecific   5
 
#define CmResourceTypeBusNumber   6
 
#define CmResourceTypeNonArbitrated   128
 
#define CmResourceTypeConfigData   128
 
#define CmResourceTypeDevicePrivate   129
 
#define CmResourceTypePcCardConfig   130
 
#define CmResourceTypeMfCardConfig   131
 
#define CX_TYPECOLUMN_WIDTH   120
 

Typedefs

typedef struct HARDWARE_RESOURCE_DATAPHARDWARE_RESOURCE_DATA
 
typedef LARGE_INTEGER PHYSICAL_ADDRESS
 
typedef LARGE_INTEGERPPHYSICAL_ADDRESS
 
typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR CM_PARTIAL_RESOURCE_DESCRIPTOR
 
typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTORPCM_PARTIAL_RESOURCE_DESCRIPTOR
 
typedef struct _CM_PARTIAL_RESOURCE_LIST CM_PARTIAL_RESOURCE_LIST
 
typedef struct _CM_PARTIAL_RESOURCE_LISTPCM_PARTIAL_RESOURCE_LIST
 
typedef enum _INTERFACE_TYPE INTERFACE_TYPE
 
typedef enum _INTERFACE_TYPEPINTERFACE_TYPE
 
typedef struct _CM_FULL_RESOURCE_DESCRIPTOR CM_FULL_RESOURCE_DESCRIPTOR
 
typedef struct _CM_FULL_RESOURCE_DESCRIPTORPCM_FULL_RESOURCE_DESCRIPTOR
 
typedef struct _CM_RESOURCE_LIST CM_RESOURCE_LIST
 
typedef struct _CM_RESOURCE_LISTPCM_RESOURCE_LIST
 

Enumerations

enum  _INTERFACE_TYPE {
  InterfaceTypeUndefined = -1, Internal, Isa, Eisa,
  MicroChannel, TurboChannel, PCIBus, VMEBus,
  NuBus, PCMCIABus, CBus, MPIBus,
  MPSABus, ProcessorInternal, InternalPowerBus, PNPISABus,
  PNPBus, Vmcs, MaximumInterfaceType, InterfaceTypeUndefined = -1,
  Internal, Isa, Eisa, MicroChannel,
  TurboChannel, PCIBus, VMEBus, NuBus,
  PCMCIABus, CBus, MPIBus, MPSABus,
  ProcessorInternal, InternalPowerBus, PNPISABus, PNPBus,
  Vmcs, MaximumInterfaceType, InterfaceTypeUndefined = -1, Internal,
  Isa, Eisa, MicroChannel, TurboChannel,
  PCIBus, VMEBus, NuBus, PCMCIABus,
  CBus, MPIBus, MPSABus, ProcessorInternal,
  InternalPowerBus, PNPISABus, PNPBus, Vmcs,
  MaximumInterfaceType
}
 

Functions

static VOID InitializeDevicesList (IN HWND hWndDevList)
 
VOID InsertListItem (IN HWND hWndDevList, IN INT ItemCount, IN LPWSTR ResourceType, IN LPWSTR ResourceDescription)
 
VOID AddResourceItems (IN PDEVADVPROP_INFO dap, IN HWND hWndDevList)
 
static VOID UpdateDriverResourceDlg (IN HWND hwndDlg, IN PDEVADVPROP_INFO dap)
 
INT_PTR CALLBACK ResourcesProcDriverDlgProc (IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam)
 

Macro Definition Documentation

◆ CmResourceTypeBusNumber

#define CmResourceTypeBusNumber   6

Definition at line 128 of file hwresource.cpp.

◆ CmResourceTypeConfigData

#define CmResourceTypeConfigData   128

Definition at line 130 of file hwresource.cpp.

◆ CmResourceTypeDevicePrivate

#define CmResourceTypeDevicePrivate   129

Definition at line 131 of file hwresource.cpp.

◆ CmResourceTypeDeviceSpecific

#define CmResourceTypeDeviceSpecific   5

Definition at line 127 of file hwresource.cpp.

◆ CmResourceTypeDma

#define CmResourceTypeDma   4

Definition at line 126 of file hwresource.cpp.

◆ CmResourceTypeInterrupt

#define CmResourceTypeInterrupt   2

Definition at line 124 of file hwresource.cpp.

◆ CmResourceTypeMemory

#define CmResourceTypeMemory   3

Definition at line 125 of file hwresource.cpp.

◆ CmResourceTypeMfCardConfig

#define CmResourceTypeMfCardConfig   131

Definition at line 133 of file hwresource.cpp.

◆ CmResourceTypeNonArbitrated

#define CmResourceTypeNonArbitrated   128

Definition at line 129 of file hwresource.cpp.

◆ CmResourceTypeNull

#define CmResourceTypeNull   0

Definition at line 122 of file hwresource.cpp.

◆ CmResourceTypePcCardConfig

#define CmResourceTypePcCardConfig   130

Definition at line 132 of file hwresource.cpp.

◆ CmResourceTypePort

#define CmResourceTypePort   1

Definition at line 123 of file hwresource.cpp.

◆ CX_TYPECOLUMN_WIDTH

#define CX_TYPECOLUMN_WIDTH   120

Definition at line 169 of file hwresource.cpp.

Typedef Documentation

◆ CM_FULL_RESOURCE_DESCRIPTOR

◆ CM_PARTIAL_RESOURCE_DESCRIPTOR

◆ CM_PARTIAL_RESOURCE_LIST

◆ CM_RESOURCE_LIST

◆ INTERFACE_TYPE

◆ PCM_FULL_RESOURCE_DESCRIPTOR

◆ PCM_PARTIAL_RESOURCE_DESCRIPTOR

◆ PCM_PARTIAL_RESOURCE_LIST

◆ PCM_RESOURCE_LIST

◆ PHARDWARE_RESOURCE_DATA

◆ PHYSICAL_ADDRESS

Definition at line 24 of file hwresource.cpp.

◆ PINTERFACE_TYPE

◆ PPHYSICAL_ADDRESS

Definition at line 24 of file hwresource.cpp.

Enumeration Type Documentation

◆ _INTERFACE_TYPE

Enumerator
InterfaceTypeUndefined 
Internal 
Isa 
Eisa 
MicroChannel 
TurboChannel 
PCIBus 
VMEBus 
NuBus 
PCMCIABus 
CBus 
MPIBus 
MPSABus 
ProcessorInternal 
InternalPowerBus 
PNPISABus 
PNPBus 
Vmcs 
MaximumInterfaceType 
InterfaceTypeUndefined 
Internal 
Isa 
Eisa 
MicroChannel 
TurboChannel 
PCIBus 
VMEBus 
NuBus 
PCMCIABus 
CBus 
MPIBus 
MPSABus 
ProcessorInternal 
InternalPowerBus 
PNPISABus 
PNPBus 
Vmcs 
MaximumInterfaceType 
InterfaceTypeUndefined 
Internal 
Isa 
Eisa 
MicroChannel 
TurboChannel 
PCIBus 
VMEBus 
NuBus 
PCMCIABus 
CBus 
MPIBus 
MPSABus 
ProcessorInternal 
InternalPowerBus 
PNPISABus 
PNPBus 
Vmcs 
MaximumInterfaceType 

Definition at line 135 of file hwresource.cpp.

Function Documentation

◆ AddResourceItems()

VOID AddResourceItems ( IN PDEVADVPROP_INFO  dap,
IN HWND  hWndDevList 
)

Definition at line 243 of file hwresource.cpp.

246 {
247  HKEY hKey;
248  WCHAR szBuffer[100];
249  WCHAR szDetail[100];
250  BYTE szData[512];
251  DWORD dwSize;
253  LONG Result;
254  ULONG ItemCount = 0, Index;
255 
256  wsprintf(szBuffer, L"SYSTEM\\CurrentControlSet\\Enum\\%s\\LogConf", dap->szDeviceID);
257  Result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, szBuffer, 0, KEY_READ, &hKey);
258  if (Result != ERROR_SUCCESS)
259  {
260  /* failed to open device instance log conf dir */
261  return;
262  }
263 
264  dwSize = sizeof(szData);
265  Result = RegQueryValueExW(hKey, L"BootConfig", NULL, NULL, szData, &dwSize);
266 
267  RegCloseKey(hKey);
268  if (Result != ERROR_SUCCESS)
269  {
270  /* failed to query resources */
271  return;
272  }
273 
275 
276  for (Index = 0; Index < ResourceList->List[0].PartialResourceList.Count; Index++)
277  {
278  PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor = &ResourceList->List[0].PartialResourceList.PartialDescriptors[Index];
279  if (Descriptor->Type == CmResourceTypeInterrupt)
280  {
281  if (LoadString(hDllInstance, IDS_RESOURCE_INTERRUPT, szBuffer, sizeof(szBuffer) / sizeof(szBuffer[0])))
282  {
283  wsprintf(szDetail, L"0x%08x (%d)", Descriptor->u.Interrupt.Level, Descriptor->u.Interrupt.Vector);
284  InsertListItem(hWndDevList, ItemCount, szBuffer, szDetail);
285  ItemCount++;
286  }
287  }
288  else if (Descriptor->Type == CmResourceTypePort)
289  {
290  if (LoadString(hDllInstance, IDS_RESOURCE_PORT, szBuffer, sizeof(szBuffer) / sizeof(szBuffer[0])))
291  {
292  wsprintf(szDetail, L"%08lx - %08lx", Descriptor->u.Port.Start.LowPart, Descriptor->u.Port.Start.LowPart + Descriptor->u.Port.Length - 1);
293  InsertListItem(hWndDevList, ItemCount, szBuffer, szDetail);
294  ItemCount++;
295  }
296  }
297  else if (Descriptor->Type == CmResourceTypeMemory)
298  {
299  if (LoadString(hDllInstance, IDS_RESOURCE_MEMORY_RANGE, szBuffer, sizeof(szBuffer) / sizeof(szBuffer[0])))
300  {
301  wsprintf(szDetail, L"%08I64x - %08I64x", Descriptor->u.Memory.Start.QuadPart, Descriptor->u.Memory.Start.QuadPart + Descriptor->u.Memory.Length - 1);
302  InsertListItem(hWndDevList, ItemCount, szBuffer, szDetail);
303  ItemCount++;
304  }
305  }
306  else if (Descriptor->Type == CmResourceTypeDma)
307  {
308  if (LoadString(hDllInstance, IDS_RESOURCE_DMA, szBuffer, sizeof(szBuffer) / sizeof(szBuffer[0])))
309  {
310  wsprintf(szDetail, L"%08ld", Descriptor->u.Dma.Channel);
311  InsertListItem(hWndDevList, ItemCount, szBuffer, szDetail);
312  ItemCount++;
313  }
314  }
315  }
316 }
struct _CM_RESOURCE_LIST * PCM_RESOURCE_LIST
#define ERROR_SUCCESS
Definition: deptool.c:10
#define KEY_READ
Definition: nt_native.h:1023
static const WCHAR szData[]
Definition: msipriv.h:1195
const MUI_LANGUAGE_RESOURCE ResourceList[]
Definition: muilanguages.h:414
#define CmResourceTypePort
Definition: hwresource.cpp:123
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
long LONG
Definition: pedump.c:60
#define IDS_RESOURCE_MEMORY_RANGE
Definition: resource.h:123
smooth NULL
Definition: ftsmooth.c:416
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:426
static HINSTANCE hDllInstance
Definition: clb.c:30
VOID InsertListItem(IN HWND hWndDevList, IN INT ItemCount, IN LPWSTR ResourceType, IN LPWSTR ResourceDescription)
Definition: hwresource.cpp:217
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4134
__wchar_t WCHAR
Definition: xmlstorage.h:180
static const UCHAR Index[8]
Definition: usbohci.c:18
unsigned long DWORD
Definition: ntddk_ex.h:95
#define IDS_RESOURCE_INTERRUPT
Definition: resource.h:124
static const WCHAR L[]
Definition: oid.c:1250
unsigned char BYTE
Definition: mem.h:68
#define CmResourceTypeInterrupt
Definition: hwresource.cpp:124
#define IDS_RESOURCE_PORT
Definition: resource.h:126
unsigned int ULONG
Definition: retypes.h:1
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3381
#define CmResourceTypeMemory
Definition: hwresource.cpp:125
#define IDS_RESOURCE_DMA
Definition: resource.h:125
#define wsprintf
Definition: winuser.h:5731
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:54
#define LoadString
Definition: winuser.h:5685
#define CmResourceTypeDma
Definition: hwresource.cpp:126
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
_In_ PSTORAGE_PROPERTY_ID _Outptr_ PSTORAGE_DESCRIPTOR_HEADER * Descriptor
Definition: classpnp.h:966

Referenced by ResourcesProcDriverDlgProc().

◆ InitializeDevicesList()

static VOID InitializeDevicesList ( IN HWND  hWndDevList)
static

Definition at line 172 of file hwresource.cpp.

174 {
175  LVCOLUMN lvc;
176  RECT rcClient;
177  WCHAR szColName[255];
178  int iCol = 0;
179 
180  /* set the list view style */
183 
184  GetClientRect(hWndDevList,
185  &rcClient);
186 
187  /* add the list view columns */
188  lvc.mask = LVCF_TEXT | LVCF_WIDTH;
189  lvc.fmt = LVCFMT_LEFT;
190  lvc.pszText = szColName;
191 
194  szColName,
195  sizeof(szColName) / sizeof(szColName[0])))
196  {
197  lvc.cx = CX_TYPECOLUMN_WIDTH;
198  (void)ListView_InsertColumn(hWndDevList,
199  iCol++,
200  &lvc);
201  }
204  szColName,
205  sizeof(szColName) / sizeof(szColName[0])))
206  {
207  lvc.cx = rcClient.right - CX_TYPECOLUMN_WIDTH -
209 
210  (void)ListView_InsertColumn(hWndDevList,
211  iCol++,
212  &lvc);
213  }
214 }
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:2559
#define LVCF_TEXT
Definition: commctrl.h:2560
#define LVS_EX_FULLROWSELECT
Definition: commctrl.h:2706
#define LVCFMT_LEFT
Definition: commctrl.h:2570
LONG right
Definition: windef.h:293
#define LVCOLUMN
Definition: commctrl.h:2553
#define ListView_InsertColumn(hwnd, iCol, pcol)
Definition: commctrl.h:2608
static HINSTANCE hDllInstance
Definition: clb.c:30
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define CX_TYPECOLUMN_WIDTH
Definition: hwresource.cpp:169
int WINAPI GetSystemMetrics(_In_ int)
#define ListView_SetExtendedListViewStyle(hwndLV, dw)
Definition: commctrl.h:2697
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define SM_CXVSCROLL
Definition: winuser.h:951
#define IDS_RESOURCE_COLUMN
Definition: resource.h:121
#define LoadString
Definition: winuser.h:5685
#define IDS_SETTING_COLUMN
Definition: resource.h:122

Referenced by ResourcesProcDriverDlgProc().

◆ InsertListItem()

VOID InsertListItem ( IN HWND  hWndDevList,
IN INT  ItemCount,
IN LPWSTR  ResourceType,
IN LPWSTR  ResourceDescription 
)

Definition at line 217 of file hwresource.cpp.

222 {
223  INT iItem;
224  LVITEM li = {0};
225 
226  li.mask = LVIF_STATE | LVIF_TEXT;
227  li.iItem = ItemCount;
228  li.pszText = ResourceType;
229  //li.iImage = ClassDevInfo->ImageIndex;
230  iItem = ListView_InsertItem(hWndDevList, &li);
231 
232  if (iItem != -1)
233  {
234  li.mask = LVIF_TEXT;
235  li.iItem = iItem;
236  li.iSubItem = 1;
237  li.pszText = ResourceDescription;
238  (void)ListView_SetItem(hWndDevList, &li);
239  }
240 }
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
#define ListView_SetItem(hwnd, pitem)
Definition: commctrl.h:2373
#define ListView_InsertItem(hwnd, pitem)
Definition: commctrl.h:2380
int32_t INT
Definition: typedefs.h:56
#define LVIF_TEXT
Definition: commctrl.h:2281
#define LVITEM
Definition: commctrl.h:2347
#define LVIF_STATE
Definition: commctrl.h:2284

Referenced by AddResourceItems().

◆ ResourcesProcDriverDlgProc()

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

Definition at line 338 of file hwresource.cpp.

342 {
343  PDEVADVPROP_INFO hpd;
344  HWND hWndDevList;
345  INT_PTR Ret = FALSE;
346 
348 
349  if (hpd != NULL || uMsg == WM_INITDIALOG)
350  {
351  switch (uMsg)
352  {
353  case WM_INITDIALOG:
354  {
355  /* init list */
356  hWndDevList = GetDlgItem(hwndDlg, IDC_DRIVERRESOURCES);
357  InitializeDevicesList(hWndDevList);
358 
360  if (hpd != NULL)
361  {
362  SetWindowLongPtr(hwndDlg, DWLP_USER, (DWORD_PTR)hpd);
363 
364  UpdateDriverResourceDlg(hwndDlg, hpd);
365  AddResourceItems(hpd, hWndDevList);
366  }
367 
368  Ret = TRUE;
369  break;
370  }
371  }
372  }
373 
374  return Ret;
375 }
#define TRUE
Definition: types.h:120
struct _DEVADVPROP_INFO * PDEVADVPROP_INFO
int32_t INT_PTR
Definition: typedefs.h:62
#define SetWindowLongPtr
Definition: treelist.c:70
static VOID InitializeDevicesList(IN HWND hWndDevList)
Definition: hwresource.cpp:172
#define IDC_DRIVERRESOURCES
Definition: resource.h:249
#define LPPROPSHEETPAGE
Definition: prsht.h:372
smooth NULL
Definition: ftsmooth.c:416
VOID AddResourceItems(IN PDEVADVPROP_INFO dap, IN HWND hWndDevList)
Definition: hwresource.cpp:243
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
static VOID UpdateDriverResourceDlg(IN HWND hwndDlg, IN PDEVADVPROP_INFO dap)
Definition: hwresource.cpp:320
#define DWLP_USER
Definition: winuser.h:866
uint32_t DWORD_PTR
Definition: typedefs.h:63
#define GetWindowLongPtr
Definition: treelist.c:73
#define WM_INITDIALOG
Definition: winuser.h:1715
LPARAM lParam
Definition: combotst.c:139

Referenced by UpdateDevInfo().

◆ UpdateDriverResourceDlg()

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

Definition at line 320 of file hwresource.cpp.

322 {
323  /* set the device image */
324  SendDlgItemMessage(hwndDlg,
325  IDC_DEVICON,
326  STM_SETICON,
327  (WPARAM)dap->hDevIcon,
328  0);
329 
330  /* set the device name edit control text */
331  SetDlgItemText(hwndDlg,
332  IDC_DEVNAME,
333  dap->szDevName);
334 }
#define STM_SETICON
Definition: winuser.h:2053
#define IDC_DEVICON
Definition: resource.h:219
UINT_PTR WPARAM
Definition: windef.h:207
#define SendDlgItemMessage
Definition: winuser.h:5708
#define IDC_DEVNAME
Definition: resource.h:220
#define SetDlgItemText
Definition: winuser.h:5715

Referenced by ResourcesProcDriverDlgProc().