Compartilhar via


FSCTL_DISMOUNT_VOLUME IOCTL (winioctl.h)

Desmonta um volume independentemente se o volume está 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
);

Observações

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 pode 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 de de 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 de 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 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 da consciência do sistema de arquivos FAT. Quando o sistema operacional monta o volume, ele aparece como um volume do sistema de arquivos NTFS.

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

Tecnologia Suportado
Protocolo SMB (Bloco de Mensagens do Servidor) 3.0 Não
TFO (Failover Transparente) do SMB 3.0 Não
SMB 3.0 com Compartilhamentos de Arquivos de Expansão (SO) Não
Sistema de Arquivos de Volume Compartilhado de Cluster (CsvFS) Consulte 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
de cliente com suporte mínimo Windows XP [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows Server 2003 [somente aplicativos da área de trabalho]
cabeçalho winioctl.h (inclua Windows.h)

Consulte também

CreateFile

DeviceIoControl

ExitThread

FSCTL_LOCK_VOLUME

getLogicalDrives

códigos de controle de gerenciamento de volume