C#打开驱动程序出现问题
if (0 == Gpio){
GpioName = "\\\\.\\GPIO" +
Gpio = CreateFile(GpioName, GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
0,
0);
}
MessageBox.Show(hGpio.ToString());
if (INVALID_HANDLE_VALUE == Gpio)
return false;
MessageBox.Show(hGpio.ToString());
if (false == DeviceIoControl(Gpio, IOCTL_SET_DIR_REGISTER,
ref DirectionReg, Marshal.SizeOf(DirectionReg),
ref NULL, 0,
ref NULL, ref NULL))
{
MessageBox.Show(GetLastError().ToString());
MessageBox.Show(hGpio.ToString());
MessageBox.Show("fail to IOCTL_SET_DIR_REGISTER");
}
上面为我使用c#调用C++编写驱动的代码,该驱动在MFC下测试没有出现问题,在C#中出现的问题是在CreateFile成功之后执行DeviceIoControl时,提示HANDLE 为无效的,GetLastError的错误代码是6。
在MFC中没有出现这样的问题,按理来说我在CreateFile之后得到了一个正确的HANDLE 但是不知道为什么再次使用它的时候就成了无效的,从上面的代码可以看出CreateFile之后我并没有对HANDLE 做其他的操作。
百思不得其解。