mirror of
https://github.com/reactos/reactos.git
synced 2024-08-12 14:16:30 +00:00
Display the driver provider, date and version. Based on a patch by Herve.
svn path=/trunk/; revision=20373
This commit is contained in:
parent
2cfbdf83cd
commit
9cc7905c9d
|
@ -79,6 +79,71 @@ typedef struct _DEVADVPROP_INFO
|
|||
#define PM_INITIALIZE (WM_APP + 0x101)
|
||||
|
||||
|
||||
static VOID
|
||||
UpdateDriverDlg(IN HWND hwndDlg,
|
||||
IN PDEVADVPROP_INFO dap)
|
||||
{
|
||||
HDEVINFO DeviceInfoSet;
|
||||
PSP_DEVINFO_DATA DeviceInfoData;
|
||||
|
||||
if (dap->CurrentDeviceInfoSet != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
DeviceInfoSet = dap->CurrentDeviceInfoSet;
|
||||
DeviceInfoData = &dap->CurrentDeviceInfoData;
|
||||
}
|
||||
else
|
||||
{
|
||||
DeviceInfoSet = dap->DeviceInfoSet;
|
||||
DeviceInfoData = &dap->DeviceInfoData;
|
||||
}
|
||||
|
||||
/* set the device image */
|
||||
SendDlgItemMessage(hwndDlg,
|
||||
IDC_DEVICON,
|
||||
STM_SETICON,
|
||||
(WPARAM)dap->hDevIcon,
|
||||
0);
|
||||
|
||||
/* set the device name edit control text */
|
||||
SetDlgItemText(hwndDlg,
|
||||
IDC_DEVNAME,
|
||||
dap->szDevName);
|
||||
|
||||
/* query the driver provider */
|
||||
if (GetDriverProviderString(DeviceInfoSet,
|
||||
DeviceInfoData,
|
||||
dap->szTemp,
|
||||
sizeof(dap->szTemp) / sizeof(dap->szTemp[0])))
|
||||
{
|
||||
SetDlgItemText(hwndDlg,
|
||||
IDC_DRVPROVIDER,
|
||||
dap->szTemp);
|
||||
}
|
||||
|
||||
/* query the driver date */
|
||||
if (GetDriverDateString(DeviceInfoSet,
|
||||
DeviceInfoData,
|
||||
dap->szTemp,
|
||||
sizeof(dap->szTemp) / sizeof(dap->szTemp[0])))
|
||||
{
|
||||
SetDlgItemText(hwndDlg,
|
||||
IDC_DRVDATE,
|
||||
dap->szTemp);
|
||||
}
|
||||
|
||||
/* query the driver version */
|
||||
if (GetDriverVersionString(DeviceInfoSet,
|
||||
DeviceInfoData,
|
||||
dap->szTemp,
|
||||
sizeof(dap->szTemp) / sizeof(dap->szTemp[0])))
|
||||
{
|
||||
SetDlgItemText(hwndDlg,
|
||||
IDC_DRVVERSION,
|
||||
dap->szTemp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static INT_PTR
|
||||
CALLBACK
|
||||
AdvProcDriverDlgProc(IN HWND hwndDlg,
|
||||
|
@ -116,17 +181,8 @@ AdvProcDriverDlgProc(IN HWND hwndDlg,
|
|||
DWL_USER,
|
||||
(DWORD_PTR)dap);
|
||||
|
||||
/* set the device image */
|
||||
SendDlgItemMessage(hwndDlg,
|
||||
IDC_DEVICON,
|
||||
STM_SETICON,
|
||||
(WPARAM)dap->hDevIcon,
|
||||
0);
|
||||
|
||||
/* set the device name edit control text */
|
||||
SetDlgItemText(hwndDlg,
|
||||
IDC_DEVNAME,
|
||||
dap->szDevName);
|
||||
UpdateDriverDlg(hwndDlg,
|
||||
dap);
|
||||
}
|
||||
Ret = TRUE;
|
||||
break;
|
||||
|
@ -391,7 +447,7 @@ UpdateDevInfo(IN HWND hwndDlg,
|
|||
}
|
||||
else
|
||||
{
|
||||
GetParentNode:
|
||||
GetParentNode:
|
||||
/* get the parent node from the initial devinst */
|
||||
CM_Get_Parent_Ex(&dap->ParentDevInst,
|
||||
dap->DeviceInfoData.DevInst,
|
||||
|
|
|
@ -449,16 +449,202 @@ GetDeviceStatusString(IN DEVINST DevInst,
|
|||
else
|
||||
{
|
||||
GeneralMessage:
|
||||
Ret = LoadString(hDllInstance,
|
||||
MessageId,
|
||||
szBuffer,
|
||||
(int)BufferSize);
|
||||
if (LoadString(hDllInstance,
|
||||
MessageId,
|
||||
szBuffer,
|
||||
(int)BufferSize))
|
||||
{
|
||||
Ret = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return Ret;
|
||||
}
|
||||
|
||||
|
||||
BOOL
|
||||
GetDriverProviderString(IN HDEVINFO DeviceInfoSet,
|
||||
IN PSP_DEVINFO_DATA DeviceInfoData,
|
||||
OUT LPWSTR szBuffer,
|
||||
IN DWORD BufferSize)
|
||||
{
|
||||
HKEY hKey;
|
||||
DWORD dwSize, dwType;
|
||||
BOOL Ret = FALSE;
|
||||
|
||||
szBuffer[0] = L'\0';
|
||||
|
||||
/* get driver provider, date and version */
|
||||
hKey = SetupDiOpenDevRegKey(DeviceInfoSet,
|
||||
DeviceInfoData,
|
||||
DICS_FLAG_GLOBAL,
|
||||
0,
|
||||
DIREG_DRV,
|
||||
KEY_QUERY_VALUE);
|
||||
if (hKey != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
/* query the driver provider */
|
||||
dwSize = BufferSize;
|
||||
if (RegQueryValueEx(hKey,
|
||||
REGSTR_VAL_PROVIDER_NAME,
|
||||
NULL,
|
||||
&dwType,
|
||||
(LPBYTE)szBuffer,
|
||||
&dwSize) == ERROR_SUCCESS &&
|
||||
dwType == REG_SZ &&
|
||||
szBuffer[0] != L'\0')
|
||||
{
|
||||
Ret = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
szBuffer[0] = L'\0';
|
||||
}
|
||||
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
|
||||
if (szBuffer[0] == L'\0')
|
||||
{
|
||||
/* unable to query the information */
|
||||
if (LoadString(hDllInstance,
|
||||
IDS_UNKNOWN,
|
||||
szBuffer,
|
||||
BufferSize))
|
||||
{
|
||||
Ret = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return Ret;
|
||||
}
|
||||
|
||||
|
||||
BOOL
|
||||
GetDriverVersionString(IN HDEVINFO DeviceInfoSet,
|
||||
IN PSP_DEVINFO_DATA DeviceInfoData,
|
||||
OUT LPWSTR szBuffer,
|
||||
IN DWORD BufferSize)
|
||||
{
|
||||
HKEY hKey;
|
||||
DWORD dwSize, dwType;
|
||||
BOOL Ret = FALSE;
|
||||
|
||||
szBuffer[0] = L'\0';
|
||||
|
||||
/* get driver provider, date and version */
|
||||
hKey = SetupDiOpenDevRegKey(DeviceInfoSet,
|
||||
DeviceInfoData,
|
||||
DICS_FLAG_GLOBAL,
|
||||
0,
|
||||
DIREG_DRV,
|
||||
KEY_QUERY_VALUE);
|
||||
if (hKey != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
/* query the driver provider */
|
||||
dwSize = BufferSize;
|
||||
if (RegQueryValueEx(hKey,
|
||||
L"DriverVersion",
|
||||
NULL,
|
||||
&dwType,
|
||||
(LPBYTE)szBuffer,
|
||||
&dwSize) == ERROR_SUCCESS &&
|
||||
dwType == REG_SZ &&
|
||||
szBuffer[0] != L'\0')
|
||||
{
|
||||
Ret = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
szBuffer[0] = L'\0';
|
||||
}
|
||||
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
|
||||
if (szBuffer[0] == L'\0')
|
||||
{
|
||||
/* unable to query the information */
|
||||
if (LoadString(hDllInstance,
|
||||
IDS_UNKNOWN,
|
||||
szBuffer,
|
||||
BufferSize))
|
||||
{
|
||||
Ret = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return Ret;
|
||||
}
|
||||
|
||||
BOOL
|
||||
GetDriverDateString(IN HDEVINFO DeviceInfoSet,
|
||||
IN PSP_DEVINFO_DATA DeviceInfoData,
|
||||
OUT LPWSTR szBuffer,
|
||||
IN DWORD BufferSize)
|
||||
{
|
||||
HKEY hKey;
|
||||
FILETIME DriverDate;
|
||||
SYSTEMTIME SystemTime, LocalTime;
|
||||
DWORD dwSize, dwType;
|
||||
BOOL Ret = FALSE;
|
||||
|
||||
szBuffer[0] = L'\0';
|
||||
|
||||
/* get driver provider, date and version */
|
||||
hKey = SetupDiOpenDevRegKey(DeviceInfoSet,
|
||||
DeviceInfoData,
|
||||
DICS_FLAG_GLOBAL,
|
||||
0,
|
||||
DIREG_DRV,
|
||||
KEY_QUERY_VALUE);
|
||||
if (hKey != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
/* query the driver provider */
|
||||
dwSize = sizeof(FILETIME);
|
||||
if (RegQueryValueEx(hKey,
|
||||
L"DriverDateData",
|
||||
NULL,
|
||||
&dwType,
|
||||
(LPBYTE)&DriverDate,
|
||||
&dwSize) == ERROR_SUCCESS &&
|
||||
dwType == REG_BINARY &&
|
||||
dwSize == sizeof(FILETIME) &&
|
||||
FileTimeToSystemTime(&DriverDate,
|
||||
&SystemTime) &&
|
||||
SystemTimeToTzSpecificLocalTime(NULL,
|
||||
&SystemTime,
|
||||
&LocalTime) &&
|
||||
GetDateFormat(LOCALE_USER_DEFAULT,
|
||||
DATE_SHORTDATE,
|
||||
&LocalTime,
|
||||
NULL,
|
||||
szBuffer,
|
||||
BufferSize) != 0)
|
||||
{
|
||||
Ret = TRUE;
|
||||
}
|
||||
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
|
||||
if (!Ret)
|
||||
{
|
||||
/* unable to query the information */
|
||||
if (LoadString(hDllInstance,
|
||||
IDS_UNKNOWN,
|
||||
szBuffer,
|
||||
BufferSize))
|
||||
{
|
||||
Ret = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return Ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
BOOL
|
||||
IsDeviceHidden(IN DEVINST DevInst,
|
||||
IN HMACHINE hMachine,
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#define __DEVMGR_H
|
||||
|
||||
#include <windows.h>
|
||||
#include <regstr.h>
|
||||
#include <setupapi.h>
|
||||
#include <cfgmgr32.h>
|
||||
#include <commctrl.h>
|
||||
|
@ -256,6 +257,24 @@ GetDeviceStatusString(IN DEVINST DevInst,
|
|||
OUT LPWSTR szBuffer,
|
||||
IN DWORD BufferSize);
|
||||
|
||||
BOOL
|
||||
GetDriverProviderString(IN HDEVINFO DeviceInfoSet,
|
||||
IN PSP_DEVINFO_DATA DeviceInfoData,
|
||||
OUT LPWSTR szBuffer,
|
||||
IN DWORD BufferSize);
|
||||
|
||||
BOOL
|
||||
GetDriverVersionString(IN HDEVINFO DeviceInfoSet,
|
||||
IN PSP_DEVINFO_DATA DeviceInfoData,
|
||||
OUT LPWSTR szBuffer,
|
||||
IN DWORD BufferSize);
|
||||
|
||||
BOOL
|
||||
GetDriverDateString(IN HDEVINFO DeviceInfoSet,
|
||||
IN PSP_DEVINFO_DATA DeviceInfoData,
|
||||
OUT LPWSTR szBuffer,
|
||||
IN DWORD BufferSize);
|
||||
|
||||
BOOL
|
||||
IsDeviceHidden(IN DEVINST DevInst,
|
||||
IN HMACHINE hMachine,
|
||||
|
|
Loading…
Reference in a new issue