标题:C#打开驱动程序出现问题
只看楼主
tan_tan_1
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-4-17
 问题点数:0 回复次数:0 
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 做其他的操作。
百思不得其解。
搜索更多相关主题的帖子: 驱动 
2010-11-01 09:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-324600-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.328468 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved