Partilhar via


Descrições do DEVICE_DSM_ACTION

Esta página descreve as constantes DEVICE_DSM_ACTION que podem ser usadas para executar uma ação de DSM (gerenciamento de conjunto de dados) no conjunto de dados de um dispositivo. Essas constantes são definidas em ntddstor.h. As ações identificadas como não estruturativas não alterarão nenhum dado. Consulte Visão geral do gerenciamento de conjuntos de dados para obter informações sobre como uma ação de DSM é processada.

Constante DEVICE_DSM_ACTION Descrição
DeviceDsmAction_None Somente para fins de inicialização de estrutura.
DeviceDsmAction_Trim O driver executará uma operação de corte.
DeviceDsmAction_Notification Nondestructive. O driver executará uma operação de notificação. Para essa ação, o bloco de parâmetros imediatamente após a estrutura DEVICE_DSM_INPUT é formatado como uma estrutura DEVICE_DSM_NOTIFICATION_PARAMETERS . Com suporte no Windows 7 e versões posteriores.
DeviceDsmAction_OffloadRead Nondestructive. O driver executa uma operação de leitura de descarregamento. Para essa ação, o bloco de parâmetros imediatamente após a estrutura DEVICE_DSM_INPUT é formatado como uma estrutura DEVICE_DSM_OFFLOAD_READ_PARAMETERS . A saída consiste em uma estrutura DEVICE_DSM_OUTPUT , seguida por uma estrutura STORAGE_OFFLOAD_READ_OUTPUT . Com suporte em Windows 8 e versões posteriores.
DeviceDsmAction_OffloadWrite O driver executará uma operação de gravação de descarregamento. Para essa ação, o bloco de parâmetros imediatamente após a estrutura DEVICE_DSM_INPUT é formatado como uma estrutura de DEVICE_DSM_OFFLOAD_WRITE_PARAMETERS . A saída consiste em uma estrutura DEVICE_DSM_OUTPUT , seguida por uma estrutura STORAGE_OFFLOAD_WRITE_OUTPUT . Com suporte em Windows 8 e versões posteriores.
DeviceDsmAction_Allocation Nondestructive. O driver executará uma operação de provisionamento de bloco lógico. O intervalo de blocos lógicos é especificado em uma única estrutura DEVICE_DSM_RANGE . Com suporte em Windows 8 e versões posteriores.
DeviceDsmAction_Repair Nondestructive. Apenas para uso interno.
DeviceDsmAction_Scrub Nondestructive. Apenas para uso interno.
DeviceDsmAction_DrtQuery Nondestructive. Apenas para uso interno.
DeviceDsmAction_DrtClear Nondestructive. Apenas para uso interno.
DeviceDsmAction_DrtDisable Nondestructive. Apenas para uso interno.
DeviceDsmAction_TieringQuery Nondestructive. Apenas para uso interno.
DeviceDsmAction_Map Nondestructive. Apenas para uso interno.
DeviceDsmAction_RegenerateParity Nondestructive. Apenas para uso interno.
DeviceDsmAction_NvCache_Change_Priority Nondestructive. O driver alterará a prioridade de cache dos intervalos especificados de blocos lógicos. A nova prioridade de destino é definida em uma estrutura DEVICE_DSM_NVCACHE_CHANGE_PRIORITY_PARAMETERS que está localizada no bloco de parâmetros imediatamente após a estrutura DEVICE_DSM_INPUT . Os intervalos de blocos lógicos para os quais alterar a prioridade são fornecidos em uma ou mais estruturas DEVICE_DSM_RANGE . Com suporte em Windows 8.1 e versões posteriores.
DeviceDsmAction_NvCache_Evict Nondestructive. O driver removerá dados do meio de cache. Para remover todos os dados, defina o sinalizador DEVICE_DSM_FLAG_ENTIRE_DATA_SET_RANGE no membro Flags do DEVICE_DSM_INPUT e não inclua nenhuma estrutura de DEVICE_DSM_RANGE . Intervalos de blocos lógicos específicos a serem removidos são fornecidos em uma ou mais estruturas DEVICE_DSM_RANGE . A ação DeviceDsmAction_NvCache_Evict é executada de forma síncrona. Nenhuma outra ação será atendida até que a ação de remoção seja bem-sucedida ou falhe. Para limitar seu impacto nos aplicativos que usam o dispositivo, cada DeviceDsmAction_NvCache_Evict ação emitida deve incluir intervalos de dados relativamente pequenos. Eles não devem exceder 10 MB e, idealmente, ser menores que 2 MB. Isso minimizará a chance de que os aplicativos no nível do usuário tenham atrasos perceptíveis ao acessar dados no dispositivo. Com suporte em Windows 8.1 e versões posteriores.
DeviceDsmAction_TopologyIdQuery Nondestructive. Apenas para uso interno.
DeviceDsmAction_GetPhysicalAddresses Nondestructive. O driver retornará os intervalos de endereços físicos que correspondem a um ou mais intervalos de blocos lógicos. Essa ação só tem suporte em discos de memória persistentes. Os intervalos de blocos lógicos são especificados como uma série de estruturas DEVICE_DSM_RANGE imediatamente após a estrutura DEVICE_DSM_INPUT. A saída consiste em uma estrutura DEVICE_DSM_OUTPUT , seguida por preenchimento e, em seguida, uma estrutura DEVICE_DSM_PHYSICAL_ADDRESSES_OUTPUT com os intervalos de endereços físicos solicitados no bloco de saída. Cada intervalo de endereços físicos é retornado em uma estrutura DEVICE_STORAGE_ADDRESS_RANGE . Se o buffer de saída não for grande o suficiente para conter todos os dados, o DSM retornará STATUS_BUFFER_OVERFLOW e o campo TotalNumberOfRanges da estrutura DEVICE_DSM_PHYSICAL_ADDRESSES_OUTPUT conterá o número de elementos DEVICE_STORAGE_ADDRESS_RANGE necessários para atender à solicitação. Todos os intervalos de endereços físicos que contenham um erro de memória terão DEVICE_DSM_PHYSICAL_ADDRESS_HAS_MEMORY_ERROR como seu endereço. Os aplicativos podem mapear os intervalos de endereços físicos retornados para os intervalos de blocos lógicos de entrada mantendo o controle do comprimento de cada intervalo de endereços físicos retornado. Observe que um único intervalo de blocos lógicos pode corresponder a muitos intervalos de endereços físicos. Se DEVICE_DSM_FLAG_PHYSICAL_ADDRESSES_OMIT_TOTAL_RANGES estiver definido no campo Sinalizadores da estrutura DEVICE_DSM_INPUT , o driver não calculará TotalNumberOfRanges. Essa é uma otimização de desempenho para chamadores que não precisam saber o número total de intervalos.
DeviceDsmAction_ScopeRegen Nondestructive. Apenas para uso interno.
DeviceDsmAction_ReportZones Nondestructive. Apenas para uso interno.
DeviceDsmAction_OpenZone Nondestructive. Apenas para uso interno.
DeviceDsmAction_FinishZone Nondestructive. Apenas para uso interno.
DeviceDsmAction_CloseZone Nondestructive. Apenas para uso interno.
DeviceDsmAction_ResetWritePointer Apenas para uso interno.
DeviceDsmAction_GetRangeErrorInfo Nondestructive. O driver retornará informações sobre se um ou mais intervalos de blocos lógicos contêm erros de mídia. Só há suporte para isso em discos de memória persistentes. Os intervalos de blocos lógicos são especificados como uma série de estruturas DEVICE_DSM_RANGE imediatamente após a estrutura DEVICE_DSM_INPUT . A saída consiste em uma estrutura DEVICE_DSM_OUTPUT , seguida de preenchimento e por uma estrutura DEVICE_DSM_RANGE_ERROR_OUTPUT) que contém uma matriz de DEVICE_STORAGE_RANGE_ATTRIBUTES. Se o buffer de saída não for grande o suficiente para manter todos os dados, o DSM retornará STATUS_BUFFER_OVERFLOW e o campo TotalNumberOfRanges da estrutura DEVICE_DSM_RANGE_ERROR_OUTPUT conterá o número de elementos DEVICE_STORAGE_RANGE_ATTRIBUTES necessários para atender à solicitação. Cada estrutura DEVICE_STORAGE_RANGE_ATTRIBUTES contém um campo IsRangeBad . O driver define esse campo como 1 quando o intervalo de blocos lógicos contém um erro de mídia. Se não houver erros de mídia em nenhum dos intervalos solicitados, o driver definirá DEVICE_STORAGE_NO_ERRORS no campo Sinalizadores de DEVICE_DSM_RANGE_ERROR_OUTPUT. Os elementos da matriz DEVICE_STORAGE_RANGE_ATTRIBUTES são classificados para que sua ordem corresponda à ordem dos intervalos de entrada. Por exemplo, se o primeiro intervalo de entrada tiver sido dividido em três intervalos de saída, esses serão os três primeiros intervalos na matriz. O chamador pode saber quais intervalos de saída correspondem a um intervalo de entrada mantendo o controle do comprimento dos intervalos de saída.
DeviceDsmAction_WriteZeroes Apenas para uso interno.
DeviceDsmAction_LostQuery Nondestructive. Apenas para uso interno.
DeviceDsmAction_GetFreeSpace Nondestructive. Apenas para uso interno.
DeviceDsmAction_ConversionQuery Nondestructive. Somente para uso interno.