我目前正在使用WriteFile函数禁止看门狗进入嵌入式系统。该函数实际上有效,但同时它返回错误代码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。感谢任何帮助。谢谢。
答案 0 :(得分:1)
GetLastError
不一定由函数设置。在这种情况下,有些函数会将值设置为零,有些则不会。
在您呼叫的功能指示失败后,您应该只调用GetLastError
以获取更具体的错误信息。在您的情况下,WriteFile
会返回1表示成功。