Partager via


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 destructeurs ne modifient aucune donnée. Consultez Vue d’ensemble de la gestion des ensembles de données pour plus d’informations sur le traitement d’une action DSM.

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 NonDestructif. Le pilote effectue une opération de notification. Pour cette action, le bloc de paramètres suivant immédiatement la structure DEVICE_DSM_INPUT est mis en forme comme structure DEVICE_DSM_NOTIFICATION_PARAMETERS. Pris en charge dans Windows 7 et versions ultérieures.
DeviceDsmAction_OffloadRead NonDestructif. Le pilote effectue une opération de lecture de déchargement. Pour cette action, le bloc de paramètres suivant immédiatement la structure DEVICE_DSM_INPUT est mis en forme comme 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 suivant immédiatement la structure DEVICE_DSM_INPUT est mis en forme comme structure 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 NonDestructif. Le pilote effectue une opération d’approvisionnement de blocs logiques. La plage de blocs logiques est spécifiée dans une seule structure DEVICE_DSM_RANGE. Pris en charge dans Windows 8 et versions ultérieures.
DeviceDsmAction_Repair NonDestructif. Pour une utilisation interne uniquement.
DeviceDsmAction_Scrub NonDestructif. Pour une utilisation interne uniquement.
DeviceDsmAction_DrtQuery NonDestructif. Pour une utilisation interne uniquement.
DeviceDsmAction_DrtClear NonDestructif. Pour une utilisation interne uniquement.
DeviceDsmAction_DrtDisable NonDestructif. Pour une utilisation interne uniquement.
DeviceDsmAction_TieringQuery NonDestructif. Pour une utilisation interne uniquement.
DeviceDsmAction_Map NonDestructif. Pour une utilisation interne uniquement.
DeviceDsmAction_RegenerateParity NonDestructif. Pour une utilisation interne uniquement.
DeviceDsmAction_NvCache_Change_Priority NonDestructif. 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 DEVICE_DSM_NVCACHE_CHANGE_PRIORITY_PARAMETERS qui se trouve dans le bloc de paramètres immédiatement après 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 Windows 8.1 et versions ultérieures.
DeviceDsmAction_NvCache_Evict NonDestructif. Le pilote supprime les données du support de mise en cache. Pour supprimer toutes les données, définissez l’indicateur de DEVICE_DSM_FLAG_ENTIRE_DATA_SET_RANGE dans les indicateurs de membre 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 effectuée tant que l’action de suppression n’a pas réussi ou échoué. Pour limiter son impact sur les applications utilisant l’appareil, chaque action DeviceDsmAction_NvCache_Evict émise doit inclure des plages de données relativement petites. Ils ne doivent pas dépasser 10 Mo et idéalement être inférieurs à 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 Windows 8.1 et versions ultérieures.
DeviceDsmAction_TopologyIdQuery NonDestructif. Pour une utilisation interne uniquement.
DeviceDsmAction_GetPhysicalAddresses NonDestructif. Le pilote retourne les plages d’adresses physiques qui correspondent à une ou plusieurs plages de blocs logiques. Cette action est prise 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 du remplissage, puis d’une structure DEVICE_DSM_PHYSICAL_ADDRESSES_OUTPUT avec les plages d’adresses physiques demandées dans le bloc de sortie. Chaque plage d’adresses physiques est retournée dans une structure DEVICE_STORAGE_ADDRESS_RANGE. 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_PHYSICAL_ADDRESSES_OUTPUT contient le nombre d’éléments DEVICE_STORAGE_ADDRESS_RANGE nécessaires pour satisfaire la demande. Toutes les plages d’adresses physiques qui contiennent une erreur de mémoire ont 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 conservant 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 Flags 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 NonDestructif. Pour une utilisation interne uniquement.
DeviceDsmAction_ReportZones NonDestructif. Pour une utilisation interne uniquement.
DeviceDsmAction_OpenZone NonDestructif. Pour une utilisation interne uniquement.
DeviceDsmAction_FinishZone NonDestructif. Pour une utilisation interne uniquement.
DeviceDsmAction_CloseZone NonDestructif. Pour une utilisation interne uniquement.
DeviceDsmAction_ResetWritePointer Pour une utilisation interne uniquement.
DeviceDsmAction_GetRangeErrorInfo NonDestructif. Le pilote retourne des informations sur le fait qu’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 multimédia. S’il n’existe aucune erreur de média dans l’une des plages demandées, le pilote définit 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 afin 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 conservant le suivi de la longueur des plages de sortie.
DeviceDsmAction_WriteZeroes Pour une utilisation interne uniquement.
DeviceDsmAction_LostQuery NonDestructif. Pour une utilisation interne uniquement.
DeviceDsmAction_GetFreeSpace NonDestructif. Pour une utilisation interne uniquement.
DeviceDsmAction_ConversionQuery NonDestructif. Pour une utilisation interne uniquement.