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.
[in] lNumberOfDisks
Numero di elementi nella matrice a cui punta il parametro pInputDiskArray .
[in] ulStripeSize
Dimensioni di striping, in byte, del nuovo volume.
[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 |
---|---|
|
Il volume è stato creato correttamente. |
|
Non è stata ricevuta alcuna notifica di arrivo del volume. Potrebbe essere necessario chiamare IVdsService::Refresh. |
|
Il volume viene creato correttamente, ma VDS non è riuscito ad aggiornare le opzioni di avvio nell'archivio dati di configurazione di avvio (BCD). |
|
L'allineamento specificato è zero. |
|
L'allineamento specificato non è una potenza di due. |
|
I dischi specificati non appartengono allo stesso pacchetto. |
|
Il servizio LDM ha avuto esito negativo su un metodo. |
|
Le dimensioni dell'estensione passate sono troppo piccole. |
|
Il numero di dischi specificati non è valido per questa operazione. |
|
Il numero di membri per il volume deve essere maggiore di zero. |
|
Gli indici membro devono aumentare monotonicamente e iniziare con zero. |
|
Il disco passato è un dispositivo CD-ROM o DVD. |
|
Questa operazione non è consentita in questo pacchetto di dischi. |
|
Il numero di plex per il volume deve essere maggiore di zero. |
|
Gli indici plex devono aumentare monotonicamente e iniziare con zero. |
|
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. |
|
Il disco specificato è mancante. |
|
Non è presente alcun supporto in un'unità rimovibile passata attraverso la matrice di dischi. |
|
Non è disponibile spazio sufficiente su uno dei dischi. |
|
Il tipo di volume non è supportato. |
|
Non viene trovato almeno uno dei dischi passati. |
|
Un singolo disco non può contribuire a più membri o più plessi dello stesso volume. |
|
Il pacchetto di destinazione non è accessibile. |
|
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. |
|
La cache del provider dinamico è danneggiata. |
|
Non sono consentiti più di 32 dischi per volume. |
|
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 |