在我的C++ Windows應用程序中,收到在重疊I/O操作失敗後使用GetLastError()看起來無效的系統錯誤代碼。接收到無效的Windows系統錯誤代碼
// Code
DWORD errorCode = GetLastError();
loggerInt1(LOGERROR, "failed getIoResult, errorCode %d", (int)errorCode);
// Log file
failed getIoResult, errorCode -1073741781
failed getIoResult, errorCode -1073741781
failed getIoResult, errorCode -1073741781
//... many more times at different time points
errorCode是一個DWORD,它是一個無符號長整型,我將它轉換爲int。但是Windows系統錯誤代碼只能在0到15999之間,並且在int內。
-1073741781在32位系統(我的)上是C000 002B,在64位系統上是FFFF FFFF C000 002B。解釋爲無符號長的它是3,221,225,515(32位)或一些奇怪的巨大數字(64位)。無論哪種方式,它都遠遠超出了Windows系統錯誤的0-15999範圍。
這怎麼可能?爲什麼我得到這樣一個錯誤代碼有一個理智的理由嗎?
什麼是失敗的API?請記住,如果以前的API調用沒有失敗,那麼'GetLastError'返回的值是不確定的。 –