Función DefineDosDeviceW (fileapi.h)

Define, redefine o elimina nombres de dispositivo MS-DOS.

Sintaxis

BOOL DefineDosDeviceW(
  [in]           DWORD   dwFlags,
  [in]           LPCWSTR lpDeviceName,
  [in, optional] LPCWSTR lpTargetPath
);

Parámetros

[in] dwFlags

Aspectos controlables de la función DefineDosDevice . Este parámetro puede ser uno o más de los siguientes valores.

Valor Significado
DDD_EXACT_MATCH_ON_REMOVE
0x00000004
Si se especifica este valor junto con DDD_REMOVE_DEFINITION, la función usará una coincidencia exacta para determinar qué asignación se va a quitar. Use este valor para asegurarse de que no elimina algo que no defina.
DDD_NO_BROADCAST_SYSTEM
0x00000008
No difunda el mensaje de WM_SETTINGCHANGE . De forma predeterminada, este mensaje se transmite para notificar al shell y a las aplicaciones del cambio.
DDD_RAW_TARGET_PATH
0x00000001
Usa la cadena lpTargetPath tal cual. De lo contrario, se convierte de una ruta de acceso ms-DOS a una ruta de acceso.
DDD_REMOVE_DEFINITION
0x00000002
Quita la definición especificada para el dispositivo especificado. Para determinar qué definición se va a quitar, la función recorre la lista de asignaciones del dispositivo, buscando una coincidencia de lpTargetPath con un prefijo de cada asignación asociada a este dispositivo. La primera asignación que coincide es la que se ha quitado y, a continuación, la función devuelve.

Si lpTargetPath es NULL o un puntero a una cadena NULL , la función quitará la primera asignación asociada al dispositivo y mostrará la inserción más reciente. Si no queda nada para salir, se quitará el nombre del dispositivo.

Si no se especifica este valor, la cadena a la que apunta el parámetro lpTargetPath se convertirá en la nueva asignación de este dispositivo.

[in] lpDeviceName

Puntero a una cadena de nombre de dispositivo MS-DOS que especifica el dispositivo que la función está definiendo, redefiniendo o eliminando. La cadena de nombre del dispositivo no debe tener dos puntos como último carácter, a menos que se defina, vuelva a definir, redefinir o eliminar una letra de unidad. Por ejemplo, la unidad C sería la cadena "C:". En ningún caso se permite una barra diagonal inversa final (\).

[in, optional] lpTargetPath

Puntero a una cadena de ruta de acceso que implementará este dispositivo. La cadena es una cadena de ruta de acceso ms-DOS a menos que se especifique la marca de DDD_RAW_TARGET_PATH , en cuyo caso esta cadena es una cadena de ruta de acceso.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Los nombres de dispositivo MS-DOS se almacenan como uniones en el espacio de nombres del objeto. El código que convierte una ruta de acceso de MS-DOS en una ruta de acceso correspondiente usa estas uniones para asignar dispositivos MS-DOS y letras de unidad. La función DefineDosDevice permite a una aplicación modificar las uniones usadas para implementar el espacio de nombres de dispositivo MS-DOS.

Para recuperar la asignación actual de un nombre de dispositivo MS-DOS determinado o para obtener una lista de todos los dispositivos MS-DOS conocidos para el sistema, use la función QueryDosDevice .

Para definir una asignación de letras de unidad que sea persistente entre arranques y no un recurso compartido de red, use la función SetVolumeMountPoint . Si el volumen que se va a montar ya tiene asignada una letra de unidad, use la función DeleteVolumeMountPoint para quitar la asignación.

Las letras de unidad y los nombres de dispositivo definidos en el tiempo de arranque del sistema están protegidos contra la redefinición y eliminación, a menos que el usuario sea administrador.

A partir de Windows XP, esta función crea un nombre de dispositivo para un llamador que no se ejecuta en el contexto "LocalSystem" en su propio espacio de nombres de dispositivo MS-DOS local. Si el autor de la llamada se ejecuta en el contexto "LocalSystem", la función crea el nombre del dispositivo en el espacio de nombres del dispositivo MS-DOS global. Para obtener más información, vea Definir un nombre de dispositivo MS DOS y nombres de archivo, rutas de acceso y espacios de nombres.

En Windows 8 y Windows Server 2012, esta función es compatible con las tecnologías siguientes.

Tecnología Compatible
Protocolo Bloque de mensajes del servidor (SMB) 3.0 No
Conmutación por error transparente (TFO) de SMB 3.0 No
SMB 3.0 con recursos compartidos de archivos de escalabilidad horizontal (SO) No
Sistema de archivos de Volumen compartido de clúster (CsvFS) No
Sistema de archivos resistente a errores (ReFS) No
 

SMB no admite funciones de administración de volúmenes. En csvFs, no se replicará un nuevo nombre en los demás nodos del clúster.

Ejemplos

Para obtener un ejemplo, consulte Edición de asignaciones de letras de unidad.

Requisitos

   
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado fileapi.h (incluya Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

DeleteVolumeMountPoint

QueryDosDevice

SetVolumeMountPoint

Funciones de administración de volúmenes