FSCTL_DISMOUNT_VOLUME IOCTL (winioctl.h)

Desmonta un volumen independientemente de si está en uso o no. Para obtener más información, vea la sección Comentarios.

Para realizar esta operación, llame a la función DeviceIoControl con los siguientes parámetros.

C++
BOOL DeviceIoControl(
  (HANDLE) hDevice,            // handle to a volume
  (DWORD) FSCTL_DISMOUNT_VOLUME,   // dwIoControlCodeNULL,                        // lpInBuffer0,                           // nInBufferSizeNULL,                        // lpOutBuffer0,                           // nOutBufferSize(LPDWORD) lpBytesReturned,   // number of bytes returned
  (LPOVERLAPPED) lpOverlapped  // OVERLAPPED structure
);

Comentarios

El código de control FSCTL_DISMOUNT_VOLUME intentará desmontar un volumen independientemente de si otros procesos usan el volumen, lo que puede tener resultados impredecibles para esos procesos si no contienen un bloqueo en el volumen. Para obtener información sobre cómo bloquear un volumen, consulte FSCTL_LOCK_VOLUME.

El identificador hDevice pasado a DeviceIoControl debe ser un identificador para un volumen, abierto para el acceso directo. Para recuperar un identificador de volumen, llame a CreateFile con el parámetro lpFileName establecido en una cadena del siguiente formulario:

\.\X:

donde X es una letra de partición de unidad de disco duro, una unidad de disco disquete o una unidad DE CD-ROM. La aplicación también debe especificar las marcas FILE_SHARE_READ y FILE_SHARE_WRITE en el parámetro dwShareMode de CreateFile.

Si el volumen especificado es un volumen del sistema o contiene un archivo de página, se produce un error en la operación.

Si otro proceso bloquea el volumen especificado, se produce un error en la operación. Para evitar que otro proceso bloquee el volumen, bloquee el volumen tan pronto como lo abra.

Un volumen desmontado tiene las siguientes propiedades:

  • No hay archivos abiertos.
  • El sistema operativo detecta el volumen.
El sistema operativo intenta montar un volumen desmontado en cuanto se intenta acceder a él. Por ejemplo, una llamada a GetLogicalDrives desencadena el sistema operativo para montar volúmenes desmontados.

Desmontar un volumen es útil cuando un volumen necesita desaparecer durante un tiempo. Por ejemplo, una aplicación que cambia un sistema de archivos de volumen del sistema de archivos FAT al sistema de archivos NTFS podría usar el procedimiento siguiente.

Para cambiar un sistema de archivos de volumen

  1. Abra un volumen.
  2. Bloquee el volumen.
  3. Formatear el volumen.
  4. Desmontar el volumen.
  5. Desbloquee el volumen.
  6. Cierre el identificador de volumen.
Una operación de desmontaje quita el volumen del reconocimiento del sistema de archivos FAT. Cuando el sistema operativo monta el volumen, aparece como un volumen del sistema de archivos NTFS.

En Windows 8 y Windows Server 2012, este código es compatible con las siguientes tecnologías.

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) Ver comentario
 

En csvFs, el nodo donde se emite el desmontaje verá una secuencia de desmontaje normal. En todos los demás nodos, FS invalidará todos los archivos abiertos.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado winioctl.h (incluya Windows.h)

Consulte también

CreateFile

DeviceIoControl

ExitThread

FSCTL_LOCK_VOLUME

GetLogicalDrives

Códigos de control de administración del volumen