Condividi tramite


Metodo IVdsPack2::CreateVolume2 (vds.h)

[A partire da Windows 8 e Windows Server 2012, l'interfaccia COM del servizio disco virtuale viene sostituita dall'API gestione archiviazione di Windows.

Crea un volume in un pacchetto di dischi con un parametro di allineamento facoltativo.

Sintassi

HRESULT CreateVolume2(
  [in]  VDS_VOLUME_TYPE type,
  [in]  VDS_INPUT_DISK  *pInputDiskArray,
  [in]  LONG            lNumberOfDisks,
  [in]  ULONG           ulStripeSize,
  [in]  ULONG           ulAlign,
  [out] IVdsAsync       **ppAsync
);

Parametri

[in] type

Valore dell'enumerazione VDS_VOLUME_TYPE che indica il tipo di volume da creare.

[in] pInputDiskArray

Matrice di strutture VDS_INPUT_DISK che indicano i dischi in cui creare il volume.

Nota Questa dimensione della matrice deve essere di 32 oggetti o meno, perché Windows impone un limite in cui possono essere usati più di 32 dischi con un singolo volume.
 

[in] lNumberOfDisks

Numero di elementi nella matrice a cui punta il parametro pInputDiskArray .

[in] ulStripeSize

Dimensioni di striping, in byte, del nuovo volume.

Nota La dimensione della striscia deve essere 65536 se il tipo è VDS_VT_STRIPE o VDS_VT_PARITY; in caso contrario, le dimensioni della striscia devono essere 0.
 

[in] ulAlign

Numero di byte per l'allineamento del volume. Questo parametro è facoltativo e può essere zero. Se viene specificato zero, il server determina il valore di allineamento a seconda delle dimensioni del disco in cui viene creato il volume.

Windows 7, Windows Server 2008 R2, Windows Vista e Windows Server 2008: In un disco di base, il metodo CreateVolume2 ignora questo parametro e la chiave del Registro di sistema HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment . Si tratta di un problema noto e che viene risolto. Come soluzione alternativa, usare il metodo IVdsAdvancedDisk::CreatePartition o IVdsCreatePartitionEx::CreatePartitionEx per creare partizioni nel disco di base in modo che siano allineate correttamente. Le partizioni dinamiche e i volumi sono allineati usando i valori nella chiave del Registro di sistema seguente:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment

L'allineamento predefinito è 1 MB se il disco è pari a 4 GB o maggiore o 64 KB se il disco è inferiore a 4 GB.

[out] ppAsync

Puntatore a un'interfaccia IVdsAsync che al termine del completamento riceve l'interfaccia IVdsAsync per monitorare e controllare questa operazione. I chiamanti devono rilasciare l'interfaccia ricevuta al termine dell'operazione. Se il metodo IVdsAsync::Wait viene chiamato sull'interfaccia e viene restituito un valore HRESULT riuscito, le interfacce restituite nella struttura VDS_ASYNC_OUTPUT devono essere rilasciate chiamando il metodo IUnknown::Release in ogni puntatore dell'interfaccia. Tuttavia, se Wait restituisce un valore HRESULT non riuscito o se il parametro pHrResultdiWait riceve un valore HRESULT non riuscito, i puntatori di interfaccia nella struttura VDS_ASYNC_OUTPUT sono NULL e non devono essere rilasciati. È possibile testare i valori HRESULT di esito positivo o negativo usando le macro SUCCESSED e FAILED definite in Winerror.h.

Valore restituito

Questo metodo può restituire valori HRESULT standard, ad esempio E_INVALIDARG o E_OUTOFMEMORY e valori restituiti specifici di VDS. Può anche restituire codici di errore di sistema convertiti usando la macro HRESULT_FROM_WIN32 . Gli errori possono derivare da VDS stesso o dal provider VDS sottostante usato. I valori restituiti possibili includono quanto segue.

Codice/valore restituito Descrizione
S_OK
Il volume è stato creato correttamente.
VDS_S_NO_NOTIFICATION
0x00042517L
Non è stata ricevuta alcuna notifica di arrivo del volume. Potrebbe essere necessario chiamare IVdsService::Refresh.
VDS_S_UPDATE_BOOTFILE_FAILED
0x00042434L
Il volume viene creato correttamente, ma VDS non è riuscito ad aggiornare le opzioni di avvio nell'archivio dati di configurazione di avvio (BCD).
VDS_E_ALIGN_IS_ZERO
0x80042590L
L'allineamento specificato è zero.
VDS_E_ALIGN_NOT_A_POWER_OF_TWO
0x8004258FL
L'allineamento specificato non è una potenza di due.
VDS_E_DISK_NOT_FOUND_IN_PACK
0x8004252DL
I dischi specificati non appartengono allo stesso pacchetto.
VDS_E_DMADMIN_METHOD_CALL_FAILED
0x80042420L
Il servizio LDM ha avuto esito negativo su un metodo.
VDS_E_EXTENT_SIZE_LESS_THAN_MIN
0x80042433L
Le dimensioni dell'estensione passate sono troppo piccole.
VDS_E_INVALID_DISK_COUNT
0x80042526L
Il numero di dischi specificati non è valido per questa operazione.
VDS_E_INVALID_MEMBER_COUNT
0x80042522L
Il numero di membri per il volume deve essere maggiore di zero.
VDS_E_INVALID_MEMBER_ORDER
0x80042524L
Gli indici membro devono aumentare monotonicamente e iniziare con zero.
VDS_E_INVALID_OPERATION
0x80042415L
Il disco passato è un dispositivo CD-ROM o DVD.
VDS_E_INVALID_PACK
0x8004251AL
Questa operazione non è consentita in questo pacchetto di dischi.
VDS_E_INVALID_PLEX_COUNT
0x80042521L
Il numero di plex per il volume deve essere maggiore di zero.
VDS_E_INVALID_PLEX_ORDER
0x80042523L
Gli indici plex devono aumentare monotonicamente e iniziare con zero.
VDS_E_INVALID_STRIPE_SIZE
0x80042525L
Le dimensioni di striping in byte devono essere una potenza di 2 per i tipi di volume con striping e RAID-5 e devono essere zero per tutti gli altri tipi di volume.
VDS_E_MISSING_DISK
0x80042454L
Il disco specificato è mancante.
VDS_E_NO_MEDIA
0x80042412L
Non è presente alcun supporto in un'unità rimovibile passata attraverso la matrice di dischi.
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
Non è disponibile spazio sufficiente su uno dei dischi.
VDS_E_NOT_SUPPORTED
0x80042400L
Il tipo di volume non è supportato.
VDS_E_OBJECT_NOT_FOUND
0x80042405L
Non viene trovato almeno uno dei dischi passati.
VDS_E_ONE_EXTENT_PER_DISK
0x80042531L
Un singolo disco non può contribuire a più membri o più plessi dello stesso volume.
VDS_E_PACK_OFFLINE
0x8004244L
Il pacchetto di destinazione non è accessibile.
VDS_E_PARTITION_LIMIT_REACHED
0x80042407L
Il numero massimo di partizioni (partizioni primarie o partizioni primarie con una partizione estesa) esiste già quando il chiamante tenta di creare una partizione primaria aggiuntiva o una partizione estesa.
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
La cache del provider dinamico è danneggiata.
VDS_E_VOLUME_DISK_COUNT_MAX_EXCEEDED
0x80042529L
Non sono consentiti più di 32 dischi per volume.
VDS_E_VOLUME_TOO_SMALL
0x8004242CL
Le dimensioni del volume sono troppo piccole.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione vds.h
Libreria Uuid.lib

Vedi anche

IVdsPack2

IVdsPack::CreateVolume