DetachVirtualDisk 関数 (virtdisk.h)

操作を実行するための適切な仮想ディスク プロバイダーを見つけて、仮想ハード ディスク (VHD) または CD または DVD イメージ ファイル (ISO) をデタッチします。

構文

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

パラメーター

[in] VirtualDiskHandle

OpenVirtualDisk 関数に VirtualDiskAccessMask パラメーターで設定されたVIRTUAL_DISK_ACCESS_DETACH フラグを使用して開かれている必要がある、開いている仮想ディスクへのハンドル。 仮想ディスクを開く方法については、 OpenVirtualDisk 関数を参照してください。

[in] Flags

DETACH_VIRTUAL_DISK_FLAG列挙の値の有効な組み合わせ。

[in] ProviderSpecificFlags

デタッチする仮想ディスクの種類に固有のフラグ。 何も必要ない場合は、0 を指定できます。

戻り値

要求の状態。

関数が成功した場合、戻り値は 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 アクセス権を持っていない場合、この関数は失敗します。 ファイル のセキュリティの詳細については、「 ファイル のセキュリティとアクセス権」を参照してください。

CD および DVD イメージ ファイル (ISO) は、Windows 8およびWindows Server 2012する前にサポートされていません。

要件

要件
サポートされている最小のクライアント Windows 7
サポートされている最小のサーバー Windows Server 2008 R2
対象プラットフォーム Windows
ヘッダー virtdisk.h
Library VirtDisk.lib
[DLL] VirtDisk.dll

こちらもご覧ください

VHD について

VHD リファレンス