将 DriverVersion 转换为人类可读格式
Converting DriverVersion to Human readable format
我到处搜索它,找不到任何文档,我能够按照 Here 的描述获得 DriverVersion。创建和枚举设备驱动器正在运行,因此无需查看那里。 DriverVersion 是 "DWORDLONG" 的一种类型。我需要将其转换为人类可读的格式,例如 20.xx.xx.xx。 MSDN 上或我搜索过的任何地方都没有任何文档。
任何帮助将不胜感激。
“DriverVersion”的示例值:1688863374327808
代码片段,如果需要的话,
SP_DEVINFO_DATA devInfo;
devInfo.cbSize = sizeof(SP_DEVINFO_DATA);
if (SetupDiEnumDeviceInfo(handle, 0, &devInfo))
{
if(SetupDiBuildDriverInfoList(handle,&devInfo,SPDIT_COMPATDRIVER))
{
SP_DRVINFO_DATA drvInfo;
drvInfo.cbSize = sizeof(SP_DRVINFO_DATA);
int i=0;
while(1)
{
try
{
if (SetupDiEnumDriverInfo(handle, &devInfo, SPDIT_COMPATDRIVER, i++, &drvInfo))
{
cout<<"Version :"<<drvInfo.DriverVersion<<endl; // Need Human Readable version here.
}
else
break;
}
catch(std::exception ex)
{
break;
}
}
}
}
您可以使用 ULARGE_INTEGER
联合、HIWORD
/LOWORD
宏和 boost::format
等字符串格式化实用程序来执行以下操作(未经测试的代码):
SP_DRVINFO_DATA driverInfoData;
ULARGE_INTEGER version;
version.QuadPart = driverInfoData.DriverVersion;
std::string versionStr = (boost::format("%s.%s.%s.%s")
% HIWORD(version.HighPart)
% LOWORD(version.HighPart)
% HIWORD(version.LowPart)
% LOWORD(version.LowPart)).str();
按照您的代码并摆脱提升只需执行以下操作:
std::cout << "Version: "
<< std::to_string(HIWORD(version.HighPart)) << "."
<< std::to_string(LOWORD(version.HighPart)) << "."
<< std::to_string(HIWORD(version.LowPart)) << "."
<< std::to_string(LOWORD(version.LowPart)) << std::endl;
我到处搜索它,找不到任何文档,我能够按照 Here 的描述获得 DriverVersion。创建和枚举设备驱动器正在运行,因此无需查看那里。 DriverVersion 是 "DWORDLONG" 的一种类型。我需要将其转换为人类可读的格式,例如 20.xx.xx.xx。 MSDN 上或我搜索过的任何地方都没有任何文档。
任何帮助将不胜感激。
“DriverVersion”的示例值:1688863374327808
代码片段,如果需要的话,
SP_DEVINFO_DATA devInfo;
devInfo.cbSize = sizeof(SP_DEVINFO_DATA);
if (SetupDiEnumDeviceInfo(handle, 0, &devInfo))
{
if(SetupDiBuildDriverInfoList(handle,&devInfo,SPDIT_COMPATDRIVER))
{
SP_DRVINFO_DATA drvInfo;
drvInfo.cbSize = sizeof(SP_DRVINFO_DATA);
int i=0;
while(1)
{
try
{
if (SetupDiEnumDriverInfo(handle, &devInfo, SPDIT_COMPATDRIVER, i++, &drvInfo))
{
cout<<"Version :"<<drvInfo.DriverVersion<<endl; // Need Human Readable version here.
}
else
break;
}
catch(std::exception ex)
{
break;
}
}
}
}
您可以使用 ULARGE_INTEGER
联合、HIWORD
/LOWORD
宏和 boost::format
等字符串格式化实用程序来执行以下操作(未经测试的代码):
SP_DRVINFO_DATA driverInfoData;
ULARGE_INTEGER version;
version.QuadPart = driverInfoData.DriverVersion;
std::string versionStr = (boost::format("%s.%s.%s.%s")
% HIWORD(version.HighPart)
% LOWORD(version.HighPart)
% HIWORD(version.LowPart)
% LOWORD(version.LowPart)).str();
按照您的代码并摆脱提升只需执行以下操作:
std::cout << "Version: "
<< std::to_string(HIWORD(version.HighPart)) << "."
<< std::to_string(LOWORD(version.HighPart)) << "."
<< std::to_string(HIWORD(version.LowPart)) << "."
<< std::to_string(LOWORD(version.LowPart)) << std::endl;