descrizioni DEVICE_DSM_ACTION

Questa pagina descrive le costanti DEVICE_DSM_ACTION che possono essere usate per eseguire un'azione di gestione del set di dati (DSM) nel set di dati di un dispositivo. Queste costanti sono definite in ntddstor.h. Le azioni identificate come non strutturative non modificano i dati. Per informazioni su come viene elaborata un'azione DSM, vedere Panoramica sulla gestione dei set di dati .

costante DEVICE_DSM_ACTION Descrizione
DeviceDsmAction_None Solo per scopi di inizializzazione della struttura.
DeviceDsmAction_Trim Il driver eseguirà un'operazione di taglio.
DeviceDsmAction_Notification NonDestructive. Il driver eseguirà un'operazione di notifica. Per questa azione, il blocco di parametri immediatamente dopo la struttura DEVICE_DSM_INPUT viene formattato come struttura DEVICE_DSM_NOTIFICATION_PARAMETERS . Supportato in Windows 7 e versioni successive.
DeviceDsmAction_OffloadRead NonDestructive. Il driver esegue un'operazione di lettura offload. Per questa azione, il blocco di parametri immediatamente dopo la struttura DEVICE_DSM_INPUT viene formattato come struttura DEVICE_DSM_OFFLOAD_READ_PARAMETERS . L'output è costituito da una struttura DEVICE_DSM_OUTPUT , seguita da una struttura STORAGE_OFFLOAD_READ_OUTPUT . Supportato in Windows 8 e versioni successive.
DeviceDsmAction_OffloadWrite Il driver eseguirà un'operazione di scrittura offload. Per questa azione, il blocco di parametri immediatamente dopo la struttura DEVICE_DSM_INPUT viene formattato come struttura DEVICE_DSM_OFFLOAD_WRITE_PARAMETERS . L'output è costituito da una struttura DEVICE_DSM_OUTPUT , seguita da una struttura STORAGE_OFFLOAD_WRITE_OUTPUT . Supportato in Windows 8 e versioni successive.
DeviceDsmAction_Allocation NonDestructive. Il driver eseguirà un'operazione di provisioning di blocchi logici. L'intervallo di blocchi logici viene specificato in una singola struttura DEVICE_DSM_RANGE . Supportato in Windows 8 e versioni successive.
DeviceDsmAction_Repair NonDestructive. Solo per uso interno.
DeviceDsmAction_Scrub NonDestructive. Solo per uso interno.
DeviceDsmAction_DrtQuery NonDestructive. Solo per uso interno.
DeviceDsmAction_DrtClear NonDestructive. Solo per uso interno.
DeviceDsmAction_DrtDisable NonDestructive. Solo per uso interno.
DeviceDsmAction_TieringQuery NonDestructive. Solo per uso interno.
DeviceDsmAction_Map NonDestructive. Solo per uso interno.
DeviceDsmAction_RegenerateParity NonDestructive. Solo per uso interno.
DeviceDsmAction_NvCache_Change_Priority NonDestructive. Il driver cambierà la priorità di memorizzazione nella cache degli intervalli specificati di blocchi logici. La nuova priorità di destinazione viene impostata in una struttura DEVICE_DSM_NVCACHE_CHANGE_PRIORITY_PARAMETERS che si trova nel blocco di parametri immediatamente dopo la struttura DEVICE_DSM_INPUT . Gli intervalli di blocchi logici per i quali modificare la priorità vengono assegnati in una o più strutture DEVICE_DSM_RANGE . Supportato in Windows 8.1 e versioni successive.
DeviceDsmAction_NvCache_Evict NonDestructive. Il driver rimuove i dati dal supporto di memorizzazione nella cache. Per rimuovere tutti i dati, impostare il flag di DEVICE_DSM_FLAG_ENTIRE_DATA_SET_RANGE nel membro Flags di DEVICE_DSM_INPUT e non includere strutture DEVICE_DSM_RANGE . Gli intervalli di blocchi logici specifici da rimuovere vengono forniti in una o più strutture DEVICE_DSM_RANGE . L'azione DeviceDsmAction_NvCache_Evict viene eseguita in modo sincrono. Nessun'altra azione viene eseguita fino a quando l'azione di rimozione non è riuscita o non è riuscita. Per limitare l'impatto sulle applicazioni usando il dispositivo, ogni azione DeviceDsmAction_NvCache_Evict rilasciata deve includere intervalli di dati relativamente piccoli. Non devono superare 10 MB e idealmente essere inferiori a 2 MB. Ciò riduce al minimo la possibilità che le applicazioni a livello di utente verifichino ritardi evidenti durante l'accesso ai dati nel dispositivo. Supportato in Windows 8.1 e versioni successive.
DeviceDsmAction_TopologyIdQuery NonDestructive. Solo per uso interno.
DeviceDsmAction_GetPhysicalAddresses NonDestructive. Il driver restituirà gli intervalli di indirizzi fisici corrispondenti a uno o più intervalli di blocchi logici. Questa azione è supportata solo nei dischi di memoria persistente. Gli intervalli di blocchi logici vengono specificati come una serie di strutture DEVICE_DSM_RANGE immediatamente dopo la struttura DEVICE_DSM_INPUT . L'output è costituito da una struttura DEVICE_DSM_OUTPUT , seguita da spaziatura interna e quindi da una struttura DEVICE_DSM_PHYSICAL_ADDRESSES_OUTPUT con gli intervalli di indirizzi fisici richiesti nel blocco di output. Ogni intervallo di indirizzi fisici viene restituito in una struttura DEVICE_STORAGE_ADDRESS_RANGE . Se il buffer di output non è sufficiente per contenere tutti i dati, il DSM restituisce STATUS_BUFFER_OVERFLOW e il campo TotalNumberOfRanges della struttura DEVICE_DSM_PHYSICAL_ADDRESSES_OUTPUT contiene il numero di elementi DEVICE_STORAGE_ADDRESS_RANGE necessari per soddisfare la richiesta. Tutti gli intervalli di indirizzi fisici che contengono un errore di memoria avranno DEVICE_DSM_PHYSICAL_ADDRESS_HAS_MEMORY_ERROR come indirizzo. Le applicazioni possono eseguire il mapping degli intervalli di indirizzi fisici restituiti agli intervalli di blocchi logici di input tenendo traccia della lunghezza di ogni intervallo di indirizzi fisici restituiti. Si noti che un singolo intervallo di blocchi logici può corrispondere a molti intervalli di indirizzi fisici. Se DEVICE_DSM_FLAG_PHYSICAL_ADDRESSES_OMIT_TOTAL_RANGES è impostato nel campo Flag della struttura DEVICE_DSM_INPUT , il driver non calcola TotalNumberOfRanges. Si tratta di un'ottimizzazione delle prestazioni per i chiamanti che non devono conoscere il numero totale di intervalli.
DeviceDsmAction_ScopeRegen NonDestructive. Solo per uso interno.
DeviceDsmAction_ReportZones NonDestructive. Solo per uso interno.
DeviceDsmAction_OpenZone NonDestructive. Solo per uso interno.
DeviceDsmAction_FinishZone NonDestructive. Solo per uso interno.
DeviceDsmAction_CloseZone NonDestructive. Solo per uso interno.
DeviceDsmAction_ResetWritePointer Solo per uso interno.
DeviceDsmAction_GetRangeErrorInfo NonDestructive. Il driver restituirà informazioni sul fatto che uno o più intervalli di blocchi logici contengano eventuali errori multimediali. Questa funzionalità è supportata solo nei dischi di memoria persistente. Gli intervalli di blocchi logici vengono specificati come una serie di strutture DEVICE_DSM_RANGE immediatamente dopo la struttura DEVICE_DSM_INPUT . L'output è costituito da una struttura DEVICE_DSM_OUTPUT, seguita da spaziatura interna e da una struttura DEVICE_DSM_RANGE_ERROR_OUTPUT) che contiene una matrice di DEVICE_STORAGE_RANGE_ATTRIBUTES. Se il buffer di output non è sufficiente per contenere tutti i dati, il DSM restituisce STATUS_BUFFER_OVERFLOW e il campo TotalNumberOfRanges della struttura DEVICE_DSM_RANGE_ERROR_OUTPUT contiene il numero di elementi DEVICE_STORAGE_RANGE_ATTRIBUTES necessari per soddisfare la richiesta. Ogni struttura DEVICE_STORAGE_RANGE_ATTRIBUTES contiene un campo IsRangeBad . Il driver imposta il campo su 1 quando l'intervallo di blocchi logici contiene un errore multimediale. Se non sono presenti errori multimediali in uno degli intervalli richiesti, il driver imposta DEVICE_STORAGE_NO_ERRORS nel campo Flags di DEVICE_DSM_RANGE_ERROR_OUTPUT. Gli elementi della matrice di DEVICE_STORAGE_RANGE_ATTRIBUTES vengono ordinati in modo che l'ordine corrisponda all'ordine degli intervalli di input. Ad esempio, se il primo intervallo di input è stato suddiviso in 3 intervalli di output, questi saranno i primi 3 intervalli nella matrice. Il chiamante può apprendere quali intervalli di output corrispondono a un intervallo di input mantenendo traccia della lunghezza degli intervalli di output.
DeviceDsmAction_WriteZeroes Solo per uso interno.
DeviceDsmAction_LostQuery NonDestructive. Solo per uso interno.
DeviceDsmAction_GetFreeSpace NonDestructive. Solo per uso interno.
DeviceDsmAction_ConversionQuery NonDestructive. Solo per uso interno.