PPHYSICAL_COUNTER_OVERFLOW_HANDLER fonction de rappel (ntddk.h)
Le PPHYSICAL_COUNTER_OVERFLOW_HANDLER est implémenté par le pilote client pour gérer les dépassements de compteur à partir des ressources de compteurs acquises via la routine HalAllocateHardwareCounters .
Syntaxe
PPHYSICAL_COUNTER_OVERFLOW_HANDLER PphysicalCounterOverflowHandler;
void PphysicalCounterOverflowHandler(
ULONGLONG OverflowBits,
HANDLE OwningHandle
)
{...}
Paramètres
OverflowBits
Fournit une bitmap décrivant les compteurs qui ont débordé.
OwningHandle
Fournit le HANDLE correspondant au jeu de ressources auquel appartiennent les compteurs de débordement.
Valeur de retour
None
Remarques
Inscrivez votre implémentation de cette fonction de rappel en appelant HalAllocateHardwareCounters avec une structure de type PHYSICAL_COUNTER_RESOURCE_LIST. Dans le PHYSICAL_COUNTER_RESOURCE_LIST, fournissez une structure de type PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR qui spécifie un PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR_TYPEde ResourceTypeOverflow.
Voici un exemple de prototype pour un gestionnaire de dépassement de capacité :
VOID
PmuAwareOverflowHandler (
_In_ ULONGLONG OverflowStatus,
_In_ HANDLE OwningHandle
)
/*++
Routine Description:
This routine is the PMU Overflow Handler for a sharing driver.
Arguments:
OverflowStatus - The counters which have overflowed.
OwningHandle - The handle owning the counters.
Return Value:
None.
--*/
{
}
Pour inscrire le gestionnaire de dépassement de capacité, utilisez le code suivant :
VOID
CreateOverflowDescriptor (
_Inout_ PPHYSICAL_COUNTER_RESOURCE_LIST CounterResourceList,
_In_ ULONG DescriptorIndex
)
{
CounterResourceList->Descriptors[DescriptorIndex].Type = ResourceTypeOverflow;
CounterResourceList->Descriptors[DescriptorIndex].u.OverflowHandler = PmuAwareOverflowHandler;
}
Ce rappel est appelé dans IRQL = PROFILE_LEVEL. Cela signifie qu’elle doit toujours être résidente en mémoire. Le rappel doit revenir aussi rapidement que possible et ne doit pas tenter d’effectuer l’une des opérations suivantes.
Acquérir ou libérer des verrous de rotation.
Accéder au pool paginé qui n’est pas verrouillé en mémoire
Appelez une routine paginable.
Le rappel n’a pas besoin de gérer l’effacement des registres de dépassement de capacité, car il sera géré par le HAL.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | ntddk.h |
IRQL | PROFILE_LEVEL |
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour