FSCTL_DISMOUNT_VOLUME IOCTL (winioctl.h)

Desmonta um volume, independentemente dele estar ou não em uso no momento. Para obter mais informações, consulte a seção Comentários.

Para executar essa operação, chame a função DeviceIoControl com os parâmetros a seguir.

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

Comentários

O código de controle FSCTL_DISMOUNT_VOLUME tentará desmontar um volume, independentemente de outros processos estarem usando ou não o volume, o que poderá ter resultados imprevisíveis para esses processos se eles não mantiverem um bloqueio no volume. Para obter informações sobre como bloquear um volume, consulte FSCTL_LOCK_VOLUME.

O identificador hDevice passado para DeviceIoControl deve ser um identificador para um volume, aberto para acesso direto. Para recuperar um identificador de volume, chame CreateFile com o parâmetro lpFileName definido como uma cadeia de caracteres do seguinte formulário:

\.\X:

em que X é uma letra de partição de disco rígido, uma unidade de disco disquete ou uma unidade CD-ROM. O aplicativo também deve especificar os sinalizadores FILE_SHARE_READ e FILE_SHARE_WRITE no parâmetro dwShareMode de CreateFile.

Se o volume especificado for um volume do sistema ou contiver um arquivo de página, a operação falhará.

Se o volume especificado for bloqueado por outro processo, a operação falhará. Para impedir que outro processo bloqueie o volume, bloqueie-o assim que você abri-lo.

Um volume desmontado tem as seguintes propriedades:

  • Não há arquivos abertos.
  • O sistema operacional detecta o volume.
O sistema operacional tenta montar um volume desmontado assim que é feita uma tentativa de acessá-lo. Por exemplo, uma chamada para GetLogicalDrives dispara o sistema operacional para montar volumes não desmontados.

Desmontar um volume é útil quando um volume precisa desaparecer por um tempo. Por exemplo, um aplicativo que altera um sistema de arquivos de volume do sistema de arquivos FAT para o sistema de arquivos NTFS pode usar o procedimento a seguir.

Para alterar um sistema de arquivos de volume

  1. Abra um volume.
  2. Bloqueie o volume.
  3. Formate o volume.
  4. Desmonte o volume.
  5. Desbloqueie o volume.
  6. Feche o identificador de volume.
Uma operação de desmontagem remove o volume do reconhecimento do sistema de arquivos FAT. Quando o sistema operacional monta o volume, ele aparece como um volume do sistema de arquivos NTFS.

Em Windows 8 e Windows Server 2012, esse código é compatível com as tecnologias a seguir.

Tecnologia Com suporte
Protocolo SMB (SMB) 3.0 No
TFO (Failover transparente) do SMB 3.0 No
SMB 3.0 com compartilhamentos de arquivos de expansão (SO) No
Sistema de arquivos de Volume Compartilhado Clusterizado (CsvFS) Confira o comentário
 

Em CsvFs, o nó em que a desmontagem é emitida verá uma sequência de desmontagem normal. Em todos os outros nós, o FS invalidará todos os arquivos abertos.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Cabeçalho winioctl.h (inclua Windows.h)

Confira também

CreateFile

DeviceIoControl

ExitThread

FSCTL_LOCK_VOLUME

GetLogicalDrives

Códigos de controle de gerenciamento de volume