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