我不能在驅動程序中調用FileTimeToSystemTime()
方法。錯誤是:如何在ring0中使用winapi函數(內核模式)?
錯誤C4013:'FileTimeToSystemTime'未定義;假設外部返回int。
此外,我不能包括windows.h
,因爲我已經包括ntddk.h
,它會導致很多錯誤。 我若在頭BOOL FileTimeToSystemTime(IN const PFILETIME, OUT PSYSTEMTIME);
我得到下一個錯誤:
錯誤C2061:語法錯誤:標識符 'FileTimeToSystemTime'
錯誤C2059:語法錯誤: ';'
錯誤C2059:語法錯誤: '類型'
錯誤C4013: 'FileTimeToSystemTime' 未定義;假設EXTERN返回int
最後,如果我寫了一個實現此方法:
BOOL FileTimeToSystemTime(const PFILETIME pFileTime, PSYSTEMTIME pSystemTime)
{
CALL_ENTRY
long long tmp;
memcpy(&tmp, pFileTime, sizeof (FILETIME));
time_t aTime_t = tmp/10000;
tm aTm;
if (!gmtime_r(&aTime_t, &aTm))
return FALSE;
pSystemTime->wYear = aTm.tm_year + 1900;
pSystemTime->wMonth = aTm.tm_mon;
pSystemTime->wDayOfWeek = aTm.tm_wday;
pSystemTime->wDay = aTm.tm_mday;
pSystemTime->wHour = aTm.tm_hour;
pSystemTime->wMinute = aTm.tm_min;
pSystemTime->wSecond = aTm.tm_sec;
pSystemTime->wMilliseconds = 0;
return TRUE;
}
我得到了同樣的錯誤如上。在內核模式下調用這個方法的正確方法是什麼?或者如何從一般的Windows驅動程序調用winapi函數?
-1。你想寫驅動程序,但你沒有元素知識。請先閱讀一些文件。或者你希望寫BSOD發生器? – Xearinox