implemented the general device information page
Modified: trunk/reactos/lib/devmgr/En.rc
Modified: trunk/reactos/lib/devmgr/advprop.c
Modified: trunk/reactos/lib/devmgr/hwpage.c
Modified: trunk/reactos/lib/devmgr/misc.c
Modified: trunk/reactos/lib/devmgr/precomp.h
Modified: trunk/reactos/lib/devmgr/resource.h
_____
Modified: trunk/reactos/lib/devmgr/En.rc
--- trunk/reactos/lib/devmgr/En.rc 2005-11-26 16:54:15 UTC (rev
19645)
+++ trunk/reactos/lib/devmgr/En.rc 2005-11-26 16:54:56 UTC (rev
19646)
@@ -29,3 +29,23 @@
BS_PUSHBUTTON | WS_CHILD | WS_DISABLED | WS_TABSTOP
PUSHBUTTON "P&roperties",IDC_PROPERTIES,146,140,50,14
END
+
+IDD_DEVICEGENERAL DIALOG DISCARDABLE 0, 0, 252, 218
+STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
+CAPTION "General"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ ICON "", IDC_DEVICON, 7, 7, 20, 20
+ LTEXT "", IDC_DEVNAME, 37, 9, 174, 16, SS_NOPREFIX
+ LTEXT "Device type:", -1, 37, 39, 60, 8, SS_NOPREFIX
+ EDITTEXT IDC_DEVTYPE, 100, 39, 146, 12, NOT WS_TABSTOP | NOT
WS_BORDER | ES_AUTOHSCROLL | ES_READONLY
+ LTEXT "Manufacturer:", -1, 37, 53, 60, 8, SS_NOPREFIX
+ EDITTEXT IDC_DEVMANUFACTURER, 100, 53, 145, 12, NOT WS_TABSTOP |
NOT WS_BORDER | ES_AUTOHSCROLL | ES_READONLY
+ LTEXT "Location:", -1, 37, 67, 60, 8, SS_NOPREFIX
+ EDITTEXT IDC_DEVLOCATION, 100, 67, 145, 12, NOT WS_TABSTOP | NOT
WS_BORDER | ES_AUTOHSCROLL | ES_READONLY
+ GROUPBOX "Device status", IDC_DEVSTATUSGROUP, 7, 83, 238, 100
+ EDITTEXT IDC_DEVSTATUS, 14, 96, 224, 61, NOT WS_TABSTOP |
ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL
+ PUSHBUTTON "&Troubleshoot...", IDC_TROUBLESHOOT, 148, 163, 90, 15
+ LTEXT "&Device usage:", -1, 7, 188, 222, 8
+ COMBOBOX IDC_DEVUSAGE, 7, 198, 239, 40, CBS_DROPDOWN | WS_VSCROLL
+END
_____
Modified: trunk/reactos/lib/devmgr/advprop.c
--- trunk/reactos/lib/devmgr/advprop.c 2005-11-26 16:54:15 UTC (rev
19645)
+++ trunk/reactos/lib/devmgr/advprop.c 2005-11-26 16:54:56 UTC (rev
19646)
@@ -31,41 +31,205 @@
#include <debug.h>
typedef INT_PTR (WINAPI *PPROPERTYSHEETW)(LPCPROPSHEETHEADERW);
+typedef HPROPSHEETPAGE (WINAPI
*PCREATEPROPERTYSHEETPAGEW)(LPCPROPSHEETPAGEW);
+typedef BOOL (WINAPI *PDESTROYPROPERTYSHEETPAGE)(HPROPSHEETPAGE);
+typedef struct _DEVADVPROP_INFO
+{
+ HDEVINFO DeviceInfoSet;
+ PSP_DEVINFO_DATA DeviceInfoData;
+ HINSTANCE hComCtl32;
+ WCHAR szDevName[255];
+ WCHAR szTemp[255];
+} DEVADVPROP_INFO, *PDEVADVPROP_INFO;
+
+
+static INT_PTR
+CALLBACK
+AdvPropGeneralDlgProc(IN HWND hwndDlg,
+ IN UINT uMsg,
+ IN WPARAM wParam,
+ IN LPARAM lParam)
+{
+ PDEVADVPROP_INFO dap;
+
+ dap = (PDEVADVPROP_INFO)GetWindowLongPtr(hwndDlg,
+ DWL_USER);
+
+ if (dap != NULL || uMsg == WM_INITDIALOG)
+ {
+ switch (uMsg)
+ {
+ case WM_INITDIALOG:
+ {
+ dap =
(PDEVADVPROP_INFO)((LPPROPSHEETPAGE)lParam)->lParam;
+ if (dap != NULL)
+ {
+ HICON hIcon;
+
+ SetWindowLongPtr(hwndDlg,
+ DWL_USER,
+ (DWORD_PTR)dap);
+
+ /* set the device image */
+ if
(SetupDiLoadClassIcon(&dap->DeviceInfoData->ClassGuid,
+ &hIcon,
+ NULL))
+ {
+ SendDlgItemMessage(hwndDlg,
+ IDC_DEVICON,
+ STM_SETICON,
+ (WPARAM)hIcon,
+ 0);
+ }
+
+ /* set the device name edit control text */
+ SetDlgItemText(hwndDlg,
+ IDC_DEVNAME,
+ dap->szDevName);
+
+ /* set the device type edit control text */
+ if (GetDeviceTypeString(dap->DeviceInfoData,
+ dap->szTemp,
+ sizeof(dap->szTemp) /
sizeof(dap->szTemp[0])))
+ {
+ SetDlgItemText(hwndDlg,
+ IDC_DEVTYPE,
+ dap->szTemp);
+ }
+
+ /* set the device manufacturer edit control text */
+ if (GetDeviceManufacturerString(dap->DeviceInfoSet,
+
dap->DeviceInfoData,
+ dap->szTemp,
+ sizeof(dap->szTemp)
/ sizeof(dap->szTemp[0])))
+ {
+ SetDlgItemText(hwndDlg,
+ IDC_DEVMANUFACTURER,
+ dap->szTemp);
+ }
+
+ /* set the device location edit control text */
+ if
(GetDeviceLocationString(dap->DeviceInfoData->DevInst,
+ dap->szTemp,
+ sizeof(dap->szTemp) /
sizeof(dap->szTemp[0])))
+ {
+ SetDlgItemText(hwndDlg,
+ IDC_DEVLOCATION,
+ dap->szTemp);
+ }
+
+ /* set the device status edit control text */
+ if (GetDeviceStatusString(dap->DeviceInfoSet,
+ dap->DeviceInfoData,
+ dap->szTemp,
+ sizeof(dap->szTemp) /
sizeof(dap->szTemp[0])))
+ {
+ SetDlgItemText(hwndDlg,
+ IDC_DEVSTATUS,
+ dap->szTemp);
+ }
+ }
+ break;
+ }
+
+ case WM_DESTROY:
+ {
+ HICON hDevIcon;
+
+ /* destroy the device icon */
+ hDevIcon = (HICON)SendDlgItemMessage(hwndDlg,
+ IDC_DEVICON,
+ STM_GETICON,
+ 0,
+ 0);
+ if (hDevIcon != NULL)
+ {
+ DestroyIcon(hDevIcon);
+ }
+ break;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+
INT_PTR
DisplayDeviceAdvancedProperties(IN HWND hWndParent,
IN HDEVINFO DeviceInfoSet,
IN PSP_DEVINFO_DATA DeviceInfoData,
IN HINSTANCE hComCtl32)
{
- WCHAR szDevName[255];
DWORD RegDataType;
PROPSHEETHEADER psh = {0};
+ PROPSHEETPAGE pspGeneral = {0};
DWORD nPropSheets = 0;
+ DWORD nDevSheetsStart = 0;
PPROPERTYSHEETW pPropertySheetW;
+ PCREATEPROPERTYSHEETPAGEW pCreatePropertySheetPageW;
+ PDESTROYPROPERTYSHEETPAGE pDestroyPropertySheetPage;
+ PDEVADVPROP_INFO DevAdvPropInfo;
+ UINT nPages = 0;
+ union
+ {
+ ULONG Mask;
+ struct
+ {
+ ULONG General : 1;
+ ULONG Device : 1;
+ } Page;
+ } DelPropSheets = {0};
INT_PTR Ret = -1;
- pPropertySheetW = (PPROPERTYSHEETW)GetProcAddress(hComCtl32,
-
"PropertySheetW");
- if (pPropertySheetW == NULL)
+ /* we don't want to statically link against comctl32, so find the
+ functions we need dynamically */
+ pPropertySheetW =
+ (PPROPERTYSHEETW)GetProcAddress(hComCtl32,
+ "PropertySheetW");
+ pCreatePropertySheetPageW =
+ (PCREATEPROPERTYSHEETPAGEW)GetProcAddress(hComCtl32,
+
"CreatePropertySheetPageW");
+ pDestroyPropertySheetPage =
+ (PDESTROYPROPERTYSHEETPAGE)GetProcAddress(hComCtl32,
+
"DestroyPropertySheetPage");
+ if (pPropertySheetW == NULL ||
+ pCreatePropertySheetPageW == NULL ||
+ pDestroyPropertySheetPage == NULL)
{
return -1;
}
+ /* create the internal structure associated with the "General",
+ "Driver", ... pages */
+ DevAdvPropInfo = HeapAlloc(GetProcessHeap(),
+ 0,
+ sizeof(DEVADVPROP_INFO));
+ if (DevAdvPropInfo == NULL)
+ {
+ return -1;
+ }
+
+ DevAdvPropInfo->DeviceInfoSet = DeviceInfoSet;
+ DevAdvPropInfo->DeviceInfoData = DeviceInfoData;
+ DevAdvPropInfo->hComCtl32 = hComCtl32;
+ DevAdvPropInfo->szDevName[0] = L'\0';
+
/* get the device name */
if ((SetupDiGetDeviceRegistryProperty(DeviceInfoSet,
DeviceInfoData,
SPDRP_FRIENDLYNAME,
&RegDataType,
- (PBYTE)szDevName,
- sizeof(szDevName),
+
(PBYTE)DevAdvPropInfo->szDevName,
+
sizeof(DevAdvPropInfo->szDevName),
NULL) ||
SetupDiGetDeviceRegistryProperty(DeviceInfoSet,
DeviceInfoData,
SPDRP_DEVICEDESC,
&RegDataType,
- (PBYTE)szDevName,
- sizeof(szDevName),
+
(PBYTE)DevAdvPropInfo->szDevName,
+
sizeof(DevAdvPropInfo->szDevName),
NULL)) &&
RegDataType == REG_SZ)
{
@@ -74,7 +238,7 @@
psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_PROPTITLE;
psh.hwndParent = hWndParent;
- psh.pszCaption = szDevName;
+ psh.pszCaption = DevAdvPropInfo->szDevName;
/* find out how many property sheets we need */
if (SetupDiGetClassDevPropertySheets(DeviceInfoSet,
@@ -89,42 +253,100 @@
goto Cleanup;
}
- if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
+ if (nPropSheets != 0 && GetLastError() !=
ERROR_INSUFFICIENT_BUFFER)
{
goto Cleanup;
}
psh.phpage = HeapAlloc(GetProcessHeap(),
- 0,
- nPropSheets * sizeof(HPROPSHEETPAGE));
+ HEAP_ZERO_MEMORY,
+ (nPropSheets + 1) *
sizeof(HPROPSHEETPAGE));
if (psh.phpage == NULL)
{
goto Cleanup;
}
- /* FIXME - add the "General" and "Driver" pages */
+ /* add the "General" property sheet */
+ pspGeneral.dwSize = sizeof(PROPSHEETPAGE);
+ pspGeneral.dwFlags = PSP_DEFAULT;
+ pspGeneral.hInstance = hDllInstance;
+ pspGeneral.pszTemplate =
(LPCWSTR)MAKEINTRESOURCE(IDD_DEVICEGENERAL);
+ pspGeneral.pfnDlgProc = AdvPropGeneralDlgProc;
+ pspGeneral.lParam = (LPARAM)DevAdvPropInfo;
+ psh.phpage[0] = pCreatePropertySheetPageW(&pspGeneral);
+ if (psh.phpage[0] != NULL)
+ {
+ DelPropSheets.Page.General = TRUE;
+ nDevSheetsStart++;
+ nPages++;
+ }
- if (!SetupDiGetClassDevPropertySheets(DeviceInfoSet,
- DeviceInfoData,
- &psh,
- nPropSheets,
- NULL,
- DIGCDP_FLAG_ADVANCED))
+ if (nPropSheets != 0)
{
- goto Cleanup;
+ /* create the device property sheets but don't overwrite
+ the "General" property sheet handle */
+ psh.phpage += nDevSheetsStart;
+ if (!SetupDiGetClassDevPropertySheets(DeviceInfoSet,
+ DeviceInfoData,
+ &psh,
+ nPropSheets,
+ NULL,
+
DIGCDP_FLAG_ADVANCED))
+ {
+ goto Cleanup;
+ }
+ psh.phpage -= nDevSheetsStart;
+
+ DelPropSheets.Page.Device = TRUE;
+ nPages += nPropSheets;
}
+ psh.nPages = nPages;
+
+ /* FIXME - add the "Driver" property sheet if necessary */
+
Ret = pPropertySheetW(&psh);
+ /* no need to destroy the property sheets anymore */
+ DelPropSheets.Mask = 0;
+
Cleanup:
+ /* in case of failure the property sheets must be destroyed */
+ if (DelPropSheets.Mask != 0)
+ {
+ if (DelPropSheets.Page.General && psh.phpage[0] != NULL)
+ {
+ pDestroyPropertySheetPage(psh.phpage[0]);
+ }
+
+ if (DelPropSheets.Page.Device)
+ {
+ UINT i;
+ for (i = 0;
+ i < nPropSheets;
+ i++)
+ {
+ if (psh.phpage[i + 1] != NULL)
+ {
+ pDestroyPropertySheetPage(psh.phpage[i + 1]);
+ }
+ }
+ }
+ }
+
HeapFree(GetProcessHeap(),
0,
psh.phpage);
}
+ HeapFree(GetProcessHeap(),
+ 0,
+ DevAdvPropInfo);
+
return Ret;
}
+
/***********************************************************************
****
* NAME
EXPORTED
* DeviceAdvancedPropertiesW
@@ -177,6 +399,8 @@
0,
&DevInfoData))
{
+
+ /* create the image list */
Ret = DisplayDeviceAdvancedProperties(hWndParent,
hDevInfo,
&DevInfoData,
@@ -185,12 +409,14 @@
SetupDiDestroyDeviceInfoList(hDevInfo);
}
+
FreeLibrary(hComCtl32);
}
return Ret;
}
+
/***********************************************************************
****
* NAME
EXPORTED
* DeviceAdvancedPropertiesA
_____
Modified: trunk/reactos/lib/devmgr/hwpage.c
--- trunk/reactos/lib/devmgr/hwpage.c 2005-11-26 16:54:15 UTC (rev
19645)
+++ trunk/reactos/lib/devmgr/hwpage.c 2005-11-26 16:54:56 UTC (rev
19646)
@@ -158,30 +158,15 @@
if (HwDevInfo != NULL)
{
/* update static controls */
- CONFIGRET cRet;
- DWORD RegDataType;
- ULONG DataSize;
WCHAR szBuffer[256];
LPWSTR szFormatted = NULL;
/* get the manufacturer string */
- if
(!SetupDiGetDeviceRegistryProperty(HwDevInfo->ClassDevInfo->hDevInfo,
- &HwDevInfo->DevInfoData,
- SPDRP_MFG,
- &RegDataType,
- (PBYTE)szBuffer,
- sizeof(szBuffer),
- NULL) ||
- RegDataType != REG_SZ)
- {
- szBuffer[0] = L'\0';
- LoadString(hDllInstance,
- IDS_UNKNOWN,
- szBuffer,
- sizeof(szBuffer) / sizeof(szBuffer[0]));
- }
- /* FIXME - check string for NULL termination! */
- if (LoadAndFormatString(hDllInstance,
+ if
(GetDeviceManufacturerString(HwDevInfo->ClassDevInfo->hDevInfo,
+ &HwDevInfo->DevInfoData,
+ szBuffer,
+ sizeof(szBuffer) /
sizeof(szBuffer[0])) &&
+ LoadAndFormatString(hDllInstance,
IDS_MANUFACTURER,
&szFormatted,
szBuffer) != 0)
@@ -193,46 +178,10 @@
}
/* get the location string */
- DataSize = sizeof(szBuffer);
- cRet =
CM_Get_DevNode_Registry_Property(HwDevInfo->DevInfoData.DevInst,
-
CM_DRP_LOCATION_INFORMATION,
- &RegDataType,
- szBuffer,
- &DataSize,
- 0);
- if (cRet != CR_SUCCESS ||
- RegDataType != REG_SZ)
- {
- szBuffer[0] = L'\0';
- LoadString(hDllInstance,
- IDS_UNKNOWN,
- szBuffer,
- sizeof(szBuffer) / sizeof(szBuffer[0]));
- }
- /* FIXME - check string for NULL termination! */
-
- if (szBuffer[0] >= L'0' && szBuffer[0] <= L'9')
- {
- /* convert the string to an integer value and create a
- formatted string */
- ULONG ulLocation = (ULONG)wcstoul(szBuffer,
- NULL,
- 10);
- if (LoadAndFormatString(hDllInstance,
- IDS_LOCATIONSTR,
- &szFormatted,
- ulLocation,
- szBuffer) != 0)
- {
- wcsncpy(szBuffer,
- szFormatted,
- (sizeof(szBuffer) / sizeof(szBuffer[0])) - 1);
- szBuffer[(sizeof(szBuffer) / sizeof(szBuffer[0])) - 1]
= L'\0';
- LocalFree((HLOCAL)szFormatted);
- }
- }
-
- if (LoadAndFormatString(hDllInstance,
+ if (GetDeviceLocationString(HwDevInfo->DevInfoData.DevInst,
+ szBuffer,
+ sizeof(szBuffer) /
sizeof(szBuffer[0])) &&
+ LoadAndFormatString(hDllInstance,
IDS_LOCATION,
&szFormatted,
szBuffer) != 0)
@@ -243,13 +192,11 @@
LocalFree((HLOCAL)szFormatted);
}
- /* FIXME - get the device status text */
- LoadString(hDllInstance,
- IDS_UNKNOWN,
- szBuffer,
- sizeof(szBuffer) / sizeof(szBuffer[0]));
-
- if (LoadAndFormatString(hDllInstance,
+ if (GetDeviceStatusString(HwDevInfo->ClassDevInfo->hDevInfo,
+ &HwDevInfo->DevInfoData,
+ szBuffer,
+ sizeof(szBuffer) /
sizeof(szBuffer[0])) &&
+ LoadAndFormatString(hDllInstance,
IDS_STATUS,
&szFormatted,
szBuffer) != 0)
@@ -449,10 +396,9 @@
ItemCount++;
/* get the device type for the second column */
- if
(SetupDiGetClassDescription(&ClassDevInfo->Guid,
- szBuffer,
- sizeof(szBuffer)
/ sizeof(szBuffer[0]),
- NULL))
+ if
(GetDeviceTypeString(&HwDevInfo->DevInfoData,
+ szBuffer,
+ sizeof(szBuffer) /
sizeof(szBuffer[0])))
{
li.mask = LVIF_TEXT;
li.iItem = iItem;
_____
Modified: trunk/reactos/lib/devmgr/misc.c
--- trunk/reactos/lib/devmgr/misc.c 2005-11-26 16:54:15 UTC (rev
19645)
+++ trunk/reactos/lib/devmgr/misc.c 2005-11-26 16:54:56 UTC (rev
19646)
@@ -29,6 +29,7 @@
HINSTANCE hDllInstance = NULL;
+
static INT
LengthOfStrResource(IN HINSTANCE hInst,
IN UINT uID)
@@ -65,6 +66,7 @@
return -1;
}
+
static INT
AllocAndLoadString(OUT LPWSTR *lpTarget,
IN HINSTANCE hInst,
@@ -91,6 +93,7 @@
return 0;
}
+
DWORD
LoadAndFormatString(IN HINSTANCE hInstance,
IN UINT uID,
@@ -123,6 +126,7 @@
return Ret;
}
+
LPARAM
ListViewGetSelectedItemData(IN HWND hwnd)
{
@@ -149,6 +153,7 @@
return 0;
}
+
LPWSTR
ConvertMultiByteToUnicode(IN LPCSTR lpMultiByteStr,
IN UINT uCodePage)
@@ -187,6 +192,151 @@
return lpUnicodeStr;
}
+
+BOOL
+GetDeviceManufacturerString(IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData,
+ OUT LPWSTR szBuffer,
+ IN DWORD BufferSize)
+{
+ DWORD RegDataType;
+ BOOL Ret = FALSE;
+
+ if (!SetupDiGetDeviceRegistryProperty(DeviceInfoSet,
+ DeviceInfoData,
+ SPDRP_MFG,
+ &RegDataType,
+ (PBYTE)szBuffer,
+ BufferSize * sizeof(WCHAR),
+ NULL) ||
+ RegDataType != REG_SZ)
+ {
+ szBuffer[0] = L'\0';
+ if (LoadString(hDllInstance,
+ IDS_UNKNOWN,
+ szBuffer,
+ BufferSize))
+ {
+ Ret = TRUE;
+ }
+ }
+ else
+ {
+ /* FIXME - check string for NULL termination! */
+ Ret = TRUE;
+ }
+
+ return Ret;
+}
+
+
+BOOL
+GetDeviceLocationString(IN DEVINST dnDevInst,
+ OUT LPWSTR szBuffer,
+ IN DWORD BufferSize)
+{
+ DWORD RegDataType;
+ ULONG DataSize;
+ CONFIGRET cRet;
+ BOOL Ret = FALSE;
+
+ DataSize = BufferSize * sizeof(WCHAR);
+ cRet = CM_Get_DevNode_Registry_Property(dnDevInst,
+
CM_DRP_LOCATION_INFORMATION,
+ &RegDataType,
+ szBuffer,
+ &DataSize,
+ 0);
+ if (cRet != CR_SUCCESS ||
+ RegDataType != REG_SZ)
+ {
+ szBuffer[0] = L'\0';
+ if (LoadString(hDllInstance,
+ IDS_UNKNOWN,
+ szBuffer,
+ BufferSize))
+ {
+ Ret = TRUE;
+ }
+ }
+ else
+ {
+ /* FIXME - check string for NULL termination! */
+ Ret = TRUE;
+ }
+
+ if (szBuffer[0] >= L'0' && szBuffer[0] <= L'9')
+ {
+ /* convert the string to an integer value and create a
+ formatted string */
+ LPWSTR szFormatted;
+ ULONG ulLocation = (ULONG)wcstoul(szBuffer,
+ NULL,
+ 10);
+ if (LoadAndFormatString(hDllInstance,
+ IDS_LOCATIONSTR,
+ &szFormatted,
+ ulLocation,
+ szBuffer) != 0)
+ {
+ wcsncpy(szBuffer,
+ szFormatted,
+ BufferSize - 1);
+ szBuffer[BufferSize - 1] = L'\0';
+ LocalFree((HLOCAL)szFormatted);
+ }
+ else
+ Ret = FALSE;
+ }
+
+ return Ret;
+}
+
+
+BOOL
+GetDeviceStatusString(IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData,
+ OUT LPWSTR szBuffer,
+ IN DWORD BufferSize)
+{
+ return LoadString(hDllInstance,
+ IDS_UNKNOWN,
+ szBuffer,
+ BufferSize) != 0;
+}
+
+
+BOOL
+GetDeviceTypeString(IN PSP_DEVINFO_DATA DeviceInfoData,
+ OUT LPWSTR szBuffer,
+ IN DWORD BufferSize)
+{
+ BOOL Ret = FALSE;
+
+ if (!SetupDiGetClassDescription(&DeviceInfoData->ClassGuid,
+ szBuffer,
+ BufferSize,
+ NULL))
+ {
+ szBuffer[0] = L'\0';
+ if (LoadString(hDllInstance,
+ IDS_UNKNOWN,
+ szBuffer,
+ BufferSize))
+ {
+ Ret = TRUE;
+ }
+ }
+ else
+ {
+ /* FIXME - check string for NULL termination! */
+ Ret = TRUE;
+ }
+
+ return Ret;
+}
+
+
HINSTANCE
LoadAndInitComctl32(VOID)
{
@@ -212,6 +362,7 @@
return hComCtl32;
}
+
BOOL
STDCALL
DllMain(IN HINSTANCE hinstDLL,
_____
Modified: trunk/reactos/lib/devmgr/precomp.h
--- trunk/reactos/lib/devmgr/precomp.h 2005-11-26 16:54:15 UTC (rev
19645)
+++ trunk/reactos/lib/devmgr/precomp.h 2005-11-26 16:54:56 UTC (rev
19646)
@@ -206,6 +206,28 @@
HINSTANCE
LoadAndInitComctl32(VOID);
+BOOL
+GetDeviceManufacturerString(IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData,
+ OUT LPWSTR szBuffer,
+ IN DWORD BufferSize);
+
+BOOL
+GetDeviceLocationString(IN DEVINST dnDevInst,
+ OUT LPWSTR szBuffer,
+ IN DWORD BufferSize);
+
+BOOL
+GetDeviceStatusString(IN HDEVINFO DeviceInfoSet,
+ IN PSP_DEVINFO_DATA DeviceInfoData,
+ OUT LPWSTR szBuffer,
+ IN DWORD BufferSize);
+
+BOOL
+GetDeviceTypeString(IN PSP_DEVINFO_DATA DeviceInfoData,
+ OUT LPWSTR szBuffer,
+ IN DWORD BufferSize);
+
#endif /* __DEVMGR_H */
/* EOF */
_____
Modified: trunk/reactos/lib/devmgr/resource.h
--- trunk/reactos/lib/devmgr/resource.h 2005-11-26 16:54:15 UTC (rev
19645)
+++ trunk/reactos/lib/devmgr/resource.h 2005-11-26 16:54:56 UTC (rev
19646)
@@ -2,10 +2,18 @@
#define __DEVMGR_RESOURCE_H
#define IDI_DEVMGR 100
+
#define IDD_HARDWARE 100
+#define IDD_DEVICEGENERAL 101
-/* control IDs *must* match, some windows components
- seem to use them... */
+#define IDC_DEVICON 0x57B
+#define IDC_DEVNAME 0x57C
+#define IDC_DEVTYPE 0x57D
+#define IDC_DEVMANUFACTURER 0x57E
+#define IDC_DEVLOCATION 0x57F
+#define IDC_DEVSTATUSGROUP 0x580
+#define IDC_DEVSTATUS 0x581
+#define IDC_DEVUSAGE 0x582
#define IDC_DEVICES 0x583
#define IDC_LV_DEVICES 0x584
#define IDC_PROPERTIESGROUP 0x585