Freigeben über


FSCTL_DISMOUNT_VOLUME IOCTL (winioctl.h)

Hebt die Bereitstellung eines Volumes auf, unabhängig davon, ob das Volume derzeit verwendet wird. Weitere Informationen finden Sie im Abschnitt "Hinweise".

Rufen Sie zum Ausführen dieses Vorgangs die DeviceIoControl--Funktion mit den folgenden Parametern auf.

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

Bemerkungen

Der FSCTL_DISMOUNT_VOLUME-Steuercode versucht, die Bereitstellung eines Volumes zu aufheben, unabhängig davon, ob andere Prozesse das Volume verwenden, was unvorhersehbare Ergebnisse für diese Prozesse haben kann, wenn sie keine Sperre auf dem Volume enthalten. Informationen zum Sperren eines Volumes finden Sie unter FSCTL_LOCK_VOLUME.

Das hDevice- Handle, das an DeviceIoControl- übergeben wird, muss ein Handle für ein Volume sein, das für den direkten Zugriff geöffnet wird. Um ein Volumehandle abzurufen, rufen Sie CreateFile- auf, wobei der parameter lpFileName auf eine Zeichenfolge des folgenden Formulars festgelegt ist:

\\.\X-:

dabei ist X- ein Festplattenpartitionsbuchstaben, Diskettenlaufwerk oder CD-ROM Laufwerk. Die Anwendung muss auch die FILE_SHARE_READ- und FILE_SHARE_WRITE Flags im dwShareMode Parameter von CreateFile-angeben.

Wenn das angegebene Volume ein Systemvolume ist oder eine Seitendatei enthält, schlägt der Vorgang fehl.

Wenn das angegebene Volume durch einen anderen Prozess gesperrt ist, schlägt der Vorgang fehl. Um zu verhindern, dass ein anderer Prozess das Volume sperrt, sperren Sie es, sobald Sie es öffnen.

Ein nicht gemountetes Volume verfügt über die folgenden Eigenschaften:

  • Es sind keine geöffneten Dateien vorhanden.
  • Das Betriebssystem erkennt das Volume.
Das Betriebssystem versucht, ein nicht bereitgestelltes Volume zu mounten, sobald versucht wird, darauf zuzugreifen. Beispielsweise löst ein Aufruf von GetLogicalDrives das Betriebssystem zum Bereitstellen von nicht bereitgestellten Volumes aus.

Das Aufheben der Bereitstellung eines Volumes ist nützlich, wenn ein Volume für eine Weile ausgeblendet werden muss. Beispielsweise kann eine Anwendung, die ein Volumedateisystem vom FAT-Dateisystem in das NTFS-Dateisystem ändert, das folgende Verfahren verwenden.

So ändern Sie ein Volumedateisystem

  1. Öffnen Sie ein Volume.
  2. Sperren Sie das Volume.
  3. Formatieren Sie das Volume.
  4. Aufheben der Bereitstellung des Volumes.
  5. Entsperren Sie das Volume.
  6. Schließen Sie den Volumeziehpunkt.
Durch einen Dismounting-Vorgang wird das Volume aus dem FAT-Dateisystem-Bewusstsein entfernt. Wenn das Betriebssystem das Volume bereit stellt, wird es als NTFS-Dateisystemvolume angezeigt.

In Windows 8 und Windows Server 2012 wird dieser Code von den folgenden Technologien unterstützt.

Technologie Abgestützt
Server Message Block (SMB) 3.0-Protokoll Nein
SMB 3.0 Transparent Failover (TFO) Nein
SMB 3.0 mit Skalierungsdateifreigaben (SO) Nein
Freigegebenes Clustervolumedateisystem (CsvFS) Kommentar anzeigen
 

Auf CSVFs wird der Knoten, auf dem die Bereitstellung aufgehoben wird, eine normale Dismount-Sequenz angezeigt. Auf allen anderen Knoten FS werden alle geöffneten Dateien ungültig.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows XP [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2003 [Nur Desktop-Apps]
Header- winioctl.h (enthalten Windows.h)

Siehe auch

CreateFile-

DeviceIoControl-

ExitThread-

FSCTL_LOCK_VOLUME

GetLogicalDrives-

Volume Management Control Codes