列出Win32设备命名空间的内容
List the content of the Win32 device namespace
来自微软doku:
"\."
前缀将访问Win32设备命名空间,而不是Win32文件命名空间。这就是访问物理磁盘和卷是直接完成的,不需要经过文件系统,如果API支持这种类型的访问。您可以访问许多以这种方式(使用CreateFile和DefineDosDevice功能)。例如,如果要打开系统的串行通信端口1,您可以在对CreateFile函数的调用中使用"COM1"。这是因为COM1–COM9是NT中保留名称的一部分命名空间,尽管使用
"\."
前缀也可以使用这些设备名称。
我的问题是,这个命名空间中有什么可用。有设备清单吗?在哪里可以买到?(我想我不理解这个话题。当我听到设备时,我会想到目录中的某种文件。)
编辑:
好的,我来回答我自己的问题。有一个叫WinObj的软件,人们可以用它来查看信息。
好的,我来回答我自己的问题。有一个叫WinObj的软件,人们可以用它来查看信息。
您可以使用QueryDosDevice
Win32 API调用来获取所有Win32设备名称。
#include <windows.h>
#include <stdio.h>
#define DEVBUFSIZ (128 * 1024) /* No recommended value - ~14K for me */
int main(int argc, char** argv)
{
wchar_t devicenames[DEVBUFSIZ] = L"";
int error = 0;
int wchar_count = 0;
wchar_count = QueryDosDeviceW(
NULL, /* lpDeviceName - NULL gives all */
devicenames,
DEVBUFSIZ);
if (wchar_count == 0) {
fprintf(stderr, "QueryDosDeviceW failed with error code %dn", error);
return 1;
}
for (int i = 0; i < wchar_count; i++) {
if (devicenames[i] == ' ')
devicenames[i] = 'n';
}
wprintf(L"%s", devicenames);
return 0;
}
顺便说一句,WinObj并不是主要列出Win32设备名称,而是列出Windows NT对象名称。尽管Win32设备名称可以在WinObj中的GLOBAL??
节点下找到。
请参阅中的"更多信息"https://support.microsoft.com/en-us/kb/100027
相关文章:
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- 通过继承类使用来自不同命名空间的运算符
- 使用命名空间时出现多个定义错误
- CUDA内核和数学函数的显式命名空间
- 嵌套的匿名命名空间
- CMakeLists.txt中的命名空间表示法
- 类是C++中的命名空间吗
- 在命名空间中使用全局命名空间中的函数
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- '使用命名空间{嵌套在另一个命名空间中的某个命名空间}"
- 是否可以将函数导入命名空间,但不能导出它?
- C++ C++类中的命名空间降级
- 如何使用 soong 命名空间来有条件地编译模块
- 使用 Clang++ 有没有办法将文件作为命名空间等包含?
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何通过命名空间调用非静态方法
- 列出Win32设备命名空间的内容