从FileTimeToSystemTime()获取错误的值?为什么?

时间:2013-11-18 06:00:56

标签: c winapi mingw32

FILETIME Kernel_Time;
HANDLE Process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 0);
GetProcessTimes(Process, NULL, NULL, &Kernel_Time, NULL);
SYSTEMTIME Sys_Time;
FileTimeToSystemTime(&Kernel_Time, &Sys_Time);
printf("%d", Sys_Time.wYear); // WHY ?

为什么Sys_Time.wYear不是2013年?

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:4)

HANDLE Process = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 0);

根据documentation

  

如果指定的进程是系统进程(0x00000000),则该函数失败,最后一个错误代码为ERROR_INVALID_PARAMETER。

因此,OpenProcessERROR_INVALID_PARAMETER失败,HANDLE ProcessNULL。始终检查故障条件和相应的错误代码。

然后,GetProcessTimes API参数不是可选的,因此您不应该将NULL传递给它们而不是pointer to FILETIME structures