DEVICE_DSM_ACTION Descriptions

Cette page décrit les constantes DEVICE_DSM_ACTION qui peuvent être utilisées pour effectuer une action de gestion de jeu de données (DSM) sur le jeu de données d’un appareil. Ces constantes sont définies dans ntddstor.h. Les actions identifiées comme non destructrices ne modifient aucune donnée. Pour plus d’informations sur le traitement d’une action DSM, consultez Vue d’ensemble de la gestion des ensembles de données.

constante DEVICE_DSM_ACTION Description
DeviceDsmAction_None À des fins d’initialisation de structure uniquement.
DeviceDsmAction_Trim Le pilote effectue une opération de découpage.
DeviceDsmAction_Notification Non destructeur. Le pilote effectue une opération de notification. Pour cette action, le bloc de paramètres qui suit immédiatement la structure DEVICE_DSM_INPUT est mis en forme en tant que structure DEVICE_DSM_NOTIFICATION_PARAMETERS . Pris en charge dans Windows 7 et versions ultérieures.
DeviceDsmAction_OffloadRead Non destructeur. Le pilote effectue une opération de lecture de déchargement. Pour cette action, le bloc de paramètres qui suit immédiatement la structure DEVICE_DSM_INPUT est mis en forme en tant que structure DEVICE_DSM_OFFLOAD_READ_PARAMETERS . La sortie se compose d’une structure DEVICE_DSM_OUTPUT , suivie d’une structure STORAGE_OFFLOAD_READ_OUTPUT . Pris en charge dans Windows 8 et versions ultérieures.
DeviceDsmAction_OffloadWrite Le pilote effectue une opération d’écriture de déchargement. Pour cette action, le bloc de paramètres qui suit immédiatement la structure DEVICE_DSM_INPUT est mis en forme en tant que structure de DEVICE_DSM_OFFLOAD_WRITE_PARAMETERS . La sortie se compose d’une structure DEVICE_DSM_OUTPUT , suivie d’une structure STORAGE_OFFLOAD_WRITE_OUTPUT . Pris en charge dans Windows 8 et versions ultérieures.
DeviceDsmAction_Allocation Non destructeur. Le pilote effectue une opération d’approvisionnement de blocs logiques. La plage de blocs logiques est spécifiée dans une structure DEVICE_DSM_RANGE unique. Pris en charge dans Windows 8 et versions ultérieures.
DeviceDsmAction_Repair Non destructeur. À usage interne uniquement.
DeviceDsmAction_Scrub Non destructeur. À usage interne uniquement.
DeviceDsmAction_DrtQuery Non destructeur. À usage interne uniquement.
DeviceDsmAction_DrtClear Non destructeur. À usage interne uniquement.
DeviceDsmAction_DrtDisable Non destructeur. À usage interne uniquement.
DeviceDsmAction_TieringQuery Non destructeur. À usage interne uniquement.
DeviceDsmAction_Map Non destructeur. À usage interne uniquement.
DeviceDsmAction_RegenerateParity Non destructeur. À usage interne uniquement.
DeviceDsmAction_NvCache_Change_Priority Non destructeur. Le pilote modifie la priorité de mise en cache des plages spécifiées de blocs logiques. La nouvelle priorité cible est définie dans une structure de DEVICE_DSM_NVCACHE_CHANGE_PRIORITY_PARAMETERS qui se trouve dans le bloc de paramètres qui suit immédiatement la structure DEVICE_DSM_INPUT . Les plages de blocs logiques pour lesquelles modifier la priorité sont données dans une ou plusieurs structures DEVICE_DSM_RANGE . Pris en charge dans les versions Windows 8.1 et ultérieures.
DeviceDsmAction_NvCache_Evict Non destructeur. Le pilote supprime les données du support de mise en cache. Pour supprimer toutes les données, définissez l’indicateur DEVICE_DSM_FLAG_ENTIRE_DATA_SET_RANGE dans le membre Indicateurs de DEVICE_DSM_INPUT et n’incluez aucune structure DEVICE_DSM_RANGE . Des plages de blocs logiques spécifiques à supprimer sont données dans une ou plusieurs structures DEVICE_DSM_RANGE . L’action DeviceDsmAction_NvCache_Evict est exécutée de manière synchrone. Aucune autre action n’est prise en compte tant que l’action d’expulsion n’a pas réussi ou échoué. Afin de limiter son impact sur les applications utilisant l’appareil, chaque action DeviceDsmAction_NvCache_Evict émise doit inclure des plages de données relativement petites. Elles ne doivent pas dépasser 10 Mo et idéalement être inférieures à 2 Mo. Cela réduit le risque que les applications au niveau de l’utilisateur rencontrent des retards notables lors de l’accès aux données sur l’appareil. Pris en charge dans les versions Windows 8.1 et ultérieures.
DeviceDsmAction_TopologyIdQuery Non destructeur. À usage interne uniquement.
DeviceDsmAction_GetPhysicalAddresses Non destructeur. Le pilote retourne les plages d’adresses physiques qui correspondent à une ou plusieurs plages de blocs logiques. Cette action est uniquement prise en charge sur les disques de mémoire persistants. Les plages de blocs logiques sont spécifiées sous la forme d’une série de structures DEVICE_DSM_RANGE immédiatement après la structure DEVICE_DSM_INPUT. La sortie se compose d’une structure DEVICE_DSM_OUTPUT , suivie d’un remplissage, puis d’une structure de DEVICE_DSM_PHYSICAL_ADDRESSES_OUTPUT avec les plages d’adresses physiques demandées dans le bloc de sortie. Chaque plage d’adresses physique est retournée dans une structure DEVICE_STORAGE_ADDRESS_RANGE . Si la mémoire tampon de sortie n’est pas assez grande pour contenir toutes les données, le DSM retourne STATUS_BUFFER_OVERFLOW et le champ TotalNumberOfRanges de la structure DEVICE_DSM_PHYSICAL_ADDRESSES_OUTPUT contient le nombre d’éléments DEVICE_STORAGE_ADDRESS_RANGE nécessaires pour répondre à la demande. Toutes les plages d’adresses physiques qui contiennent une erreur de mémoire auront DEVICE_DSM_PHYSICAL_ADDRESS_HAS_MEMORY_ERROR comme adresse. Les applications peuvent mapper les plages d’adresses physiques retournées aux plages de blocs logiques d’entrée en effectuant le suivi de la longueur de chaque plage d’adresses physique retournée. Notez qu’une seule plage de blocs logiques peut correspondre à de nombreuses plages d’adresses physiques. Si DEVICE_DSM_FLAG_PHYSICAL_ADDRESSES_OMIT_TOTAL_RANGES est défini dans le champ Indicateurs de la structure DEVICE_DSM_INPUT , le pilote ne calcule pas TotalNumberOfRanges. Il s’agit d’une optimisation des performances pour les appelants qui n’ont pas besoin de connaître le nombre total de plages.
DeviceDsmAction_ScopeRegen Non destructeur. À usage interne uniquement.
DeviceDsmAction_ReportZones Non destructeur. À usage interne uniquement.
DeviceDsmAction_OpenZone Non destructeur. À usage interne uniquement.
DeviceDsmAction_FinishZone Non Destructive. À usage interne uniquement.
DeviceDsmAction_CloseZone Non Destructive. À usage interne uniquement.
DeviceDsmAction_ResetWritePointer À usage interne uniquement.
DeviceDsmAction_GetRangeErrorInfo Non Destructive. Le pilote retourne des informations indiquant si une ou plusieurs plages de blocs logiques contiennent des erreurs de média. Cela est pris en charge uniquement sur les disques de mémoire persistante. Les plages de blocs logiques sont spécifiées sous la forme d’une série de structures DEVICE_DSM_RANGE immédiatement après la structure DEVICE_DSM_INPUT . La sortie se compose d’une structure DEVICE_DSM_OUTPUT , suivie d’un remplissage et d’une structure DEVICE_DSM_RANGE_ERROR_OUTPUT) qui contient un tableau de DEVICE_STORAGE_RANGE_ATTRIBUTES. Si la mémoire tampon de sortie n’est pas suffisamment grande pour contenir toutes les données, le DSM retourne STATUS_BUFFER_OVERFLOW et le champ TotalNumberOfRanges de la structure DEVICE_DSM_RANGE_ERROR_OUTPUT contient le nombre d’éléments DEVICE_STORAGE_RANGE_ATTRIBUTES nécessaires pour satisfaire la demande. Chaque structure DEVICE_STORAGE_RANGE_ATTRIBUTES contient un champ IsRangeBad . Le pilote définit ce champ sur 1 lorsque la plage de blocs logiques contient une erreur de média. S’il n’y a aucune erreur de média dans l’une des plages demandées, les jeux de pilotes DEVICE_STORAGE_NO_ERRORS dans le champ Indicateurs de DEVICE_DSM_RANGE_ERROR_OUTPUT. Les éléments du tableau DEVICE_STORAGE_RANGE_ATTRIBUTES sont triés de sorte que leur ordre corresponde à l’ordre des plages d’entrée. Par exemple, si la première plage d’entrée a été divisée en 3 plages de sortie, il s’agira des 3 premières plages du tableau. L’appelant peut apprendre quelles plages de sortie correspondent à une plage d’entrée en effectuant le suivi de la longueur des plages de sortie.
DeviceDsmAction_WriteZeroes À usage interne uniquement.
DeviceDsmAction_LostQuery Non Destructive. À usage interne uniquement.
DeviceDsmAction_GetFreeSpace Non Destructive. À usage interne uniquement.
DeviceDsmAction_ConversionQuery Non Destructive. Uniquement réservé à un usage interne.