我正在使用c#中的deviceIoControl函数,我需要一个控制代码来定义将发生什么。我正在查找它们的值,但我只能找到它们的名称,例如FSCTL_FILESYSTEM_GET_STATISTICS。
如何知道decixeIoControl函数的代码值?
谢谢!
发布于 2020-04-26 21:49:05
您要查找的值在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
https://stackoverflow.com/questions/61440688
复制相似问题