Compartir a través de


FSCTL_DISMOUNT_VOLUME IOCTL (winioctl.h)

Desmonta un volumen independientemente de si el volumen 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 parámetros siguientes.

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
);

Observaciones

El código de control de FSCTL_DISMOUNT_VOLUME intentará desmontar un volumen independientemente de si algún otro proceso está usando 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 de hDevice pasado a DeviceIoControl debe ser un identificador de 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 de la forma siguiente:

\\.\X:

donde X es una letra de partición de unidad de disco duro, una unidad de disco disquete o CD-ROM unidad. 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 en cuanto 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 del sistema de archivos de volumen

  1. Abra un volumen.
  2. Bloquee el volumen.
  3. Dar formato al volumen.
  4. Desmonte 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 de sistema de archivos NTFS.

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

Tecnología Soportado
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 Valor
cliente mínimo admitido Windows XP [solo aplicaciones de escritorio]
servidor mínimo admitido Windows Server 2003 [solo aplicaciones de escritorio]
encabezado de winioctl.h (incluya Windows.h)

Consulte también

CreateFile

DeviceIoControl

ExitThread

FSCTL_LOCK_VOLUME

GetLogicalDrives

códigos de control de administración de volúmenes