AttachVirtualDisk 関数 (virtdisk.h)

仮想ハード ディスク (VHD) または CD または DVD イメージ ファイル (ISO) を接続するには、適切な VHD プロバイダーを見つけて添付ファイルを作成します。

構文

DWORD AttachVirtualDisk(
  [in]           HANDLE                          VirtualDiskHandle,
  [in, optional] PSECURITY_DESCRIPTOR            SecurityDescriptor,
  [in]           ATTACH_VIRTUAL_DISK_FLAG        Flags,
  [in]           ULONG                           ProviderSpecificFlags,
  [in, optional] PATTACH_VIRTUAL_DISK_PARAMETERS Parameters,
  [in, optional] LPOVERLAPPED                    Overlapped
);

パラメーター

[in] VirtualDiskHandle

開いている仮想ディスクへのハンドル。 仮想ディスクを開く方法については、 OpenVirtualDisk 関数を参照してください。

[in, optional] SecurityDescriptor

接続されている仮想ディスクに適用する SECURITY_DESCRIPTOR へのオプションのポインター。 このパラメーターが NULL の場合は、仮想ディスク イメージ ファイルのセキュリティ記述子が使用されます。

AttachVirtualDisk がアタッチされた仮想ディスクに適用されるセキュリティ記述子が、ユーザーに対する書き込み属性アクセス許可を付与するか、このパラメーターに NULL を指定した場合に仮想ディスク イメージ ファイルのセキュリティ記述子がユーザーの書き込み属性アクセス許可を付与していることを確認します。 セキュリティ記述子でユーザーに書き込み属性のアクセス許可が付与されていない場合、ユーザーが接続されている仮想ディスクにアクセスすると、Shell によって次のエラーが表示されます。 ごみ箱が破損しています。このドライブのごみ箱を空にしますか?

[in] Flags

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

[in] ProviderSpecificFlags

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

[in, optional] Parameters

添付ファイル パラメーター データを含む有効な ATTACH_VIRTUAL_DISK_PARAMETERS 構造体へのポインター。

[in, optional] Overlapped

非同期操作が必要な場合は、有効な OVERLAPPED 構造体への省略可能なポインター。

戻り値

要求の状態。

関数が成功した場合、戻り値は ERROR_SUCCESS

関数が失敗した場合、戻り値はエラー コードです。 詳細については、「 システム エラー コード」を参照してください。

注釈

AttachVirtualDisk 関数は、ネイティブ モード (sffdisk.sys、sffp_sd.sys、sdbus.sys ドライバーが読み込まれる) で SD コントローラーに接続された Secure Digital (SD) メディアでホストされている VHD または ISO ではサポートされておらず、エラー ERROR_FILE_NOT_FOUNDで失敗します。 USB リーダーに接続されている SD メディアでホストされている VHD と ISO がサポートされています。

AttachVirtualDisk 関数がエラー コード値 ERROR_INVALID_PARAMETERで失敗した場合、原因は次のいずれかの条件が原因である可能性があります。

  • VirtualDiskHandle パラメーターは、OpenVirtualDisk 関数によって作成された有効なハンドルではありません。
  • Flags パラメーターは、 より0x020大きい値に設定されます。
  • Parameters パラメーターの Version メンバーは、ATTACH_VIRTUAL_DISK_VERSION_1に設定されていません。
仮想ディスク イメージ ファイルを含むホスト ボリュームは、圧縮または EFS 暗号化できません。

プロバイダーが見つからない場合、VHD または ISO イメージ ファイルが無効な場合、VHD イメージが既にアタッチされている場合、または呼び出し元が SE_MANAGE_VOLUME_PRIVILEGE アクセス権を持っていない場合、この関数は失敗します。 ファイル のセキュリティの詳細については、「 ファイル のセキュリティとアクセス権」を参照してください。

仮想ディスク ハンドルを開くときに、仮想ディスクの目的のアクセス モードを考慮する必要があります。 たとえば、仮想ディスクが読み取り/書き込みアクセス用に接続されている場合、 VirtualDiskHandle パラメーターは 、VIRTUAL_DISK_ACCESS_ATTACH_RW アクセス フラグを使用して開かれている必要があります。 詳細については、「 VIRTUAL_DISK_ACCESS_MASK 」および 「OpenVirtualDisk」を参照してください。

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 リファレンス