Metodo IVdsVolume::Extend (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.]
Espande le dimensioni del volume corrente aggiungendo extent del disco a ogni membro di ogni plex.
Sintassi
HRESULT Extend(
[in] VDS_INPUT_DISK *pInputDiskArray,
[in] LONG lNumberOfDisks,
[out] IVdsAsync **ppAsync
);
Parametri
[in] pInputDiskArray
Puntatore a una matrice di strutture VDS_INPUT_DISK ; una struttura per ogni disco.
[in] lNumberOfDisks
Numero totale di dischi nel volume. I chiamanti possono passare zero quando i plessi del volume contengono spazio sufficiente per estendere il volume; pInputDiskArray deve essere NULL.
[out] ppAsync
Indirizzo di un puntatore all'interfaccia IVdsAsync , che il VDS inizializza al momento della restituzione. I chiamanti devono rilasciare l'interfaccia. Usare questo puntatore per annullare, attendere o eseguire una query sullo stato dell'operazione. Se si chiama il metodo IVdsAsync::Wait su questa interfaccia e viene restituito un valore HRESULT riuscito, è necessario rilasciare le interfacce restituite nella struttura VDS_ASYNC_OUTPUT chiamando il metodo IUnknown::Release su ogni puntatore di interfaccia. Tuttavia, se Wait restituisce un valore HRESULT non riuscito o se il parametro pHrResult di Wait riceve un valore HRESULT non riuscito, i puntatori di interfaccia nella struttura VDS_ASYNC_OUTPUT sono NULL e non devono essere rilasciati. È possibile verificare l'esito positivo o negativo dei valori HRESULT usando le macro SUCCEEDED 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 provenire dal VDS stesso o dal provider VDS sottostante in uso. I valori restituiti possibili includono quanto segue.
Codice/valore restituito | Descrizione |
---|---|
|
Il metodo ha eseguito correttamente la competizione. |
|
Impossibile estendere il volume perché il file system nel volume non supporta l'operazione. |
|
Lo spazio necessario per estendere il volume non è sufficiente. |
|
Il volume non è integro. |
Commenti
Questo metodo estende un volume semplice sullo stesso disco o crea un volume esteso estendendo il volume a più dischi. I chiamanti possono estendere un volume su un disco di base, tuttavia l'extent del disco deve essere contiguo al volume.
VDS estende automaticamente il file system in base alle dimensioni estese del volume. Il file system deve supportare questa operazione. VDS estende il file system, ma non il volume, se un chiamante non riesce a specificare gli extent da usare.
Le operazioni di estensione e compattazione sono supportate solo nei volumi NTFS e RAW.
VDS applica le regole seguenti quando si estende un volume:
- Per i tipi plex semplici e esteso, il VDS estende l'unico membro del plex con qualsiasi extent del disco che non contribuisce già a un altro plex, indipendentemente dal fatto che l'extent si trova nello stesso disco o meno. VDS usa extent del disco nell'ordine specificato dal chiamante, ignorando l'indice membro dell'extent. A meno che in un disco di base, il disco rigido virtuale può estendere l'unico membro di un plex con qualsiasi extent del disco nello stesso disco o in un disco diverso.
- Per i tipi plex con striping e striping, VDS assegna un extent al membro del plex come indicato di seguito:
- L'extent passa all'indice membro specificato dal chiamante.
- L'extent passa all'indice membro che occupa lo stesso disco quando il chiamante non riesce a specificare un ID membro.
Gli implementatori devono restituire un puntatore all'interfaccia IVdsAsync per questo metodo, indipendentemente dal fatto che la chiamata avvii un'operazione asincrona.
Requisiti
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | vds.h |
Libreria | Uuid.lib |