Condividi tramite


Metodo IVdsLun::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.

Estende un LUN per un numero specificato di byte.

Sintassi

HRESULT Extend(
  [in]  ULONGLONG     ullNumberOfBytesToAdd,
  [in]  VDS_OBJECT_ID *pDriveIdArray,
  [in]  LONG          lNumberOfDrives,
  [out] IVdsAsync     **ppAsync
);

Parametri

[in] ullNumberOfBytesToAdd

Numero di byte da cui estendere il LUN. Il numero di byte non è necessario essere un numero pari a più delle dimensioni del blocco o del settore delle unità. Il provider può arrotondare il numero di byte verso l'alto o verso il basso per soddisfare i requisiti di allineamento o altre restrizioni. Nella maggior parte dei casi, il provider esegue il round up, assicurandosi che, con eccezioni rare, il LUN venga esteso per almeno il numero di byte richiesti.

[in] pDriveIdArray

Puntatore a una matrice di GUID di unità. Il provider usa queste unità per estendere il LUN. Le unità vengono usate nella sequenza specificata; il provider usa tutti gli extent in un'unità prima di passare al successivo e si arresta quando il LUN è stato esteso dal numero richiesto di byte.

In alternativa, il chiamante può indirizzare il provider per selezionare automaticamente le unità passando NULL in questo parametro e zero nel parametro lNumberOfDrives . Si noti che il passaggio di NULL è valido solo se il parametro lNumberOfDrives è zero.

[in] lNumberOfDrives

Numero di unità specificate nel parametro pDriveIdArray . Se il chiamante supera zero, il provider seleziona le unità.

[out] ppAsync

Indirizzo di un puntatore dell'interfaccia IVdsAsync , che il VDS inizializza sul ritorno. I chiamanti devono rilasciare l'interfaccia. Usare questa interfaccia per annullare, attendere o eseguire query sullo stato dell'operazione.

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
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
Questo valore restituito segnala un problema di comunicazione o software all'interno di un provider che memorizza nella cache le informazioni sulla matrice. Usare il metodo IVdsHwProvider::Reenumerate seguito dal metodo IVdsHwProvider ::Refresh per ripristinare la cache.
VDS_E_OBJECT_DELETED
0x8004240BL
L'oggetto LUN non è più presente.
VDS_E_OBJECT_STATUS_FAILED
0x80042431L
Il LUN è in uno stato non riuscito e non è in grado di eseguire l'operazione richiesta.
VDS_E_ANOTHER_CALL_IN_PROGRESS
0x80042404L
Un'altra operazione è in corso; questa operazione non può continuare fino al completamento dell'operazione o delle operazioni precedenti.
VDS_E_OBJECT_NOT_FOUND
0x80042405L
Può essere restituito da qualsiasi metodo che accetta una costante VDS_OBJECT_ID . Questo valore restituito indica che l'identificatore non fa riferimento a un oggetto esistente.
VDS_E_NOT_SUPPORTED
0x80042400L
Questa operazione o combinazione di parametri non è supportata da questo provider.
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
Non è disponibile spazio utilizzabile sufficiente per questa operazione.
VDS_E_NOT_ENOUGH_DRIVE
0x80042410L
Non sono presenti unità gratuite sufficienti nel sottosistema per completare questa operazione.

Commenti

I chiamanti possono specificare un elenco di unità da usare per estendere il LUN o indirizzare il provider per selezionare automaticamente le unità.

Dopo aver esteso il LUN, il chiamante deve usare il codice di controllo IOCTL_DISK_UPDATE_PROPERTIES per rendere visibili le dimensioni del disco aggiornate nel computer in cui il LUN è senza maschera.

Gli implementatori devono restituire un puntatore all'interfaccia IVdsAsync per questo metodo, indipendentemente dal fatto che la chiamata avvia un'operazione asincrona.

Se il parametro ullNumberOfBytesToAdd è maggiore del numero di byte disponibili nelle unità specificate nel parametro pDriveIdArray , usare prima le unità specificate e quindi selezionare da qualsiasi altra unità disponibile. Se tali unità non sono sufficienti per estendere il LUN dal numero richiesto di byte, restituire un errore e non estendere il LUN.

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

IVdsHwProvider::Reenumerate

IVdsHwProvider::Refresh

IVdsLun

IVdsLun::Shrink

IVdsSubSystem::CreateLun