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.