Condividi tramite


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.

Nota I chiamanti non devono utilizzare un indice membro predefinito insieme al metodo Extend , a meno che il volume non abbia un solo plex con un solo membro.
 

[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
S_OK
Il metodo ha eseguito correttamente la competizione.
VDS_E_CANNOT_EXTEND
0x8004240EL
Impossibile estendere il volume perché il file system nel volume non supporta l'operazione.
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
Lo spazio necessario per estendere il volume non è sufficiente.
VDS_E_VOLUME_NOT_HEALTHY
0x8004243EL
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.
    VDS non assegna mai un extent a più membri nello stesso disco. Il chiamante deve specificare un membro per tutti gli extent o nessuna; il chiamante non può specificare un membro per alcuni extent e non per altri.
Quando il chiamante passa NULL per pInputDiskArray e zero per lNumberOfDisks, VDS restituisce S_FALSE nell'oggetto asincrono e S_OK per il metodo. In questo caso, S_OK indica che VDS ha avviato l'operazione, ma l'operazione è sincrona.

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

Vedi anche

IVdsAsync

IVdsAsync::Wait

IVdsVolume

IVdsVolumeShrink::Shrink

VDS_ASYNC_OUTPUT

VDS_INPUT_DISK