我目前正在使用WriteFile函數來禁止看門狗在嵌入式系統中流逝。該函數實際上工作,但同時它返回一個錯誤代碼87.我試着調試函數中的參數,但我仍然得到錯誤代碼。WriteFile函數的使用產生1(成功),但返回錯誤代碼87
Marshalling part:
[DllImport("coredll.dll", SetLastError = true)]
private static extern int WriteFile(IntPtr hwnd, byte[] lpInBuffer, uint nNumberOfBytesToWrite, ref uint lpNumberOfBytesWritten, IntPtr lpOverlapped);
Usage:
byte[] Arg = new byte[1];
Arg[0] = 0x87;
uint WrittenByte = 0;
int returnWatchDogTouch = 0;
returnWatchDogTouch = WriteFile(InitDevices.DeviceHandleWDT, Arg, 1,ref WrittenByte, IntPtr.Zero);
int error = Marshal.GetLastWin32Error(); //Getting error value 87 in this line
returnWatchDogTouch的返回值是1,並且在隨後的行中返回錯誤代碼87。任何幫助表示讚賞,謝謝。
如果函數成功,則不一定會設置最後的錯誤代碼。也就是說,當你調用的函數表明失敗時,你應該只有'GetLastError'。 – jlahd
@jlahd添加更多描述並將其作爲答案。你真的很棒。 – Corey