社区
嵌入开发(WinCE)
帖子详情
C#中如何调用自己写的驱动程序
popdrummer
2011-11-17 11:19:03
前段时间写了个GPIO驱动程序,生成了一个dll文件,想用C#开发的应用程序调用这个驱动。查了一些资料,给的方法有用[DLLImport]来调用dll文件,然后声明调用函数;还有说用windows API函数CreateFile,DeviceIOControl,CloseHandle,来对设备进行操作,可是C#中有这些函数么,现在有点迷糊了,烦请高手给一个清晰的思路。
...全文
973
7
打赏
收藏
C#中如何调用自己写的驱动程序
前段时间写了个GPIO驱动程序,生成了一个dll文件,想用C#开发的应用程序调用这个驱动。查了一些资料,给的方法有用[DLLImport]来调用dll文件,然后声明调用函数;还有说用windows API函数CreateFile,DeviceIOControl,CloseHandle,来对设备进行操作,可是C#中有这些函数么,现在有点迷糊了,烦请高手给一个清晰的思路。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
popdrummer
2011-11-17
打赏
举报
回复
[Quote=引用 2 楼 northcan 的回复:]
CreateFile,DeviceIOControl,CloseHandle这些都是WinCE系统的API函数。
应用程序可以通过这几个API与流驱动进行交互。
应用层调用CreateFile,会间接调用流驱动的XXX_Open,打开流驱动
应用层调用DeviceIOControl,会调用流驱动的XXX_IOControl,针对不同的Ioctls,做相应的工作。
应用层调用CloseH……
[/Quote]
这些我已经搞清楚了,我迷糊就在于我自己写了一个驱动,驱动生成了一个GPIODrv.dll文件,那我在C#中编写应用程序时,需不需要将这个文件用DllImport引用进来,如果需要,如何使用?
popdrummer
2011-11-17
打赏
举报
回复
[Quote=引用 3 楼 northcan 的回复:]
回完了帖子才发现楼主的结贴率:0.00%
[/Quote]
呵呵,这是我发的第二个帖子,第一个帖子还没有解答完,谢谢你的回答,我试一下
northcan
2011-11-17
打赏
举报
回复
回完了帖子才发现楼主的结贴率:
0.00%
northcan
2011-11-17
打赏
举报
回复
CreateFile,DeviceIOControl,CloseHandle这些都是WinCE系统的API函数。
应用程序可以通过这几个API与流驱动进行交互。
应用层调用CreateFile,会间接调用流驱动的XXX_Open,打开流驱动
应用层调用DeviceIOControl,会调用流驱动的XXX_IOControl,针对不同的Ioctls,做相应的工作。
应用层调用CloseHandle,会调用流驱动的XXX_Close,关闭驱动
c#是托管代码,不像native c++,c++可以直接调用这几个Windows CE的API函数。
c#需要先调用DllImport,引入这些函数的声明,之后就可以像c++一样使用它们了。
具体这几个函数的用法,参考MSDN。
91program
2011-11-17
打赏
举报
回复
CreateFile,DeviceIOControl,CloseHandle 这些函数是 CE 系统的,搞清楚调用方法都可以有。
popdrummer
2011-11-17
打赏
举报
回复
[Quote=引用 6 楼 northcan 的回复:]
呵呵,看来你没看懂我的回复。
GPIODrv.dll是驱动
------------
应用
------------
系统
------------
驱动
------------
应用层 需要通过 系统 才能够让驱动完成某种工作。驱动是由系统来管理的。
所以你写应用的时候,不用也不能够去管GPIODrv.dll。
我上面已经说了,你调用的是系统的API,比如Cr……
[/Quote]
已经成功了,谢谢你的帮助,加分结贴!
northcan
2011-11-17
打赏
举报
回复
呵呵,看来你没看懂我的回复。
GPIODrv.dll是驱动
------------
应用
------------
系统
------------
驱动
------------
应用层 需要通过 系统 才能够让驱动完成某种工作。驱动是由系统来管理的。
所以你写应用的时候,不用也不能够去管GPIODrv.dll。
我上面已经说了,你调用的是系统的API,比如CreateFile,系统会去调用你GPIODrv.dll导出的XXX_Open函数。而不是你应用层直接调用GPIODrv.dll的导出函数。
楼主应该补一补操作系统的知识吧。
具体点,在wince下驱动是有驱动管理器device.dll来加载并管理的。你在写应用的时候不会直接调用它。
C#
写
的驱动加载程序
在Windows操作系统
中
,
驱动程序
是系统与硬件设备之间的重要桥梁,它们允许操作系统控制硬件并执行特定功能。
C#
通常不用于编
写
底层硬件驱动,因为它是一种高级语言,而驱动通常由C或C++编
写
,但这并不意味着不能用
C#
...
C#
驱动备份神器
然后再在
C#
(应用程序是使用的
C#
WinForm ,
驱动程序
必须和这个应用程序通信)
中
通过平台
调用
, 访问这个 DLL ,这样就可以实现
驱动程序
的动态加载以及动态启动服务和停止服务等等操作了。 而在下面呢,我也算是...
C#
usb 无驱动 POS打印 小票打印
C#
usb 无驱动 POS打印 小票打印 visual studio 2012 绝对可以用
C#
研华PCI1716板卡接口程序
在
C#
程序
中
,我们需要通过特定的库来
调用
这些功能,这个库通常是由硬件制造商提供的
驱动程序
或API。 在给定的文件列表
中
,我们有三个关键文件: 1. Ads1716Api.cs:这是包含研华PCI1716板卡API函数的类库。这些...
C#
调用
Labview DLL案例,源码,文档
才包内包括了labview生成DLL源码,.NET
调用
DLL源码,还有开发过程的源码。希望能帮到大家,如有问题请联系我QQ330876583。...程序我已经测试过了没有问题,如有些问题没有详细
写
清楚,可以直接联系我。
嵌入开发(WinCE)
19,520
社区成员
41,567
社区内容
发帖
与我相关
我的任务
嵌入开发(WinCE)
硬件/嵌入开发 嵌入开发(WinCE)
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章