Dela via


Introduktion till MS-DOS enhetsnamn

Ett namngivet enhetsobjekt som skapas av en icke-WDM-drivrutin har vanligtvis ett MS-DOS enhetsnamn. Ett MS-DOS enhetsnamn är en symbolisk länk i objekthanteraren med ett namn av formen \DosDevices\DosDeviceName.

Ett exempel på en enhet med ett MS-DOS enhetsnamn är serieporten COM1. Den har MS-DOS enhetsnamnet \DosDevices\COM1. På samma sätt har C-enheten namnet \DosDevices\C:.

WDM-drivrutiner anger vanligtvis inte MS-DOS enhetsnamn för sina enheter. I stället använder WDM-drivrutiner IoRegisterDeviceInterface-rutinen för att registrera ett enhetsgränssnitt. Enhetsgränssnittet anger enheter efter deras funktioner i stället för en viss namngivningskonvention. Mer information finns i Enhetsgränssnittsklasser.

För drivrutiner är det nödvändigt att ange ett MS-DOS enhetsnamn endast om enheten måste ha ett specifikt välkänt MS-DOS enhetsnamn för att fungera med användarlägesprogram.

En drivrutin tillhandahåller ett MS-DOS enhetsnamn för ett enhetsobjekt med hjälp av rutinen IoCreateSymbolicLink för att skapa en symbolisk länk till enheten. I följande kodexempel skapas till exempel en symbolisk länk från \DosDevices\DosDeviceName till \Device\DeviceName.

UNICODE_STRING DeviceName;
UNICODE_STRING DosDeviceName;
NTSTATUS status;

RtlInitUnicodeString(&DeviceName, L"\\Device\\DeviceName");
RtlInitUnicodeString(&DosDeviceName, L"\\DosDevices\\DosDeviceName");
status = IoCreateSymbolicLink(&DosDeviceName, &DeviceName);
if (!NT_SUCCESS(status)) {
  /* Symbolic link creation failed.  Handle error appropriately. */
}

Observera att systemet stöder flera versioner av katalogen \DosDevices . Se till att drivrutinen skapar sina symboliska länkar i den version som du vill använda. Mer information finns i Lokala och globala MS-DOS enhetsnamn.

Om du vill komma åt DosDevices-namnområdet från användarläget anger du \\.\ när du öppnar ett filnamn. Du kan öppna en motsvarande enhet i användarläge genom att anropa CreateFile().

I följande kodexempel öppnas till exempel enheten \\DosDevices\\DosDeviceName i användarläge.

file = CreateFileW(L"\\\\.\\DosDeviceName",
  GENERIC READ | GENERIC WRITE,
    0,
    NULL,
    OPEN_EXISTING,
    0,
    NULL);

En symbolisk länk kan också skapas från ett användarlägesprogram med hjälp av användarlägesrutinen DefineDosDevice . Mer information finns i Microsoft Windows SDK.