Partager via


StackSnapshotCallback (fonction)

Fournit au profileur des informations sur chaque cadre managé et chaque exécution de cadres non managés sur la pile pendant une procédure de pile, qui est lancée par la méthode ICorProfilerInfo2::DoStackSnapshot.

Syntaxe

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 égale à zéro, ce rappel est destiné à une exécution de cadres non managés ; sinon, il s’agit de l’identificateur d’une fonction managée et de ce rappel est destiné à un cadre managé.

ip
[in] Valeur du pointeur d’instruction de code natif dans le cadre.

frameInfo
[in] Valeur COR_PRF_FRAME_INFO qui fait référence aux informations sur le frame de pile. Cette valeur est valide uniquement pendant ce rappel.

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

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

Le paramètre context est valide uniquement si l’indicateur de COR_PRF_SNAPSHOT_CONTEXT a été passé dans ICorProfilerInfo2::DoStackSnapshot.

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

Notes

La fonction StackSnapshotCallback est implémentée par l’enregistreur du profileur. Vous devez limiter la complexité du travail effectué dans StackSnapshotCallback. Par exemple, lors de l’utilisation de ICorProfilerInfo2::DoStackSnapshot de manière asynchrone, le thread cible peut contenir des verrous. Si le code dans StackSnapshotCallback nécessite les mêmes verrous, un interblocage peut survenir.

La méthode ICorProfilerInfo2::DoStackSnapshot appelle la fonction StackSnapshotCallback une fois par cadre managé ou une fois par exécution de cadres non managés. Si StackSnapshotCallback est appelé pour une exécution de cadres non managés, le profileur peut utiliser le contexte de registre (référencé par le paramètre context) pour effectuer son propre parcours de pile non managée. Dans ce cas, la structure Win32 CONTEXT représente l’état de l’UC pour le dernier cadre envoyé dans l’exécution de cadres non managés. Bien que la structure Win32 CONTEXT inclut des valeurs pour tous les registres, vous devez vous appuyer uniquement sur les valeurs du registre du pointeur de pile, le registre du pointeur de cadre, le registre du pointeur d’instruction et les registres entiers non volatiles (autrement dit, conservés).

Spécifications

Plateformes : Consultez Configuration requise.

Header: CorProf.idl

Bibliothèque : CorGuids.lib

Versions de .NET Framework : Disponible à partir de la version 1.0

Voir aussi