2016-03-24 8 views
-1

von der Microsoft-doku:Liste der Inhalt des Win32-Gerätenamensraum

Das "\\.\" Präfix wird die Win32-Gerät Namespace statt die Datei Namespace Win32 zuzugreifen. Auf diese Weise wird der Zugriff auf physische Datenträger und Volumes direkt ausgeführt, ohne die Datei zu durchlaufen, wenn die API diesen Zugriffstyp unterstützt. Auf diese Weise können Sie auf viele andere Geräte als Disketten zugreifen (z. B. mit den Funktionen CreateFile und DefineDosDevice).

Wenn Sie beispielsweise die serielle Kommunikation des Systems Port 1 öffnen möchten, können Sie "COM1" im Aufruf der CreateFile-Funktion verwenden. Das funktioniert, weil COM1-COM9 Teil der reservierten Namen im NT Namespace sind, obwohl mit dem "\\.\" Präfix auch mit diesen Gerätenamen arbeiten.

Meine Frage ist, was in diesem Namensraum verfügbar ist. Gibt es eine Liste von Geräten und wo kann ich sie bekommen? (Ich glaube, ich dieses Thema nicht verstanden hätte, wenn ich Gerät höre ich von einer Art von Datei in einem Verzeichnis zu denken..)

EDIT:

Ok, werde ich meine eigene Frage beantworten. Es gibt eine Software namens WinObj, mit der man die Information sehen kann.

+0

Sie, dass als Antwort posten. –

Antwort

0

Ok, ich werde meine eigene Frage beantworten. Es gibt eine Software namens WinObj, mit der man die Information sehen kann.

0

können Sie den QueryDosDevice Win32-API-Aufruf verwenden, um alle Win32-Gerätenamen zu erhalten.

#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; 
} 

Nebenbei, WinObj nicht in erster Linie Win32 Gerätenamen, listet Windows NT-Objektnamen auf. Obwohl die Gerätenamen Win32 unter dem GLOBAL?? Knoten in WinObj finden.

Siehe „Weitere Informationen“ in https://support.microsoft.com/en-us/kb/100027

Verwandte Themen