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


Описания 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 в элементе ФлагиDEVICE_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 Неразрушающего. Только для внутреннего использования.