首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DeviceIoControl控制代码

DeviceIoControl控制代码
EN

Stack Overflow用户
提问于 2020-04-26 20:22:09
回答 1查看 324关注 0票数 0

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

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

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-26 21:49:05

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

代码语言:javascript
复制
#define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,24,METHOD_BUFFERED,FILE_ANY_ACCESS)

CTL_CODE定义如下:

代码语言:javascript
复制
#define CTL_CODE(DeviceType,Function,Method,Access) (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))

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

代码语言:javascript
复制
DeviceType: #define FILE_DEVICE_FILE_SYSTEM 0x00000009
Function: 24 (Passed in as constant)
Method: #define METHOD_BUFFERED 0
Access: #define FILE_ANY_ACCESS 0

计算结果为:

代码语言:javascript
复制
(((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))

= (9 << 16) | (0 << 14) | (24 << 2) | (0)

= 0x00090060 (hexadecimal)

或,

代码语言:javascript
复制
= 589920 (decimal)

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61440688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档