【问题标题】:DeviceIoControl control codesDeviceIoControl 控制代码
【发布时间】:2020-08-09 22:25:17
【问题描述】:

我在 c# 中使用 deviceIoControl 函数,我需要一个控制代码来定义会发生什么。 我正在寻找他们的价值观,但我只能找到他们的名字, 例如 FSCTL_FILESYSTEM_GET_STATISTICS。

如何知道 decixeIoControl 函数的代码值?

谢谢!

【问题讨论】:

    标签: c# deviceiocontrol


    【解决方案1】:

    您要查找的值在 winioctl.h 中定义

    #define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,24,METHOD_BUFFERED,FILE_ANY_ACCESS)
    

    而CTL_CODE定义如下:

    #define CTL_CODE(DeviceType,Function,Method,Access) (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
    

    因此;观察以下常量的值:(都在 winioctl.h 中)

    DeviceType: #define FILE_DEVICE_FILE_SYSTEM 0x00000009
    Function: 24 (Passed in as constant)
    Method: #define METHOD_BUFFERED 0
    Access: #define FILE_ANY_ACCESS 0
    

    计算结果为:

    (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
    
    = (9 << 16) | (0 << 14) | (24 << 2) | (0)
    
    = 0x00090060 (hexadecimal)
    

    或者,

    = 589920 (decimal)
    

    您可以通过这种方式计算任何其他控制代码,也请查看以下链接:

    https://docs.microsoft.com/tr-tr/windows/win32/api/ioapiset/nf-ioapiset-deviceiocontrol#remarks

    【讨论】:

      猜你喜欢
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 2020-10-20
      • 2010-09-12
      • 2018-10-04
      相关资源
      最近更新 更多