Share via


CreateVirtualDisk-Funktion (virtdisk.h)

Erstellt eine VHD-Imagedatei (Virtual Hard Disk) mit Standardparametern oder unter Verwendung eines vorhandenen virtuellen Datenträgers oder physischen Datenträgers.

Syntax

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
);

Parameter

[in] VirtualStorageType

Ein Zeiger auf eine VIRTUAL_STORAGE_TYPE Struktur, die den gewünschten Datenträgertyp und die Gewünschten Anbieterinformationen enthält.

[in] Path

Ein Zeiger auf eine gültige Zeichenfolge, die den Pfad zur neuen Imagedatei des virtuellen Datenträgers darstellt.

[in] VirtualDiskAccessMask

Der VIRTUAL_DISK_ACCESS_MASK Wert, der beim Öffnen der neu erstellten virtuellen Datenträgerdatei verwendet werden soll. Wenn der Version-Member des Parameters-Parameters auf CREATE_VIRTUAL_DISK_VERSION_2 festgelegt ist, kann nur der wert VIRTUAL_DISK_ACCESS_NONE (0) angegeben werden.

[in, optional] SecurityDescriptor

Ein optionaler Zeiger auf einen SECURITY_DESCRIPTOR , der auf die Imagedatei des virtuellen Datenträgers angewendet werden soll. Wenn dieser Parameter NULL ist, wird der Sicherheitsdeskriptor des übergeordneten Verzeichnisses verwendet.

[in] Flags

Erstellungsflags, die eine gültige Kombination der CREATE_VIRTUAL_DISK_FLAG-Enumeration sein müssen.

[in] ProviderSpecificFlags

Flags spezifisch für den Typ des virtuellen Datenträgers, der erstellt wird. Kann null sein, wenn keine erforderlich ist.

[in] Parameters

Ein Zeiger auf eine gültige CREATE_VIRTUAL_DISK_PARAMETERS-Struktur , die Erstellungsparameterdaten enthält.

[in, optional] Overlapped

Ein optionaler Zeiger auf eine gültige OVERLAPPED-Struktur , wenn ein asynchroner Vorgang gewünscht wird.

[out] Handle

Ein Zeiger auf das Handle-Objekt, das den neu erstellten virtuellen Datenträger darstellt.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird der Rückgabewert ERROR_SUCCESS , und der Handle-Parameter enthält einen gültigen Zeiger auf das neue virtuelle Datenträgerobjekt.

Wenn die Funktion fehlschlägt, ist der Rückgabewert ein Fehlercode, und der Wert des Handle-Parameters ist undefiniert. Weitere Informationen finden Sie unter Systemfehlercodes.

Hinweise

Wenn die CreateVirtualDisk-Funktion mit dem Fehlercodewert ERROR_INVALID_PARAMETER fehlschlägt, kann die Ursache auf eine der folgenden Bedingungen zurückzuführen sein:

  • Der VirtualStorageType-Parameter ist NULL.
  • Der Parameter Parameters ist NULL.
  • Der Version-Member des Parameters-Parameters ist nicht auf CREATE_VIRTUAL_DISK_VERSION_1 oder CREATE_VIRTUAL_DISK_VERSION_2 festgelegt.
  • Der Version-Member des Parameters-Parameters ist auf CREATE_VIRTUAL_DISK_VERSION_2 festgelegt, aber der Parameter VirtualDiskAccessMask ist nicht auf VIRTUAL_DISK_ACCESS_NONE festgelegt.
  • Der BlockSizeInBytes-Member des Parameters-Parameters ist nicht auf CREATE_VIRTUAL_DISK_PARAMETERS_DEFAULT_BLOCK_SIZE (0), 0x80000 (512 KB) oder 0x200000 (2 MB) festgelegt.
  • Der MaximumSize-Member des Parameters-Parameters ist kleiner als 3 MB.
  • Das MaximumSize-Element des Parameters-Parameters ist nicht mit dem Wert des SectorSizeInBytes-Elements ausgerichtet.
  • Der VirtualDiskAccessMask-Parameter ist auf den Wert festgelegt (VirtualDiskAccessMask & ~VIRTUAL_DISK_ACCESS_ALL).
  • Der Flags-Parameter ist größer als CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION.
Das Hostvolume, das die neue Imagedatei des virtuellen Datenträgers enthält, kann nicht komprimiert oder EFS verschlüsselt werden.

Beim Erstellen der verschiedenen Typen von virtuellen Datenträgern werden die folgenden Kombinationen von Erstellungsparametern empfohlen:

  • Das flag CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION sollte angegeben werden.
  • ParentPath sollte nicht angegeben werden.
  • SourcePath kann bei Bedarf angegeben werden.
  • Das CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION-Flag sollte nicht angegeben werden.
  • ParentPath sollte nicht angegeben werden.
  • SourcePath kann bei Bedarf angegeben werden.
  • Das CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION-Flag sollte nicht angegeben werden.
  • ParentPath sollte angegeben werden.
  • SourcePath sollte nicht angegeben werden.
Die CreateVirtualDisk-Funktion kann auch als Mechanismus zum Konvertieren eines virtuellen Datenträgertyps in einen anderen oder als physischer Datenträger in einen virtuellen Datenträger verwendet werden. Dies wird erreicht, indem der SourcePath-Member der CREATE_VIRTUAL_DISK_PARAMETERS-Struktur verwendet wird, um den neuen virtuellen Datenträger vorab mit Blockdaten vom Quelldatenträger aufzufüllen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7
Unterstützte Mindestversion (Server) Windows Server 2008 R2
Zielplattform Windows
Kopfzeile virtdisk.h
Bibliothek VirtDisk.lib
DLL VirtDisk.dll

Weitere Informationen

Informationen zu VHD

OpenVirtualDisk

VHD-Referenz