[英]List the content of the Win32 device namespace
從microsoft-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 %d\n", error);
return 1;
}
for (int i = 0; i < wchar_count; i++) {
if (devicenames[i] == '\0')
devicenames[i] = '\n';
}
wprintf(L"%s", devicenames);
return 0;
}
順便說一句,WinObj並不主要列出Win32設備名稱,而是列出Windows NT對象名稱。 盡管可以在GLOBAL??
下找到Win32設備名稱GLOBAL??
WinObj中的節點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.