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. |