我想将FileTime更改为SystemTime,但程序总是崩溃,为什么?
提前致谢。
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);
答案 0 :(得分:3)
您不为结果分配内存。在堆栈上分配它可能更容易,并在函数调用中使用地址,如下所示:
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);
答案 1 :(得分:1)
您对OpenProcess
的来电失败:
如果指定的进程是系统进程(0x00000000),则该函数失败,最后一个错误代码为ERROR_INVALID_PARAMETER。
您应该考虑检查返回值。您的应用程序崩溃,因为您将随机指针(Sys_Time
)传递给FileTimeToSystemTime
和Kernel_Time
传递给GetProcessTimes
。
对于每次调用,您需要分配内存。在这种情况下,自动变量就足够了:
FILETIME Kernel_Time = { 0 };
...
GetProcessTimes( Process, NULL, NULL, &Kernel_Time, NULL );