DEVICE_DSM_ACTION描述

此頁面描述可用來在裝置資料集上執行資料集管理 (DSM) 動作的DEVICE_DSM_ACTION常數。 這些常數定義于 ntddstor.h中。 識別為非破壞性的動作不會改變任何資料。 如需 DSM 動作處理方式的相關資訊,請參閱 資料集管理概觀

DEVICE_DSM_ACTION常數 描述
DeviceDsmAction_None 僅供結構初始化之用。
DeviceDsmAction_Trim 驅動程式會執行修剪作業。
DeviceDsmAction_Notification 無損。 驅動程式會執行通知作業。 針對此動作,緊接在 DEVICE_DSM_INPUT 結構後面的參數區塊會格式化為 DEVICE_DSM_NOTIFICATION_PARAMETERS 結構。 Windows 7 和更新版本支援。
DeviceDsmAction_OffloadRead 無損。 驅動程式會執行卸載讀取作業。 針對此動作,緊接在 DEVICE_DSM_INPUT 結構之後的參數區塊會格式化為 DEVICE_DSM_OFFLOAD_READ_PARAMETERS 結構。 輸出是由 DEVICE_DSM_OUTPUT 結構所組成,後面接著 STORAGE_OFFLOAD_READ_OUTPUT 結構。 支援Windows 8和更新版本。
DeviceDsmAction_OffloadWrite 驅動程式會執行卸載寫入作業。 針對此動作,緊接在 DEVICE_DSM_INPUT 結構之後的參數區塊會格式化為 DEVICE_DSM_OFFLOAD_WRITE_PARAMETERS 結構。 輸出是由 DEVICE_DSM_OUTPUT 結構所組成,後面接著 STORAGE_OFFLOAD_WRITE_OUTPUT 結構。 支援Windows 8和更新版本。
DeviceDsmAction_Allocation 無損。 驅動程式會執行邏輯區塊布建作業。 邏輯區塊範圍是在單一 DEVICE_DSM_RANGE 結構中指定。 支援Windows 8和更新版本。
DeviceDsmAction_Repair 無損。 僅供內部使用。
DeviceDsmAction_Scrub 無損。 僅供內部使用。
DeviceDsmAction_DrtQuery 無損。 僅供內部使用。
DeviceDsmAction_DrtClear 無損。 僅供內部使用。
DeviceDsmAction_DrtDisable 無損。 僅供內部使用。
DeviceDsmAction_TieringQuery 無損。 僅供內部使用。
DeviceDsmAction_Map 無損。 僅供內部使用。
DeviceDsmAction_RegenerateParity 無損。 僅供內部使用。
DeviceDsmAction_NvCache_Change_Priority 無損。 驅動程式會變更指定之邏輯區塊範圍的快取優先順序。 新的目標優先順序是在緊接在 DEVICE_DSM_INPUT結構之後 的參數區塊DEVICE_DSM_NVCACHE_CHANGE_PRIORITY_PARAMETERS結構中設定。 一或多個 DEVICE_DSM_RANGE 結構中會提供要變更優先順序的邏輯區塊範圍。 支援Windows 8.1和更新版本。
DeviceDsmAction_NvCache_Evict 無損。 驅動程式會從快取媒體收回資料。 若要收回所有資料,請在DEVICE_DSM_INPUT的 Flags成員中設定DEVICE_DSM_FLAG_ENTIRE_DATA_SET_RANGE旗標,且不包含任何DEVICE_DSM_RANGE結構。 要收回的特定邏輯區塊範圍會在一或多個 DEVICE_DSM_RANGE 結構中提供。 DeviceDsmAction_NvCache_Evict動作會同步執行。 除非收回動作成功或失敗,否則不會提供其他動作服務。 為了限制其對使用裝置的應用程式的影響,發出的每個 DeviceDsmAction_NvCache_Evict 動作都應該包含相對較小的資料範圍。 它們不應超過 10 MB,最好小於 2 MB。 這可將使用者層級應用程式在存取裝置上的資料時遇到明顯延遲的機會降到最低。 支援Windows 8.1和更新版本。
DeviceDsmAction_TopologyIdQuery 無損。 僅供內部使用。
DeviceDsmAction_GetPhysicalAddresses 無損。 驅動程式會傳回對應至一或多個邏輯區塊範圍的實體位址範圍。 只有持續性記憶體磁片才支援此動作。 邏輯區塊範圍會指定為一系列的 DEVICE_DSM_RANGE 結構,緊接在DEVICE_DSM_INPUT 結構之後。 輸出是由 一個DEVICE_DSM_OUTPUT 結構所組成,後面接著填補,然後 是一個DEVICE_DSM_PHYSICAL_ADDRESSES_OUTPUT 結構,其中包含輸出區塊中要求的實體位址範圍。 每個實體位址範圍都會在 DEVICE_STORAGE_ADDRESS_RANGE 結構中傳回。 如果輸出緩衝區不足以保存所有資料,DSM 會傳回STATUS_BUFFER_OVERFLOW,而DEVICE_DSM_PHYSICAL_ADDRESSES_OUTPUT結構的 TotalNumberOfRanges 欄位包含滿足要求所需的DEVICE_STORAGE_ADDRESS_RANGE元素數目。 包含記憶體錯誤的任何實體位址範圍都會有DEVICE_DSM_PHYSICAL_ADDRESS_HAS_MEMORY_ERROR作為其位址。 應用程式可以追蹤每個傳回實體位址範圍的長度,將傳回的實體位址範圍對應至輸入邏輯區塊範圍。 請注意,單一邏輯區塊範圍可以對應到許多實體位址範圍。 如果DEVICE_DSM_FLAG_PHYSICAL_ADDRESSES_OMIT_TOTAL_RANGES是在DEVICE_DSM_INPUT結構的Flags欄位中設定,則驅動程式將不會計算TotalNumberOfRanges。 這是呼叫端不需要知道範圍總數的效能優化。
DeviceDsmAction_ScopeRegen 無損。 僅供內部使用。
DeviceDsmAction_ReportZones 無損。 僅供內部使用。
DeviceDsmAction_OpenZone 無損。 僅供內部使用。
DeviceDsmAction_FinishZone 無損。 僅供內部使用。
DeviceDsmAction_CloseZone 無損。 僅供內部使用。
DeviceDsmAction_ResetWritePointer 僅供內部使用。
DeviceDsmAction_GetRangeErrorInfo 無損。 驅動程式會傳回一或多個邏輯區塊範圍是否包含任何媒體錯誤的相關資訊。 只有持續性記憶體磁片才支援此功能。 邏輯區塊範圍會指定為緊接在DEVICE_DSM_INPUT結構之後的 系列 DEVICE_DSM_RANGE 結構。 輸出是由DEVICE_DSM_OUTPUT結構所組成,後面接著填補,以及保留DEVICE_STORAGE_RANGE_ATTRIBUTES陣列的DEVICE_DSM_RANGE_ERROR_OUTPUT) 結構。 如果輸出緩衝區不足以保存所有資料,DSM 會傳回 STATUS_BUFFER_OVERFLOW,而 DEVICE_DSM_RANGE_ERROR_OUTPUT 結構的 TotalNumberOfRanges 欄位包含滿足要求所需的DEVICE_STORAGE_RANGE_ATTRIBUTES元素數目。 每個DEVICE_STORAGE_RANGE_ATTRIBUTES結構都包含 IsRangeBad 欄位。 當邏輯區塊範圍包含媒體錯誤時,驅動程式會將該欄位設定為 1。 如果任何要求的範圍中沒有任何媒體錯誤,驅動程式會在 DEVICE_DSM_RANGE_ERROR_OUTPUT 的 [旗標] 欄位中設定DEVICE_STORAGE_NO_ERRORS。 會排序DEVICE_STORAGE_RANGE_ATTRIBUTES陣列的專案,使其順序對應至輸入範圍的順序。 例如,如果第一個輸入範圍分成 3 個輸出範圍,則這些範圍會是陣列中的前 3 個範圍。 呼叫端可以追蹤輸出範圍的長度,以瞭解哪些輸出範圍對應至輸入範圍。
DeviceDsmAction_WriteZeroes 僅供內部使用。
DeviceDsmAction_LostQuery 無損。 僅供內部使用。
DeviceDsmAction_GetFreeSpace 無損。 僅供內部使用。
DeviceDsmAction_ConversionQuery 無損。 僅供內部使用。