Dela via


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

Se även