Share via


DetachVirtualDisk 函式 (virtdisk.h)

找到適當的虛擬磁碟提供者來完成作業,以卸離虛擬硬碟 (VHD) 或 CD 或 DVD 映像檔 (ISO) 。

語法

DWORD DetachVirtualDisk(
  [in] HANDLE                   VirtualDiskHandle,
  [in] DETACH_VIRTUAL_DISK_FLAG Flags,
  [in] ULONG                    ProviderSpecificFlags
);

參數

[in] VirtualDiskHandle

已開啟虛擬磁碟的句柄,必須使用 VirtualDiskAccessMask 參數中設定的 VIRTUAL_DISK_ACCESS_DETACH 旗標開啟,才能開啟該虛擬磁碟。 如需如何開啟虛擬磁碟的詳細資訊,請參閱 OpenVirtualDisk 函 式。

[in] Flags

DETACH_VIRTUAL_DISK_FLAG列舉值的有效組合。

[in] ProviderSpecificFlags

要卸離之虛擬磁碟類型的特定旗標。 如果不需要,則可能為零。

傳回值

要求的狀態。

如果函式成功,傳回值會 ERROR_SUCCESS

如果函式失敗,傳回值就是錯誤碼。 如需詳細資訊,請參閱 系統錯誤碼

備註

如果 DetachVirtualDisk 函式失敗,錯誤碼值為 ERROR_INVALID_PARAMETER,原因可能是下列任一狀況所造成:

  • VirtualDiskHandle 參數不是 OpenVirtualDisk 函式所建立的有效句柄。
  • Flags 參數設定為 DETACH_VIRTUAL_DISK_FLAG_NONE ( 0) 以外的值。
包含虛擬磁碟映像檔的主機磁碟區無法壓縮或 EFS 加密。

必須先關閉虛擬磁碟的所有其他開啟句柄, DetachVirtualDisk 函式才能成功。

如果虛擬磁碟已連結,而且另一個用來連接它的句柄已經關閉,這是因為已指定 ATTACH_VIRTUAL_DISK_FLAG_PERMANENT_LIFETIME 旗標。 在此情況下, DetachVirtualDisk 函 式可能會成功,但 VHD 會維持鏈接狀態。 如果未指定 ATTACH_VIRTUAL_DISK_FLAG_PERMANENT_LIFETIME ,當最後一個開啟句柄關閉時,會自動卸離虛擬磁碟。

如果找不到提供者、如果映像檔無效、未附加映像,或呼叫端沒有 Windows Server 操作系統的 SE_MANAGE_VOLUME_PRIVILEGE 訪問許可權,則此函式將會失敗。 如需檔案安全性的詳細資訊,請參閱 檔案安全性和訪問許可權

#DE3C0ECAC8643444EBD097727E77E75FB 和 Windows Server 2012 之前,不支援 (ISO) CD 和 DVD 映射檔。

規格需求

需求
最低支援的用戶端 Windows 7
最低支援的伺服器 Windows Server 2008 R2
目標平台 Windows
標頭 virtdisk.h
程式庫 VirtDisk.lib
Dll VirtDisk.dll

另請參閱

關於 VHD

VHD 參考