DEVICE_DSM_ACTION の説明
このページでは、デバイスのデータ セットに対してデータ セット管理 (DSM) アクションを実行するために使用できる DEVICE_DSM_ACTION 定数について説明します。 これらの定数は、ntddstor.h で定義されています。 非破壊として識別されたアクションは、データを変更しません。 DSM アクションの処理方法については、「データ セット管理の概要」を参照してください。
DEVICE_DSM_ACTION 定数 | 説明 |
---|---|
DeviceDsmAction_None | 構造体の初期化のみを目的としています。 |
DeviceDsmAction_Trim | ドライバーはトリミング操作を実行します。 |
DeviceDsmAction_Notification | NonDestructive。 ドライバーは通知操作を実行します。 このアクションでは、DEVICE_DSM_INPUT 構造体の直後の パラメーター ブロックは、DEVICE_DSM_NOTIFICATION_PARAMETERS 構造体として書式設定されます。 Windows バージョン 7 以降でサポートされています。 |
DeviceDsmAction_OffloadRead | NonDestructive。 ドライバーは、オフロード読み取り操作を実行します。 このアクションでは、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 | NonDestructive。 ドライバーは、論理ブロックのプロビジョニング操作を実行します。 論理ブロック範囲は、単一の DEVICE_DSM_RANGE 構造体で指定されます。 Windows バージョン 8 以降でサポートされています。 |
DeviceDsmAction_Repair | NonDestructive。 内部使用のみ。 |
DeviceDsmAction_Scrub | NonDestructive。 内部使用のみ。 |
DeviceDsmAction_DrtQuery | NonDestructive。 内部使用のみ。 |
DeviceDsmAction_DrtClear | NonDestructive。 内部使用のみ。 |
DeviceDsmAction_DrtDisable | NonDestructive。 内部使用のみ。 |
DeviceDsmAction_TieringQuery | NonDestructive。 内部使用のみ。 |
DeviceDsmAction_Map | NonDestructive。 内部使用のみ。 |
DeviceDsmAction_RegenerateParity | NonDestructive。 内部使用のみ。 |
DeviceDsmAction_NvCache_Change_Priority | NonDestructive。 ドライバーは、論理ブロックの指定された範囲のキャッシュの優先順位を変更します。 新しいターゲット優先度は、DEVICE_DSM_INPUT 構造体の直後のパラメーター ブロックにある DEVICE_DSM_NVCACHE_CHANGE_PRIORITY_PARAMETERS 構造体で設定されます。 優先順位を変更する論理ブロック範囲は、1 つ以上の DEVICE_DSM_RANGE 構造体で指定されます。 Windows バージョン 8.1 以降でサポートされています。 |
DeviceDsmAction_NvCache_Evict | NonDestructive。 ドライバーは、キャッシュ メディアからデータを削除します。 すべてのデータを削除するには、DEVICE_DSM_INPUT の Flags メンバーに DEVICE_DSM_FLAG_ENTIRE_DATA_SET_RANGE フラグを設定し、DEVICE_DSM_RANGE 構造体を含めないでください。 削除する特定の論理ブロック範囲は、1 つ以上の DEVICE_DSM_RANGE 構造体で指定されます。 DeviceDsmAction_NvCache_Evict アクションは同期的に実行されます。 削除アクションが成功または失敗するまで、他のアクションは処理されません。 デバイスを使用するアプリケーションへの影響を制限するには、発行される各 DeviceDsmAction_NvCache_Evict アクションに比較的小さなデータ範囲を含める必要があります。 10 MB (メガバイト) を超えないようにし、理想的には 2 MB (メガバイト) より小さくする必要があります。 これにより、ユーザー レベルのアプリケーションがデバイス上のデータにアクセスするときに顕著な遅延が発生する可能性が最小限に抑えられます。 Windows バージョン 8.1 以降でサポートされています。 |
DeviceDsmAction_TopologyIdQuery | NonDestructive。 内部使用のみ。 |
DeviceDsmAction_GetPhysicalAddresses | NonDestructive。 ドライバーは、1 つ以上の論理ブロック範囲に対応する物理アドレス範囲を返します。 このアクションは、永続メモリ ディスクでのみサポートされます。 論理ブロック範囲は、DEVICE_DSM_INPUT 構造体の直後の一連の DEVICE_DSM_RANGE 構造体として指定されます。 出力は、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 を持ちます。 アプリケーションは、返された各物理アドレス範囲の長さを追跡することで、返された物理アドレス範囲を入力論理ブロック範囲にマップできます。 1 つの論理ブロック範囲が多数の物理アドレス範囲に対応できることに注意してください。 DEVICE_DSM_FLAG_PHYSICAL_ADDRESSES_OMIT_TOTAL_RANGES が DEVICE_DSM_INPUT 構造体の フラグ フィールドに 設定されている場合、ドライバーは TotalNumberOfRanges を計算しません。 これは、範囲の合計数を知る必要がない呼び出し元のパフォーマンスの最適化です。 |
DeviceDsmAction_ScopeRegen | NonDestructive。 内部使用のみ。 |
DeviceDsmAction_ReportZones | NonDestructive。 内部使用のみ。 |
DeviceDsmAction_OpenZone | NonDestructive。 内部使用のみ。 |
DeviceDsmAction_FinishZone | NonDestructive。 内部使用のみ。 |
DeviceDsmAction_CloseZone | NonDestructive。 内部使用のみ。 |
DeviceDsmAction_ResetWritePointer | 内部使用のみ。 |
DeviceDsmAction_GetRangeErrorInfo | NonDestructive。 ドライバーは、1 つ以上の論理ブロック範囲にメディア エラーが含まれているかどうかに関する情報を返します。 このアクションは、永続メモリ ディスクでのみサポートされます。 論理ブロック範囲は、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_ATTRIBUTE 要素の数が含まれます。 各 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 | NonDestructive。 内部使用のみ。 |
DeviceDsmAction_GetFreeSpace | NonDestructive。 内部使用のみ。 |
DeviceDsmAction_ConversionQuery | NonDestructive。 内部使用のみ。 |