Condividi tramite


Metodo IVdsVolume::Shrink (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.

Riduce le dimensioni del volume e tutti i plessi e restituisce gli extent rilasciati per liberare spazio.

Sintassi

HRESULT Shrink(
  [in]  ULONGLONG ullNumberOfBytesToRemove,
  [out] IVdsAsync **ppAsync
);

Parametri

[in] ullNumberOfBytesToRemove

Dimensioni della riduzione dei byte.

[out] ppAsync

Indirizzo di un puntatore dell'interfaccia IVdsAsync . VDS inizializza l'interfaccia in caso di restituzione. I chiamanti devono rilasciare l'interfaccia. Usare questa interfaccia per annullare, attendere o eseguire query sullo stato dell'operazione. Se viene chiamato IVdsAsync::Wait 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
Metodo completato correttamente.
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
La cache del provider è danneggiata. Ciò indica un problema di comunicazione o software all'interno di un provider che memorizza nella cache le informazioni sui dispositivi collegati. Il chiamante può usare il metodo IVdsHwProvider::Reenumerate seguito dal metodo IVdsHwProvider ::Refresh per ripristinare la cache.
VDS_E_CANNOT_SHRINK
0x8004251EL
Il volume non può essere ridotto perché il file system non lo supporta.
VDS_E_DISK_REMOVEABLE
0x8004255AL
L'operazione non è supportata su supporti rimovibili.
VDS_E_SHRINK_SIZE_LESS_THAN_MIN
0x80042573L
La dimensione di compattazione specificata è minore della dimensione minima di compattazione consentita.
VDS_E_SHRINK_SIZE_TOO_BIG
0x80042574L
La dimensione di compattazione specificata è troppo grande e causerà che il volume sia minore delle dimensioni minime del volume.

Commenti

Questo metodo è un wrapper per il metodo IVdsVolumeShrink::Shrink . Se si chiama IVdsVolume::Shrink, il valore del parametro uNumberOfBytesToRemove viene usato per i parametri ullDesiredNumberOfReclaimableBytes e ullMinNumberOfReclaimableBytes di IVdsVolumeShrink::Shrink.

Le operazioni di compattazione ed estensione sono supportate solo nei volumi NTFS e RAW.

Usare questo metodo per compattare il file system e il volume. Se VDS non riesce a compattare il volume, arresta l'operazione senza compattare il file system.

È possibile eseguire una sola operazione di compattazione o deframmentazione alla volta in ogni volume. Windows Server 2008 e Windows Vista: È possibile eseguire una sola operazione di compattazione o deframmentazione alla volta in un computer.

Se uNumberOfBytesToRemove è zero, il metodo ha esito negativo. In caso contrario, VDS esegue l'rounding uNumberOfBytesToRemove a più dimensioni del cluster del file system.

Gli implementatori devono restituire un puntatore all'interfaccia IVdsAsync per questo metodo, anche se la chiamata non avvia un'operazione asincrona.

È possibile usare il metodo IVdsVolumeShrink::QueryMaxReclaimableBytes per stimare il numero di byte da recuperare dall'operazione di compattazione. Tuttavia, QueryMaxReclaimableBytes può restituire più byte di quanto siano effettivamente disponibili.

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

IVdsAsync

IVdsVolume

IVdsVolume::Extend