Partager via


FSCTL_DISMOUNT_VOLUME IOCTL (winioctl.h)

Démonte un volume, que le volume soit en cours d’utilisation ou non. Pour plus d’informations, consultez la section Remarques.

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, qu’il s’agisse ou non d’autres processus qui utilisent 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 transmis à DeviceIoControl doit être un handle vers un volume, ouvert pour un accès direct. Pour récupérer un handle de volume, appelez createFile avec le paramètre lpFileName défini sur une chaîne du formulaire suivant :

\\.\X:

X est une lettre de partition de disque dur, un lecteur de disque floppy ou un lecteur 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 pas de fichiers ouverts.
  • 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 modifie un système de fichiers de volume du système de fichiers FAT vers le 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émonter le volume.
  5. Déverrouillez le volume.
  6. Fermez le handle de volume.
Une opération de démontage supprime le volume de la prise en charge du système de fichiers FAT. Lorsque le système d’exploitation monte le volume, il apparaît en tant que 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 Supporté
Protocole SMB (Server Message Block) 3.0 Non
Basculement transparent SMB 3.0 (TFO) Non
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) Non
Cluster Shared Volume File System (CsvFS) Voir le commentaire
 

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

Exigences

Exigence Valeur
client minimum pris en charge Windows XP [applications de bureau uniquement]
serveur minimum pris en charge Windows Server 2003 [applications de bureau uniquement]
d’en-tête winioctl.h (include Windows.h)

Voir aussi

CreateFile

DeviceIoControl

ExitThread

FSCTL_LOCK_VOLUME

GetLogicalDrives

codes de contrôle de gestion des volumes