FSCTL_DISMOUNT_VOLUME IOCTL (winioctl.h)

Démonte un volume, qu’il soit en cours d’utilisation ou non. Pour plus d'informations, consultez la section Notes.

Pour effectuer cette opération, appelez la fonction DeviceIoControl avec les paramètres suivants.

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

Remarques

Le code de contrôle FSCTL_DISMOUNT_VOLUME tente de démonter un volume, que d’autres processus utilisent ou non le volume, ce qui peut avoir des résultats imprévisibles pour ces processus s’ils ne contiennent pas de verrou sur le volume. Pour plus d’informations sur le verrouillage d’un volume, consultez FSCTL_LOCK_VOLUME.

Le handle hDevice passé à DeviceIoControl doit être un handle pour un volume, ouvert pour l’accès direct. Pour récupérer un handle de volume, appelez CreateFile avec le paramètre lpFileName défini sur une chaîne de la forme suivante :

\.\X :

X est une lettre de partition de disque dur, un lecteur de disquette ou un lecteur de CD-ROM. L’application doit également spécifier les indicateurs FILE_SHARE_READ et FILE_SHARE_WRITE dans le paramètre dwShareMode de CreateFile.

Si le volume spécifié est un volume système ou contient un fichier de page, l’opération échoue.

Si le volume spécifié est verrouillé par un autre processus, l’opération échoue. Pour empêcher un autre processus de verrouiller le volume, verrouillez-le dès que vous l’ouvrez.

Un volume démonté a les propriétés suivantes :

  • Il n’y a aucun fichier ouvert.
  • Le système d’exploitation détecte le volume.
Le système d’exploitation tente de monter un volume non monté dès qu’une tentative est effectuée pour y accéder. Par exemple, un appel à GetLogicalDrives déclenche le système d’exploitation pour monter des volumes non montés.

Le démontage d’un volume est utile lorsqu’un volume doit disparaître pendant un certain temps. Par exemple, une application qui change un système de fichiers de volume du système de fichiers FAT au système de fichiers NTFS peut utiliser la procédure suivante.

Pour modifier un système de fichiers de volume

  1. Ouvrez un volume.
  2. Verrouillez le volume.
  3. Mettez en forme le volume.
  4. Démontez le volume.
  5. Déverrouillez le volume.
  6. Fermez le handle de volume.
Une opération de démontage supprime le volume de la connaissance du système de fichiers FAT. Lorsque le système d’exploitation monte le volume, il apparaît sous la forme d’un volume de système de fichiers NTFS.

Dans Windows 8 et Windows Server 2012, ce code est pris en charge par les technologies suivantes.

Technologie Prise en charge
Protocole Server Message Block (SMB) 3.0 No
Basculement transparent SMB 3.0 (TFO) No
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) No
Système de fichiers du volume partagé de cluster (CsvFS) Voir le commentaire
 

Sur csvFs, le nœud où le démontage est émis verra une séquence de démontage normale. Sur tous les autres nœuds, FS invalidera tous les fichiers ouverts.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
En-tête winioctl.h (inclure Windows.h)

Voir aussi

CreateFile

DeviceIoControl

ExitThread

FSCTL_LOCK_VOLUME

GetLogicalDrives

Codes de contrôle de gestion des volumes