DeviceIoControl 控制代码
DeviceIoControl control codes
我在 C# 中使用 deviceIoControl 函数,我需要一个控制代码来定义将要发生的事情。
我正在寻找他们的价值,但我只能找到他们的名字,
例如 FSCTL_FILESYSTEM_GET_STATISTICS.
如何知道 decixeIoControl 函数的代码值?
谢谢!
您要查找的值在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)
您可以通过这种方式计算任何其他控制代码,同时请检查以下内容link:
https://docs.microsoft.com/tr-tr/windows/win32/api/ioapiset/nf-ioapiset-deviceiocontrol#remarks
我在 C# 中使用 deviceIoControl 函数,我需要一个控制代码来定义将要发生的事情。 我正在寻找他们的价值,但我只能找到他们的名字, 例如 FSCTL_FILESYSTEM_GET_STATISTICS.
如何知道 decixeIoControl 函数的代码值?
谢谢!
您要查找的值在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)
您可以通过这种方式计算任何其他控制代码,同时请检查以下内容link:
https://docs.microsoft.com/tr-tr/windows/win32/api/ioapiset/nf-ioapiset-deviceiocontrol#remarks