Introducción a los nombres de dispositivo MS-DOS
Un objeto de dispositivo con nombre creado por un controlador que no es WDM normalmente tiene un nombre de dispositivo MS-DOS. Un nombre de dispositivo MS-DOS es un vínculo simbólico en el administrador de objetos con un nombre del formato \DosDevices\DosDeviceName.
Un ejemplo de un dispositivo con un nombre de dispositivo MS-DOS es el puerto serie COM1. Tiene el nombre del dispositivo MS-DOS \DosDevices\COM1. Del mismo modo, la unidad C tiene el nombre \DosDevices\C:.
Los controladores WDM no suelen proporcionar nombres de dispositivo MS-DOS para sus dispositivos. En su lugar, los controladores WDM usan la rutina IoRegisterDeviceInterface para registrar una interfaz de dispositivo. La interfaz de dispositivo especifica los dispositivos por sus funcionalidades, en lugar de por una convención de nomenclatura determinada. Para obtener más información, consulte Clases de interfaz de dispositivo.
Los controladores deben proporcionar un nombre de dispositivo MS-DOS solo si el dispositivo es necesario para tener un nombre de dispositivo MS-DOS conocido específico para trabajar con programas en modo usuario.
Un controlador proporciona un nombre de dispositivo MS-DOS para un objeto de dispositivo mediante la rutina IoCreateSymbolicLink para crear un vínculo simbólico al dispositivo. Por ejemplo, en el ejemplo de código siguiente se crea un vínculo simbólico de \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. */
}
Tenga en cuenta que el sistema admite varias versiones del directorio \DosDevices . Asegúrese de que el controlador crea sus vínculos simbólicos en la versión que pretende. Para obtener más información, consulte Nombres de dispositivo MS-DOS locales y globales.
Para acceder al espacio de nombres DosDevices desde el modo de usuario, especifique \\.\ al abrir un nombre de archivo. Puede abrir un dispositivo correspondiente en modo de usuario llamando a CreateFile().
Por ejemplo, en el ejemplo de código siguiente se abre el dispositivo \\DosDevices\\DosDeviceName en modo de usuario.
file = CreateFileW(L"\\\\.\\DosDeviceName",
GENERIC READ | GENERIC WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
También se puede crear un vínculo simbólico a partir de una aplicación en modo de usuario mediante la rutina DefineDosDevice en modo de usuario. Para obtener más información, consulte la Microsoft Windows SDK.