Поделиться через


Описания DEVICE_DSM_ACTION

На этой странице описываются константы DEVICE_DSM_ACTION, которые можно использовать для выполнения действия управления набором данных (DSM) в наборе данных устройства. Эти константы определены в 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_NVCACHE_CHANGE_PRIORITY_PARAMETERS структуре, которая находится в блоке параметров сразу после DEVICE_DSM_INPUT структуры. Диапазоны логических блоков, для которых необходимо изменить приоритет, задаются в одной или нескольких DEVICE_DSM_RANGE структурах. Поддерживается в Windows 8.1 и более поздних версиях.
DeviceDsmAction_NvCache_Evict Неразрушающий. Драйвер вытеснит данные из носителя кэширования. Чтобы вытеснить все данные, задайте флаг DEVICE_DSM_FLAG_ENTIRE_DATA_SET_RANGE в элементе FlagsDEVICE_DSM_INPUT и не включать структуры DEVICE_DSM_RANGE. Определенные диапазоны логических блоков для вытеснения предоставляются в одной или нескольких DEVICE_DSM_RANGE структурах. Действие DeviceDsmAction_NvCache_Evict выполняется синхронно. Никакие другие действия не обслуживаются до тех пор, пока действие вытеснения не выполнено или не выполнено. Чтобы ограничить влияние приложений с помощью устройства, каждое действие DeviceDsmAction_NvCache_Evict должно включать относительно небольшие диапазоны данных. Они не должны превышать 10 МБ и в идеале меньше 2 МБ. Это позволит свести к минимуму вероятность того, что приложения уровня пользователя будут испытывать заметные задержки при доступе к данным на устройстве. Поддерживается в 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 и поле TotalNumberOfRanges структуры DEVICE_DSM_PHYSICAL_ADDRESSES_OUTPUT содержит количество элементов DEVICE_STORAGE_ADDRESS_RANGE, необходимых для выполнения запроса. Любые диапазоны физических адресов, содержащие ошибку памяти, будут иметь DEVICE_DSM_PHYSICAL_ADDRESS_HAS_MEMORY_ERROR в качестве адреса. Приложения могут сопоставить возвращаемые диапазоны физических адресов с диапазонами входных логических блоков, отслеживая длину каждого возвращаемого физического диапазона адресов. Обратите внимание, что один диапазон логических блоков может соответствовать множеству физических диапазонов адресов. Если DEVICE_DSM_FLAG_PHYSICAL_ADDRESSES_OMIT_TOTAL_RANGES задан в поле флагов структуры DEVICE_DSM_INPUT, драйвер не будет вычислять TotalNumberOfRanges. Это оптимизация производительности для вызывающих абонентов, которые не должны знать общее количество диапазонов.
DeviceDsmAction_ScopeRegen Неразрушающий. Только для внутреннего использования.
DeviceDsmAction_ReportZones Неразрушающий. Только для внутреннего использования.
DeviceDsmAction_OpenZone Неразрушающий. Только для внутреннего использования.
DeviceDsmAction_FinishZone Неразрушающий. Только для внутреннего использования.
DeviceDsmAction_CloseZone Неразрушающий. Только для внутреннего использования.
DeviceDsmAction_ResetWritePointer Только для внутреннего использования.
DeviceDsmAction_GetRangeErrorInfo Неразрушающий. Драйвер вернет сведения о том, содержит ли один или несколько диапазонов логических блоков любые ошибки мультимедиа. Это поддерживается только на дисках постоянной памяти. Диапазоны логических блоков указываются в виде ряда структур DEVICE_DSM_RANGE сразу после DEVICE_DSM_INPUT структуры. Выходные данные состоят из структуры DEVICE_DSM_OUTPUT, за которой следует заполнение и структура DEVICE_DSM_RANGE_ERROR_OUTPUT), которая содержит массив DEVICE_STORAGE_RANGE_ATTRIBUTES. Если выходной буфер недостаточно велик для хранения всех данных, DSM возвращает STATUS_BUFFER_OVERFLOW и поле TotalNumberOfRanges структуры DEVICE_DSM_RANGE_ERROR_OUTPUT содержит количество элементов DEVICE_STORAGE_RANGE_ATTRIBUTES, необходимых для удовлетворения запроса. Каждая структура DEVICE_STORAGE_RANGE_ATTRIBUTES содержит поле IsRangeBad. Драйвер задает для этого поля значение 1, если диапазон логических блоков содержит ошибку носителя. Если в любом из запрошенных диапазонов нет ошибок мультимедиа, драйвер устанавливает DEVICE_STORAGE_NO_ERRORS в поле флагов DEVICE_DSM_RANGE_ERROR_OUTPUT. Элементы массива DEVICE_STORAGE_RANGE_ATTRIBUTES сортируются таким образом, чтобы их порядок соответствовал порядку входных диапазонов. Например, если первый входной диапазон был разбит на 3 выходных диапазона, они будут первыми 3 диапазонами в массиве. Вызывающий объект может узнать, какие диапазоны выходных данных соответствуют входному диапазону, отслеживая длину выходных диапазонов.
DeviceDsmAction_WriteZeroes Только для внутреннего использования.
DeviceDsmAction_LostQuery Неразрушающий. Только для внутреннего использования.
DeviceDsmAction_GetFreeSpace Неразрушающий. Только для внутреннего использования.
DeviceDsmAction_ConversionQuery Неразрушающий. Только для внутреннего использования.