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) 以外の値に設定されます。
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 |