CreateVirtualDisk 関数 (virtdisk.h)

既定のパラメーターを使用するか、既存の仮想ディスクまたは物理ディスクを使用して、仮想ハード ディスク (VHD) イメージ ファイルを作成します。

構文

DWORD CreateVirtualDisk(
  [in]           PVIRTUAL_STORAGE_TYPE           VirtualStorageType,
  [in]           PCWSTR                          Path,
  [in]           VIRTUAL_DISK_ACCESS_MASK        VirtualDiskAccessMask,
  [in, optional] PSECURITY_DESCRIPTOR            SecurityDescriptor,
  [in]           CREATE_VIRTUAL_DISK_FLAG        Flags,
  [in]           ULONG                           ProviderSpecificFlags,
  [in]           PCREATE_VIRTUAL_DISK_PARAMETERS Parameters,
  [in, optional] LPOVERLAPPED                    Overlapped,
  [out]          PHANDLE                         Handle
);

パラメーター

[in] VirtualStorageType

目的のディスクの種類とベンダー情報を含む VIRTUAL_STORAGE_TYPE 構造体へのポインター。

[in] Path

新しい仮想ディスク イメージ ファイルへのパスを表す有効な文字列へのポインター。

[in] VirtualDiskAccessMask

新しく作成された仮想ディスク ファイルを開くときに使用する VIRTUAL_DISK_ACCESS_MASK 値。 Parameters パラメーターの Version メンバーが CREATE_VIRTUAL_DISK_VERSION_2 に設定されている場合は、VIRTUAL_DISK_ACCESS_NONE (0) 値のみを指定できます。

[in, optional] SecurityDescriptor

仮想ディスク イメージ ファイルに適用する SECURITY_DESCRIPTOR への省略可能なポインター。 このパラメーターが NULL の場合は、親ディレクトリのセキュリティ記述子が使用されます。

[in] Flags

作成フラグ。 これは、CREATE_VIRTUAL_DISK_FLAG 列挙体の有効な組み合わせである必要があります。

[in] ProviderSpecificFlags

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

[in] Parameters

作成パラメーター データを含む有効な CREATE_VIRTUAL_DISK_PARAMETERS 構造体へのポインター。

[in, optional] Overlapped

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

[out] Handle

新しく作成された仮想ディスクを表すハンドル オブジェクトへのポインター。

戻り値

関数が成功した場合、戻り値は ERROR_SUCCESS され、 Handle パラメーターには新しい仮想ディスク オブジェクトへの有効なポインターが含まれます。

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

注釈

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

  • VirtualStorageType パラメーターが NULL です
  • Parameters パラメーターは NULL です
  • Parameters パラメーターの Version メンバーは、CREATE_VIRTUAL_DISK_VERSION_1またはCREATE_VIRTUAL_DISK_VERSION_2に設定されていません。
  • Parameters パラメーターの Version メンバーは CREATE_VIRTUAL_DISK_VERSION_2 に設定されていますが、VirtualDiskAccessMask パラメーターは VIRTUAL_DISK_ACCESS_NONE に設定されていません。
  • Parameters パラメーターの BlockSizeInBytes メンバーは、CREATE_VIRTUAL_DISK_PARAMETERS_DEFAULT_BLOCK_SIZE (0)、0x80000 (512 KB)、または0x200000 (2 MB) に設定されていません。
  • Parameters パラメーターの MaximumSize メンバーは 3 MB 未満です。
  • Parameters パラメーターの MaximumSize メンバーは、SectorSizeInBytes メンバーの値と一致しません。
  • VirtualDiskAccessMask パラメーターは、 の(VirtualDiskAccessMask & ~VIRTUAL_DISK_ACCESS_ALL)値に設定されます。
  • Flags パラメーターがCREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATIONを超えています。
新しい仮想ディスク イメージ ファイルを含むホスト ボリュームを圧縮または EFS 暗号化することはできません。

さまざまな種類の仮想ディスクを作成する場合は、次の作成パラメーターの組み合わせをお勧めします。

  • CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION フラグを指定する必要があります。
  • ParentPath を指定しないでください。
  • 必要に応じて SourcePath を指定できます。
  • CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION フラグは指定しないでください。
  • ParentPath を指定しないでください。
  • 必要に応じて SourcePath を指定できます。
  • CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION フラグは指定しないでください。
  • ParentPath を指定する必要があります。
  • SourcePath を指定しないでください。
CreateVirtualDisk 関数は、ある種類の仮想ディスクを別の仮想ディスクに変換するメカニズム、または物理ディスクを仮想ディスクに変換するメカニズムとしても使用できます。 これは、CREATE_VIRTUAL_DISK_PARAMETERS構造体の SourcePath メンバーを使用して、新しい仮想ディスクにソース ディスクからのブロック データを事前に設定して行います。

要件

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

こちらもご覧ください

VHD について

OpenVirtualDisk

VHD リファレンス