Partager via


StackSnapshotCallback (fonction)

Fournit au profileur des informations sur chaque frame managé et chaque exécution de frames non managés sur la pile lors d'un parcours de pile initialisé par la méthode ICorProfilerInfo2::DoStackSnapshot.

HRESULT __stdcall StackSnapshotCallback (
    [in] FunctionID funcId,
    [in] UINT_PTR ip,
    [in] COR_PRF_FRAME_INFO frameInfo,
    [in] ULONG32 contextSize,
    [in] BYTE context[],
    [in] void *clientData
);

Paramètres

  • funcId
    [in] Si cette valeur est nulle, ce rappel correspond à une exécution de frames non managés ; sinon, il s'agit de l'identificateur d'une fonction managée et ce rappel correspond à un frame managé.

  • ip
    [in] Valeur du pointeur d'instruction de code natif dans le frame.

  • frameInfo
    [in] Valeur COR_PRF_FRAME_INFO qui référence des informations sur le frame de pile. Cette valeur ne peut être utilisée que pendant ce rappel.

  • contextSize
    [in] Taille de la structure CONTEXT qui est référencée par le paramètre context.

  • context
    [in] Pointeur vers une structure CONTEXT Win32 qui représente l'état de l'UC pour ce frame.

    Le paramètre context n'est valide que si l'indicateur COR_PRF_SNAPSHOT_CONTEXT a été passé dans ICorProfilerInfo2::DoStackSnapshot.

  • clientData
    [in] Pointeur vers les données clientes qui sont directement passées à partir de ICorProfilerInfo2::DoStackSnapshot.

Notes

La fonction StackSnapshotCallback est implémentée par le writer de profileur. Vous devez limiter la complexité du travail effectué dans StackSnapshotCallback. Par exemple, lors de l'utilisation d'ICorProfilerInfo2::DoStackSnapshot de façon asynchrone, le thread cible peut contenir des verrous. Si le code figurant dans StackSnapshotCallback requiert les mêmes verrous, un interblocage risque alors de se produire.

La méthode ICorProfilerInfo2::DoStackSnapshot appelle la fonction StackSnapshotCallback une fois par frame managé ou une fois par exécution de frames non managés. Si StackSnapshotCallback est appelé pour une exécution de frames non managés, le profileur peut alors utiliser le contexte de registre (référencé par le paramètre context ) pour effectuer son propre parcours de pile non managé. Dans ce cas, la structure CONTEXT Win32 représente l'état de l'UC pour le frame le plus récent ayant fait l'objet d'un push lors de l'exécution de frames non managés. Même si la structure CONTEXT Win32 inclut des valeurs pour tous les registres, vous ne devez compter que sur les valeurs du registre de pointeur de pile, le registre de pointeur de frame, le registre de pointeur d'instruction et les registres entiers non volatils (autrement dit, préservés).

Configuration requise

Plateformes : consultez Configuration requise du .NET Framework.

En-tête : Corprof.idl

Bibliothèque : CorGuids.lib

Versions du .NET Framework : 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

Voir aussi

Référence

ICorProfilerInfo2::DoStackSnapshot, méthode

Autres ressources

Fonctions statiques globales du profilage