c - 在 Visual Studio 中设置 FILE_ATTRIBUTE_DEVICE

标签 c windows visual-studio winapi

我想知道是否可以在 Visual C++ 中调用 CreateFile 函数来创建具有属性 FILE_ATTRIBUTE_DEVICE(0x00000040 十六进制,64 十进制)的文件。根据 MSDN API,FILE_ATTRIBUTE_DEVICE 是保留的,因此我不能使用它,但我知道一定有某种方法可以创建具有此类属性的文件。我必须做什么才能做到这一点?是否有其他 API 调用,或者我是否需要创建一个新结构?

谢谢

最佳答案

该标志的存在是为了识别代表设备而不是文件的句柄。例如,使用 CreateFile 打开 \\.\C: 返回驱动器 device 的句柄,而不是文件或目录句柄。

您不能使用此标志创建新的"file",因为文件不是设备。使用此标志发明/创建(而不是打开)文件句柄需要编写设备驱动程序来提供一个(具体来说,您为设备对象创建一个名称,用户模式客户端可以将其传递给 CreateFile - 内核创建文件句柄并设置 FILE_ATTRIBUTE_DEVICE 标志)。

CreateFile DeviceIOControl 的页面和备注部分页面应该进一步澄清一些事情。

关于c - 在 Visual Studio 中设置 FILE_ATTRIBUTE_DEVICE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3419527/

相关文章:

c++ - 我的程序在 Windows 机器上崩溃但在 Linux 上运行正常

c - 不兼容的指针类型 char** 和 char* 错误

windows - 如何在 Windows UAP 应用程序中解决 "' IAsyncActionWithProgress< >' is defined in an assembly that is not referenced"

visual-studio - 进程与处理器的处理器时间百分比

c# - foreach 循环中的 String.Format 用于在同一行中打印

C 编程程序仅打印变量中的第一个值

受控无限循环使用过多资源

c# - Windows:如何将路径很长的文件移动到回收站?

windows - 是否可以为 Windows 7 和/或 8 创建不区分大小写的自定义区域设置?

c++ - 尝试编译 .dll 时,出现 interface 关键字错误