Condividi tramite


Funzione CreateVirtualDisk (virtdisk.h)

Crea un file di immagine del disco rigido virtuale (VHD), usando parametri predefiniti o usando un disco virtuale o un disco fisico esistente.

Sintassi

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

Parametri

[in] VirtualStorageType

Puntatore a una struttura VIRTUAL_STORAGE_TYPE che contiene il tipo di disco desiderato e le informazioni sul fornitore.

[in] Path

Puntatore a una stringa valida che rappresenta il percorso del nuovo file di immagine del disco virtuale.

[in] VirtualDiskAccessMask

Valore VIRTUAL_DISK_ACCESS_MASK da usare quando si apre il file del disco virtuale appena creato. Se il membro Version del parametro Parameters è impostato su CREATE_VIRTUAL_DISK_VERSION_2 , è possibile specificare solo il valore VIRTUAL_DISK_ACCESS_NONE (0).

[in, optional] SecurityDescriptor

Puntatore facoltativo a un SECURITY_DESCRIPTOR da applicare al file di immagine del disco virtuale. Se questo parametro è NULL, verrà usato il descrittore di sicurezza della directory padre.

[in] Flags

Flag di creazione, che devono essere una combinazione valida dell'enumerazione CREATE_VIRTUAL_DISK_FLAG .

[in] ProviderSpecificFlags

Flag specifici del tipo di disco virtuale da creare. Può essere zero se non è necessario alcuno.

[in] Parameters

Puntatore a una struttura di CREATE_VIRTUAL_DISK_PARAMETERS valida che contiene i dati dei parametri di creazione.

[in, optional] Overlapped

Puntatore facoltativo a una struttura OVERLAPPED valida se si desidera eseguire un'operazione asincrona .

[out] Handle

Puntatore all'oggetto handle che rappresenta il disco virtuale appena creato.

Valore restituito

Se la funzione ha esito positivo, il valore restituito viene ERROR_SUCCESS e il parametro Handle contiene un puntatore valido al nuovo oggetto disco virtuale.

Se la funzione ha esito negativo, il valore restituito è un codice di errore e il valore del parametro Handle non è definito. Per altre informazioni, vedere Codici di errore di sistema.

Commenti

Se la funzione CreateVirtualDisk ha esito negativo con un valore di codice di errore di ERROR_INVALID_PARAMETER, la causa può essere dovuta a una delle condizioni seguenti:

  • Il parametro VirtualStorageType è NULL.
  • Il parametro Parameters è NULL.
  • Il membro Version del parametro Parameters non è impostato su CREATE_VIRTUAL_DISK_VERSION_1 o CREATE_VIRTUAL_DISK_VERSION_2.
  • Il membro Version del parametro Parameters è impostato su CREATE_VIRTUAL_DISK_VERSION_2 , ma il parametro VirtualDiskAccessMask non è impostato su VIRTUAL_DISK_ACCESS_NONE.
  • Il membro BlockSizeInBytes del parametro Parameters non è impostato su CREATE_VIRTUAL_DISK_PARAMETERS_DEFAULT_BLOCK_SIZE (0), 0x80000 (512 KB) o 0x200000 (2 MB).
  • Il membro MaximumSize del parametro Parameters è minore di 3 MB.
  • Il membro MaximumSize del parametro Parameters non è allineato al valore del membro SectorSizeInBytes .
  • Il parametro VirtualDiskAccessMask è impostato su un valore di (VirtualDiskAccessMask & ~VIRTUAL_DISK_ACCESS_ALL).
  • Il parametro Flags è maggiore di CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION.
Il volume host contenente il nuovo file di immagine del disco virtuale non può essere compresso o crittografato con EFS.

Quando si creano i vari tipi di dischi virtuali, è consigliabile usare le combinazioni di parametri di creazione seguenti:

  • Specificare il flag CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION .
  • ParentPath non deve essere specificato.
  • SourcePath può essere specificato se necessario.
  • Il flag CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION non deve essere specificato.
  • ParentPath non deve essere specificato.
  • SourcePath può essere specificato se necessario.
  • Il flag CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION non deve essere specificato.
  • È necessario specificare ParentPath.
  • SourcePath non deve essere specificato.
La funzione CreateVirtualDisk può essere usata anche come meccanismo per convertire un tipo di disco virtuale in un altro o un disco fisico in un disco virtuale. Questa operazione viene eseguita tramite l'uso del membro SourcePath della struttura CREATE_VIRTUAL_DISK_PARAMETERS per precompilare il nuovo disco virtuale con dati di blocco dal disco di origine.

Requisiti

Requisito Valore
Client minimo supportato Windows 7
Server minimo supportato Windows Server 2008 R2
Piattaforma di destinazione Windows
Intestazione virtdisk.h
Libreria VirtDisk.lib
DLL VirtDisk.dll

Vedi anche

Informazioni sul disco rigido virtuale

OpenVirtualDisk

Informazioni di riferimento sul disco rigido virtuale