FSCTL_DISMOUNT_VOLUME IOCTL (winioctl.h)
不論磁碟區目前是否正在使用中,卸除磁碟區。 如需詳細資訊,請參閱<備註>一節。
若要執行這項作業,請使用下列參數呼叫 DeviceIoControl 函 式。
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 ); |
備註
不論任何其他進程是否使用磁碟區, FSCTL_DISMOUNT_VOLUME 控制程式代碼都會嘗試卸除磁碟區,如果這些進程沒有保留磁碟區鎖定,這些進程可能會產生無法預期的結果。 如需鎖定磁碟區的相關信息,請參閱 FSCTL_LOCK_VOLUME。
傳遞至 DeviceIoControl 的 hDevice 句柄必須是磁碟區的句柄,且會開啟以供直接存取。 若要擷取磁碟區句柄,請呼叫 CreateFile,並將 lpFileName 參數設定為下列格式的字串:
\.\X:
其中 X 是硬碟磁碟分區字母、磁碟驅動器或 CD-ROM 磁碟驅動器。 應用程式也必須在 CreateFile 的 dwShareMode 參數中指定FILE_SHARE_READ和FILE_SHARE_WRITE旗標。
如果指定的磁碟區是系統磁碟區,或包含頁面檔案,作業就會失敗。
如果指定的磁碟區被另一個進程鎖定,作業就會失敗。 若要防止另一個進程鎖定磁碟區,請在開啟磁碟區時立即加以鎖定。
卸除的磁碟區具有下列屬性:
- 沒有開啟的檔案。
- 操作系統會偵測磁碟區。
當磁碟區需要消失一段時間時,卸除磁碟區很有用。 例如,將磁碟區檔案系統從 FAT 檔案系統變更為 NTFS 檔案系統的應用程式可能會使用下列程式。
變更磁碟區文件系統
- 開啟磁碟區。
- 鎖定磁碟區。
- 格式化磁碟區。
- 卸除磁碟區。
- 解除鎖定磁碟區。
- 關閉磁碟區句柄。
在 Windows 8 和 Windows Server 2012 中,下列技術支援此程序代碼。
技術 | 支援 |
---|---|
伺服器消息塊 (SMB) 3.0 通訊協定 | No |
SMB 3.0 透明故障轉移 (TFO) | No |
具有向外延展檔案共用的SMB 3.0 (SO) | No |
叢集共用磁碟區文件系統 (CsvFS) | 請參閱批注 |
在 CsvFs 上,發出卸除的節點會看到一般卸除順序。 在所有其他節點上,FS 會將所有開啟的檔案失效。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
標頭 | winioctl.h (包含 Windows.h) |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應