我有一个从cfgmgr32.dll获得的8字节值,它表示设备驱动程序值的安装日期,来自其函数CM_Get_DevNode_PropertyW。
我一直试图将它转换为日期时间,但没有成功,此刻我迷失了。 (190,100,92,19,132,46,209,1)是我得到的值,这个值代表一个日期时间值,我需要一个提示从哪里开始转换它。 任何使用c ++或Delphi pascal的示例或提示都是受欢迎的,Delphi是首选。
答案 0 :(得分:4)
您需要了解更多信息。这8个字节代表什么?我认为这些字节代表一个FILETIME
值,这对于Win32 DLL返回的数据来说似乎是合理的。
{$APPTYPE CONSOLE}
uses
SysUtils, Windows;
const
Input: array [0..7] of Byte = (190, 100, 92, 19, 132, 46, 209, 1);
var
FileTime: TFileTime;
SystemTime: TSystemTime;
begin
FileTime := TFileTime(Input);
Win32Check(FileTimeToSystemTime(FileTime, SystemTime));
Writeln(SystemTime.wYear);
Writeln(SystemTime.wMonth);
Writeln(SystemTime.wDayOfWeek);
Writeln(SystemTime.wDay);
Writeln(SystemTime.wHour);
Writeln(SystemTime.wMinute);
Writeln(SystemTime.wSecond);
Writeln(SystemTime.wMilliseconds);
Readln;
end.
<强>输出强>
2015 12 5 4 11 8 16 583
设备驱动程序安装在2015年12月的 th 上?
如果您在问题中包含更多有关这8个字节的详细信息,那么将来参考可能会更有帮助。
根据您致电CM_Get_DevNode_PropertyW
的评论中的信息。在这种情况下,您应该检查返回的属性类型。我希望它是DEVPROP_TYPE_FILETIME
。该文档告诉您以下内容:
在Windows Vista和更高版本的Windows中, DEVPROP_TYPE_FILETIME属性类型表示基础数据类型 标识符,指示数据类型是FILETIME类型 值。
...
我们建议所有时间值都以Coordinated表示 世界时(UTC)单位。