Condividi tramite


Introduzione ai nomi dei dispositivi MS-DOS

Un oggetto dispositivo denominato creato da un driver non WDM ha in genere un nome di dispositivo MS-DOS. Un nome di dispositivo MS-DOS è un collegamento simbolico nel gestore oggetti con il nome \DosDevices\DosDeviceName.

Un esempio di dispositivo con un nome di dispositivo MS-DOS è la porta seriale COM1. Ha il nome del dispositivo MS-DOS \DosDevices\COM1. Analogamente, l'unità C ha il nome \DosDevices\C:.

I driver WDM in genere non forniscono nomi di dispositivo MS-DOS per i propri dispositivi. I driver WDM usano invece la routine IoRegisterDeviceInterface per registrare un'interfaccia del dispositivo. L'interfaccia del dispositivo specifica i dispositivi in base alle relative funzionalità, anziché in base a una particolare convenzione di denominazione. Per altre informazioni, vedere Classi di interfaccia dispositivo.

I driver sono necessari per specificare un nome di dispositivo MS-DOS solo se il dispositivo deve avere un nome di dispositivo MS-DOS noto specifico per l'uso con i programmi in modalità utente.

Un driver fornisce un nome di dispositivo MS-DOS per un oggetto dispositivo usando la routine IoCreateSymbolicLink per creare un collegamento simbolico al dispositivo. L'esempio di codice seguente, ad esempio, crea un collegamento simbolico da \DosDevices\DosDeviceName a \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. */
}

Si noti che il sistema supporta più versioni della directory \DosDevices . Assicurarsi che il driver crei i relativi collegamenti simbolici nella versione desiderata. Per altre informazioni, vedere Nomi dei dispositivi MS-DOS locali e globali.

Per accedere allo spazio dei nomi DosDevices dalla modalità utente, specificare \\.\ quando si apre un nome file. È possibile aprire un dispositivo corrispondente in modalità utente chiamando CreateFile().

Ad esempio, nell'esempio di codice seguente viene aperto il dispositivo \\DosDevices\\DosDeviceName in modalità utente.

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

È anche possibile creare un collegamento simbolico da un'applicazione in modalità utente usando la routine DefineDosDevice in modalità utente. Per altre informazioni, vedere la Microsoft Windows SDK.