来自微软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