zoukankan      html  css  js  c++  java
  • Windows驱动开发-DeviceIoControl函数参数dwIoControlCode

    函数语法

    BOOL DeviceIoControl(
      HANDLE       hDevice,
      DWORD        dwIoControlCode,
      LPVOID       lpInBuffer,
      DWORD        nInBufferSize,
      LPVOID       lpOutBuffer,
      DWORD        nOutBufferSize,
      LPDWORD      lpBytesReturned,
      LPOVERLAPPED lpOverlapped
    );
    第二个参数dwIoControlCode就是由CTL_CODE宏定义的
    #define CTL_CODE(DeviceType, Function, Method, Access) (  ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))

    CTL_CODE:用于创建一个唯一的32位系统I/O控制代码,这个控制代码包括4部分组成:

    DeviceType(设备类型,高16位(16-31位)),
    Access(访问限制,14-15位),
    Function(功能2-13位),
    Method(I/O访问内存使用方式)。

    DeviceType例子:16-31位

    #define FILE_DEVICE_HOLOGRAPHIC         0x0000005b
    #define FILE_DEVICE_SDFXHCI             0x0000005c
    #define FILE_DEVICE_UCMUCSI             0x0000005d

    Access例子:最大2,两个位就够,14,15位

    #define FILE_ANY_ACCESS                 0
    #define FILE_SPECIAL_ACCESS    (FILE_ANY_ACCESS)
    #define FILE_READ_ACCESS          ( 0x0001 )    // file & pipe
    #define FILE_WRITE_ACCESS         ( 0x0002 )    // file & pipe

    Method:最大3,两个位,0,1位

    #define METHOD_BUFFERED                 0
    #define METHOD_IN_DIRECT                1
    #define METHOD_OUT_DIRECT               2
    #define METHOD_NEITHER                  3

    Function:占12个位,2-13位,搞不懂这个干什么用的

    Function codes 0-2047(0x000-0x7FF) are reserved for Microsoft; 
    codes 2048-4095(0x800-0xFFF) are reserved for OEMs and IHVs

     

  • 相关阅读:
    IOS中 init和initialize
    UITableView的常用方法
    加载xib文件的两种方式
    openfire修改服务器名称方法
    POST
    ObjectiveC的动态特性
    枚举 UIButton补充
    深入ObjectiveC的动态特性 Runtime
    IOS中 类扩展 xib
    ObjectiveC语法之代码块(block)的使用
  • 原文地址:https://www.cnblogs.com/a-s-m/p/12330308.html
Copyright © 2011-2022 走看看