DeviceIoControl 发送控制代码到指定设备驱动程序
参数解释:
hDevice Long,设备句柄
dwIoControlCode Long,应用程序调用驱动程序的控制命令,就是IOCTL_XXX IOCTLs。
lpInBuffer Any,应用程序传递给驱动程序的数据缓冲区地址。
nInBufferSize Long,应用程序传递给驱动程序的数据缓冲区大小,字节数。
lpOutBuffer Any,驱动程序返回给应用程序的数据缓冲区地址。
nOutBufferSize Long,驱动程序返回给应用程序的数据缓冲区大小,字节数。
lpBytesReturned Long,驱动程序实际返回给应用程序的数据字节数地址。
lpOverlapped OVERLAPPED,这个结构用于重叠操作。针对同步操作,请用ByVal As Long传递零值。
通知消息宏定义方法:
CTL_CODE:用于创建一个唯一的32位系统I/
O控制代码,这个控制代码包括4部分组成:
DeviceType(设备类型,高16位(16-
31位)),
Access(访问限制,14-
15位),
Function(功能2-
13 位),
Method(I/
O访问内存使用方式)。
DeviceType
定义为给定的设备IOCTL的类型。
微软使用的值的范围是0-
0X7FFF;值0X800-
0XFFF是由程序员自己定义。
下面的设备类型由系统定义的:
Method I/
O访问内存使用方式
METHOD_BUFFERED 使用缓冲区方式操作
METHOD_IN_DIRECT 使用直接写方式操作
METHOD_OUT_DIRECT 使用直接读方式操作
METHOD_NEITHER 使用其他方式操作
Access 访问权限
下表显示了此参数的可能标志。该FILE_ACCESS_ANY通常是正确的值。
FILE_ANY_ACCESS Request all access.
FILE_READ_ACCESS Request read access. Can be used with FILE_WRITE_ACCESS.
FILE_WRITE_ACCESS Request write access. Can be used with FILE_READ_ACCESS.
Return Values(返回值)
None.
Remarks(备注)
宏可以被用来定义IOCTL和FSCTL功能控制代码。所有的IOCTL必须以这种方式定义,以确保由微软,OEM厂商,和IHV使用的值不重叠。
转载于:https://www.cnblogs.com/IMyLife/p/4826170.html
转载请注明原文地址: https://mac.8miu.com/read-6044.html