Definición de un nombre de dispositivo MS-DOS

Un nombre de dispositivo MS-DOS es una unión que apunta a la ruta de acceso de un dispositivo MS-DOS. Estas uniones constituyen el espacio de nombres del dispositivo MS-DOS. Llame a las funciones DefineDosDevice y SetVolumeMountPoint para crear y modificar estas uniones. DeleteVolumeMountPoint elimina una unión creada por SetVolumeMountPoint y DefineDosDevice elimina las uniones que crea.

Después de definir un nombre de dispositivo MS-DOS, permanece visible para todos los procesos.

  • Todos los dispositivos MS-DOS se identifican mediante Windows mediante un identificador de autenticación. Un identificador de autenticación es el LUID (identificador único local) asociado a cada sesión de inicio de sesión cuando se crea.
  • La visibilidad de un nombre de dispositivo MS-DOS se clasifica como global o local, y se define como tal por su inclusión en los espacios de nombres del dispositivo MS-DOS global y el dispositivo MS-DOS local. Todos los usuarios pueden tener acceso al contenido de los dispositivos MS-DOS en el espacio de nombres Global, y solo el usuario cuyo token de acceso contiene el AuthenticationID asociado a ese espacio de nombres local ms-DOS puede tener acceso al contenido de los dispositivos MS-DOS locales.

Varios espacios de nombres del dispositivo MS-DOS local y solo puede existir un espacio de nombres de dispositivo MS-DOS global a la vez y en un equipo.

Tenga en cuenta que solo los procesos que se ejecutan en el contexto localSystem pueden llamar a DefineDosDevice para crear un dispositivo MS-DOS en el espacio de nombres global del dispositivo MS-DOS. Además, el espacio de nombres de dispositivo MS-DOS local correspondiente a un AuthenticationID específico se elimina cuando se quita la última referencia a ese AuthenticationID.

Cuando el código consulta un nombre de dispositivo MS-DOS existente mediante una llamada a QueryDosDevice, primero busca en el espacio de nombres del dispositivo MS-DOS local. Si no se encuentra allí, la función buscará en el espacio de nombres global MS-DOS Device. Cuando el código consulta todos los nombres de dispositivo MS-DOS existentes a través de esta función, la lista de nombres que se devuelven depende de si se ejecuta en el contexto localSystem. Si es así, solo se devolverán los nombres de dispositivo MS-DOS incluidos en el espacio de nombres global MS-DOS Device. Si no es así, se devolverá una concatenación de los nombres de dispositivo en los espacios de nombres global y local del dispositivo MS-DOS. Si existe un nombre de dispositivo en ambos espacios de nombres, QueryDosDevice devolverá la entrada en el espacio de nombres Local MS-DOS Device. Esto también se aplica a la lista de todos los nombres de dispositivo MS-DOS devueltos por GetLogicalDrives y GetLogicalDriveStrings.

Tenga en cuenta que puede producirse el siguiente escenario:

  1. El usuario A, que no se ejecuta en el contexto localSystem, crea un nombre de dispositivo en el espacio de nombres del dispositivo LOCAL MS-DOS correspondiente y ese nombre de dispositivo no existe en el espacio de nombres global MS-DOS Device.
  2. El usuario B, que se ejecuta en el contexto localSystem, crea el mismo nombre de dispositivo en el espacio de nombres global del dispositivo MS-DOS.

En este escenario, el usuario A no tendrá acceso al nombre del dispositivo en el espacio de nombres global MS-DOS Device hasta que quite o cambie el nombre del dispositivo en su espacio de nombres de dispositivo MS-DOS local. Para reducir la probabilidad de que se produzca este escenario, se deben asignar letras de unidad MS-DOS en el espacio de nombres global ms-DOS device a partir de C: y terminar con Z:. Esta secuencia debe invertirse para la asignación de letras de unidad MS-DOS en el espacio de nombres del dispositivo MS-DOS local.

Si no se está ejecutando en el contexto localSystem, DefineDosDevice no le permitirá definir un nombre de dispositivo en el espacio de nombres Local MS-DOS Device si ese nombre de dispositivo ya existe en los espacios de nombres del dispositivo MS-DOS local o global. Llame a QueryDosDevice antes de llamar a DefineDosDevice para determinar si el nombre del dispositivo que desea definir existe en los espacios de nombres del dispositivo MS-DOS.

Asignar nombres a archivos, rutas de acceso y espacios de nombres