FSCTL_DISMOUNT_VOLUME IOCTL (winioctl.h)

Hebt die Bereitstellung eines Volumes auf, unabhängig davon, ob das Volume gerade verwendet wird oder nicht. Weitere Informationen finden Sie im Abschnitt mit Hinweisen.

Um diesen Vorgang auszuführen, rufen Sie die Funktion DeviceIoControl 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
);

Hinweise

Der FSCTL_DISMOUNT_VOLUME Steuercode versucht, die Bereitstellung eines Volumes aufzuheben, unabhängig davon, ob andere Prozesse das Volume verwenden. Dies kann zu unvorhersehbaren Ergebnissen für diese Prozesse führen, wenn sie keine Sperre für das Volume halten. Informationen zum Sperren eines Volumes finden Sie unter FSCTL_LOCK_VOLUME.

Das an DeviceIoControlübergebene hDevice-Handle 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 der folgenden Form festgelegt ist:

\.\X:

Dabei ist X ein Festplattenpartitionsbuchstabe, ein Diskettenlaufwerk oder ein 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 Auslagerungsdatei enthält, schlägt der Vorgang fehl.

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

Ein nicht eingebundenes 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 einzubinden, sobald versucht wird, darauf zuzugreifen. Beispielsweise löst ein Aufruf von GetLogicalDrives das Betriebssystem zum Einbinden nicht bereitgestellter 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. Heben Sie die Bereitstellung des Volumes auf.
  5. Entsperren Sie das Volume.
  6. Schließen Sie das Volumehandle.
Bei einem Aufheben der Bereitstellung wird das Volume aus der FAT-Dateisystemerkennung entfernt. Wenn das Betriebssystem das Volume einlagert, wird es als NTFS-Dateisystemvolume angezeigt.

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

Technologie Unterstützt
SMB 3.0-Protokoll (Server Message Block) No
SMB 3.0 Transparent Failover (TFO) No
SMB 3.0 mit Dateifreigaben mit horizontaler Skalierung (SO) No
Dateisystem mit freigegebenen Clustervolumes (CsvFS) Siehe Kommentar
 

Auf CsvFs wird auf dem Knoten, auf dem die Bereitstellung aufgehoben wird, eine normale Demontagesequenz angezeigt. Auf allen anderen Knoten wird fs alle geöffneten Dateien ungültig.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Kopfzeile winioctl.h (windows.h einschließen)

Weitere Informationen

CreateFile

DeviceIoControl

ExitThread

FSCTL_LOCK_VOLUME

GetLogicalDrives

Volumeverwaltungs-Steuerungscodes