Metodo IVdsVolumeShrink::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 il volume e tutti iplexes e restituisce gli extent rilasciati.
Sintassi
HRESULT Shrink(
[in] ULONGLONG ullDesiredNumberOfReclaimableBytes,
[in] ULONGLONG ullMinNumberOfReclaimableBytes,
[out] IVdsAsync **ppAsync
);
Parametri
[in] ullDesiredNumberOfReclaimableBytes
Numero massimo di byte per cui ridurre le dimensioni del volume. Il valore di questo parametro deve essere maggiore o uguale al valore del parametro ullMinNumberOfReclaimableBytes . Se il numero di byte specificato non è un multiplo delle dimensioni del cluster del file system, il metodo Shrink arrotonda questo valore fino al multiplo successivo delle dimensioni del cluster del file system.
[in] ullMinNumberOfReclaimableBytes
Numero minimo di byte per cui ridurre le dimensioni del volume. Se le dimensioni del volume non possono essere ridotte di almeno questo numero di byte, il metodo Shrink ha esito negativo. Se il numero di byte specificato non è un multiplo delle dimensioni del cluster del file system, il metodo Shrink arrotonda questo valore fino al multiplo successivo delle dimensioni del cluster del file system. Specificare zero per indicare che non è necessario alcun numero minimo di byte recuperabili affinché il metodo Shrink abbia esito positivo.
[out] ppAsync
Indirizzo di un puntatore all'interfaccia IVdsAsync . VDS inizializza l'interfaccia in caso di restituzione. I chiamanti devono rilasciare l'interfaccia. Usare questa interfaccia per annullare, attendere o eseguire una 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 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 |
---|---|
|
Metodo completato correttamente. |
|
Impossibile compattare il volume perché il file system non lo supporta. |
|
L'operazione non è supportata nei supporti rimovibili. |
|
An internal error occurred. Per altri dettagli, vedere il registro eventi. |
|
Non è stata ricevuta alcuna notifica di arrivo del volume. Potrebbe essere necessario chiamare IVdsService::Refresh. |
|
La dimensione di compattazione specificata è troppo grande e fa sì che il volume sia inferiore alla dimensione minima del volume. |
|
Le dimensioni di compattazione specificate sono inferiori alle dimensioni minime di compattazione consentite. |
|
Il volume non è integro. |
|
L'operazione è supportata solo su volumi semplici o con estensione. |
Commenti
Il metodo Shrink sposta i file in modo che siano il più vicino possibile all'inizio del volume, per consolidare lo spazio disponibile alla fine del volume. La quantità di spazio disponibile che può essere consolidata alla fine del volume determina la quantità di volume che può essere ridotta. Quindi tronca il volume del file system, ne riduce le dimensioni e quindi tronca la partizione o il volume dinamico.
In quasi tutti i casi, ci saranno alcuni file che sono rimovibili (ovvero file che non possono essere spostati). Ad esempio, è probabile che i file di metadati del file system e del driver di archiviazione siano rimovibili. Per questo motivo, la quantità in base alla quale è possibile compattare un volume è in genere inferiore alla quantità totale di spazio disponibile nel volume.
Il numero e la posizione dei file rimovibili possono variare da un computer all'altro, anche se entrambi i computer sono configurati in modo identico.
È possibile che un file sia temporaneamente rimovibile. Per questo motivo, un'applicazione può essere in grado di recuperare spazio aggiuntivo se chiama questo metodo una seconda volta con gli stessi parametri.
Se i parametri ullDesiredNumberOfReclaimableBytes e ullMinNumberOfReclaimableBytes sono entrambi zero, il metodo Shrink ridurrà il volume il più possibile.
Le operazioni di compattazione ed estensione sono supportate solo nei volumi NTFS e RAW.
Utilizzare questo metodo per compattare il file system e il volume. Se il volume non riesce a compattare il volume, l'operazione viene arrestata 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.
Gli implementatori devono restituire un puntatore all'interfaccia IVdsAsync per questo metodo, anche se la chiamata non avvia un'operazione asincrona.
Questo metodo è identico al metodo IVdsVolume::Shrink .
È possibile utilizzare il metodo IVdsVolumeShrink::QueryMaxReclaimableBytes per stimare il numero di byte da recuperare dall'operazione di compattazione. Tuttavia, QueryMaxReclaimableBytes può restituire più byte di quelli 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 |