我爱Aspx >> VC.Net >> 实战DeviceIoControl 之一:通过API访问设备驱动程序Q 设备句柄是从哪里获得的?
A
设备句柄可以用API函数CreateFile获得。它的原型为 HANDLE CreateFile( LPCTSTR lpFileName, // 文件名/设备路径 DWORD dwDesiredAccess, // 访问方式 DWORD dwShareMode, // 共享方式 LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 安全描述符指针 DWORD dwCreationDisposition, // 创建方式 DWORD dwFlagsAndAttributes, // 文件属性及标志 HANDLE hTemplateFile // 模板文件的句柄 );
CreateFile这个函数用处很多,这里我们用它“打开”设备驱动程序,得到设备的句柄。操作完成后用CloseHandle关闭设备句柄。
与普通文件名有所不同,设备驱动的“文件名”(常称为“设备路径”)形式固定为“\\.\DeviceName”(注意在C程序中该字符串写法为“\\\\.\\DeviceName”),DeviceName必须与设备驱动程序内定义的设备名称一致。
一般地,调用CreateFile获得设备句柄时,访问方式参数设置为0或GENERIC_READ|GENERIC_WRITE,共享方式参数设置为FILE_SHARE_READ|FILE_SHARE_WRITE,创建方式参数设置为OPEN_EXISTING,其它参数设置为0或NULL。
Q 可是,我怎么知道设备名称是什么呢?
A 一些存储设备的名称是微软定义好的,不可能有什么变化。大体列出如下
| 软盘驱动器 | A:, B: |
| 硬盘逻辑分区 | C:, D:, E:, ... |
| 物理驱动器 | PHYSICALDRIVEx |
| CD-ROM, DVD/ROM | CDROMx |
| 磁带机 | TAPEx |
Windows中文输入法的实现[05-21]
用Delphi 6开发ASP上传组件详解[05-21]
”新快乐时光“再解[05-21]
Notes中有关C++API的注意事项[05-21]
Domino SMTP设置[05-21]
游戏修改器[05-21]
windows API简介--用户接口(系列..[05-21]
一个应用二叉搜索树实现的字典,..[05-21]
一个逻辑推理类--从规则推测前提..[05-21]
windows API简介(系列1)[05-21]