Partilhar via


DEVICE_DSM_ACTION Descrições

Esta página descreve as constantes de DEVICE_DSM_ACTION que podem ser usadas para executar uma ação de gerenciamento de conjunto de dados (DSM) no conjunto de dados de um dispositivo. Essas constantes são definidas em ntddstor.h. As ações identificadas como não destrutivas 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 do DSM é processada.

DEVICE_DSM_ACTION Constante Descrição
DeviceDsmAction_None Apenas para fins de inicialização da estrutura.
DeviceDsmAction_Trim O motorista realizará uma operação de corte.
DeviceDsmAction_Notification Não destrutivo. O motorista executará uma operação de notificação. Para esta ação, o bloco de parâmetros imediatamente após a estrutura DEVICE_DSM_INPUT é formatado como uma estrutura DEVICE_DSM_NOTIFICATION_PARAMETERS. Suportado no Windows 7 e versões posteriores.
DeviceDsmAction_OffloadRead Não destrutivo. O driver executa uma operação de leitura de descarga. Para esta 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. Suportado no Windows 8 e versões posteriores.
DeviceDsmAction_OffloadWrite O driver executará uma operação de gravação de descarga. Para esta ação, o bloco de parâmetros imediatamente após a estrutura DEVICE_DSM_INPUT é formatado como uma estrutura DEVICE_DSM_OFFLOAD_WRITE_PARAMETERS. A saída consiste em uma estrutura DEVICE_DSM_OUTPUT, seguida por uma estrutura STORAGE_OFFLOAD_WRITE_OUTPUT. Suportado no Windows 8 e versões posteriores.
DeviceDsmAction_Allocation Não destrutivo. 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. Suportado no Windows 8 e versões posteriores.
DeviceDsmAction_Repair Não destrutivo. Apenas para uso interno.
DeviceDsmAction_Scrub Não destrutivo. Apenas para uso interno.
DeviceDsmAction_DrtQuery Não destrutivo. Apenas para uso interno.
DeviceDsmAction_DrtClear Não destrutivo. Apenas para uso interno.
DeviceDsmAction_DrtDisable Não destrutivo. Apenas para uso interno.
DeviceDsmAction_TieringQuery Não destrutivo. Apenas para uso interno.
DeviceDsmAction_Map Não destrutivo. Apenas para uso interno.
DeviceDsmAction_RegenerateParity Não destrutivo. Apenas para uso interno.
DeviceDsmAction_NvCache_Change_Priority Não destrutivo. O driver alterará a prioridade de cache de 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 a prioridade deve ser alterada são dados em uma ou mais estruturas DEVICE_DSM_RANGE. Suportado no Windows 8.1 e versões posteriores.
DeviceDsmAction_NvCache_Evict Não destrutivo. O motorista irá remover dados do meio de cache. Para remover todos os dados, defina o sinalizador DEVICE_DSM_FLAG_ENTIRE_DATA_SET_RANGE no Flags membro do DEVICE_DSM_INPUT e não inclua nenhuma estrutura DEVICE_DSM_RANGE. Intervalos de blocos lógicos específicos para remoção são dados em uma ou mais estruturas DEVICE_DSM_RANGE. A ação DeviceDsmAction_NvCache_Evict é executada de forma síncrona. Nenhuma outra ação é atendida até que a ação de despejo tenha sido bem-sucedida ou fracassada. A fim de limitar o seu impacto nas aplicações que utilizam o dispositivo, cada ação DeviceDsmAction_NvCache_Evict emitida deve incluir intervalos de dados relativamente pequenos. Não devem exceder 10 MB e, idealmente, ser inferiores a 2 MB. Isso minimizará a chance de que os aplicativos de nível de usuário sofram atrasos percetíveis ao acessar dados no dispositivo. Suportado no Windows 8.1 e versões posteriores.
DeviceDsmAction_TopologyIdQuery Não destrutivo. Apenas para uso interno.
DeviceDsmAction_GetPhysicalAddresses Não destrutivo. O driver retornará os intervalos de endereços físicos que correspondem a um ou mais intervalos de blocos lógicos. Esta ação só é suportada em discos de memória persistente. 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 de DEVICE_DSM_OUTPUT, seguida de preenchimento e, em seguida, uma estrutura de 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 armazenar 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 satisfazer a solicitação. Qualquer intervalo de endereços físicos que contenha um erro de memória terá DEVICE_DSM_PHYSICAL_ADDRESS_HAS_MEMORY_ERROR como 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 retornados. 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 Flags da estrutura DEVICE_DSM_INPUT, o driver não calculará TotalNumberOfRanges. Esta é uma otimização de desempenho para chamadores que não precisam saber o número total de intervalos.
DeviceDsmAction_ScopeRegen Não destrutivo. Apenas para uso interno.
DeviceDsmAction_ReportZones Não destrutivo. Apenas para uso interno.
DeviceDsmAction_OpenZone Não destrutivo. Apenas para uso interno.
DeviceDsmAction_FinishZone Não destrutivo. Apenas para uso interno.
DeviceDsmAction_CloseZone Não destrutivo. Apenas para uso interno.
DeviceDsmAction_ResetWritePointer Apenas para uso interno.
DeviceDsmAction_GetRangeErrorInfo Não destrutivo. O driver retornará informações sobre se um ou mais intervalos de blocos lógicos contêm erros de mídia. Isso só é suportado em discos de memória persistente. 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 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 armazenar 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 satisfazer a 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 qualquer um dos intervalos solicitados, o driver define DEVICE_STORAGE_NO_ERRORS no campo Sinalizadores de DEVICE_DSM_RANGE_ERROR_OUTPUT. Os elementos da matriz DEVICE_STORAGE_RANGE_ATTRIBUTES são classificados de modo que sua ordem corresponda à ordem dos intervalos de entrada. Por exemplo, se o primeiro intervalo de entrada foi dividido em 3 intervalos de saída, esses serão os primeiros 3 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 Não destrutivo. Apenas para uso interno.
DeviceDsmAction_GetFreeSpace Não destrutivo. Apenas para uso interno.
DeviceDsmAction_ConversionQuery Não destrutivo. Apenas para uso interno.