StackSnapshotCallback-funktion
Ger profileraren information om varje hanterad ram och varje körning av ohanterade ramar i stacken under en stackvandring, som initieras av metoden ICorProfilerInfo2::D oStackSnapshot .
Syntax
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
);
Parametrar
funcId
[i] Om det här värdet är noll gäller återanropet för en körning av ohanterade bildrutor. Annars är det identifieraren för en hanterad funktion och återanropet är för en hanterad ram.
ip
[i] Värdet för den interna kodinstruktionspekaren i ramen.
frameInfo
[i] Ett COR_PRF_FRAME_INFO
värde som refererar till information om stackramen. Det här värdet är endast giltigt för användning under det här återanropet.
contextSize
[i] Strukturens CONTEXT
storlek, som refereras av parametern context
.
context
[i] En pekare till en Win32-struktur CONTEXT
som representerar cpu-tillståndet för den här ramen.
Parametern context
är endast giltig om flaggan COR_PRF_SNAPSHOT_CONTEXT skickades i ICorProfilerInfo2::DoStackSnapshot
.
clientData
[i] En pekare till klientdata, som skickas direkt från ICorProfilerInfo2::DoStackSnapshot
.
Kommentarer
Funktionen StackSnapshotCallback
implementeras av profileraren. Du måste begränsa komplexiteten i arbetet som utförs i StackSnapshotCallback
. När du till exempel använder ICorProfilerInfo2::DoStackSnapshot
på ett asynkront sätt kan måltråden innehålla lås. Om koden i StackSnapshotCallback
kräver samma lås kan ett dödläge uppstå.
Metoden ICorProfilerInfo2::DoStackSnapshot
anropar StackSnapshotCallback
funktionen en gång per hanterad ram eller en gång per körning av ohanterade bildrutor. Om StackSnapshotCallback
anropas för en körning av ohanterade ramar kan profileraren använda registerkontexten (refererad av parametern context
) för att utföra sin egen ohanterade stackvandring. I det här fallet representerar Win32-strukturen CONTEXT
CPU-tillståndet för den senast push-överförda ramen inom körningen av ohanterade ramar. Även om Win32-strukturen CONTEXT
innehåller värden för alla register bör du endast förlita dig på värdena för stackpekarregistret, rampekarregistret, instruktionspekarregistret och de icke-volatila (det vill: bevarade) heltalsregister.
Krav
Plattformar: Se Systemkrav.
Huvudet: CorProf.idl
Bibliotek: CorGuids.lib
.NET Framework versioner: Tillgänglig sedan 1.0