StackSnapshotCallback — Funkcja
Udostępnia profiler informacje o każdej ramce zarządzanej i każdym uruchomieniu niezarządzanych ramek na stosie podczas stosu, który jest inicjowany przez metodę ICorProfilerInfo2::D oStackSnapshot .
Składnia
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
);
Parametry
funcId
[w] Jeśli ta wartość to zero, to wywołanie zwrotne jest przeznaczone do uruchomienia ramek niezarządzanych; w przeciwnym razie jest to identyfikator funkcji zarządzanej, a to wywołanie zwrotne jest przeznaczone dla zarządzanej ramki.
ip
[w] Wartość natywnego wskaźnika instrukcji kodu w ramce.
frameInfo
[w] COR_PRF_FRAME_INFO
Wartość, która odwołuje się do informacji o ramce stosu. Ta wartość jest prawidłowa do użycia tylko podczas tego wywołania zwrotnego.
contextSize
[w] Rozmiar CONTEXT
struktury, do której odwołuje się context
parametr .
context
[w] Wskaźnik do struktury Win32 CONTEXT
, która reprezentuje stan procesora CPU dla tej ramki.
Parametr jest prawidłowy tylko wtedy, gdy flaga context
COR_PRF_SNAPSHOT_CONTEXT została przekazana w ICorProfilerInfo2::DoStackSnapshot
pliku .
clientData
[w] Wskaźnik do danych klienta, który jest przekazywany prosto z ICorProfilerInfo2::DoStackSnapshot
.
Uwagi
Funkcja jest implementowana przez moduł zapisywania StackSnapshotCallback
profilera. Należy ograniczyć złożoność pracy wykonywanej w programie StackSnapshotCallback
. Na przykład w przypadku użycia ICorProfilerInfo2::DoStackSnapshot
w sposób asynchroniczny wątek docelowy może mieć blokady. Jeśli kod wewnątrz StackSnapshotCallback
wymaga tych samych blokad, zakleszczenie może wystąpić.
Metoda ICorProfilerInfo2::DoStackSnapshot
wywołuje StackSnapshotCallback
funkcję raz na ramkę zarządzaną lub raz na przebieg niezarządzanych ramek. Jeśli StackSnapshotCallback
jest wywoływana dla przebiegu ramek niezarządzanych, profiler może użyć kontekstu rejestru (przywoływany przez context
parametr) do wykonania własnego niezarządzanego przewodnika stosu. W tym przypadku struktura Win32 CONTEXT
reprezentuje stan procesora CPU dla ostatnio wypychanej ramki w ramach uruchamiania ramek niezarządzanych. Mimo że struktura Win32 CONTEXT
zawiera wartości dla wszystkich rejestrów, należy polegać tylko na wartościach rejestru wskaźnika stosu, rejestrze wskaźników ramek, rejestrze wskaźników instrukcji i rejestrze niewolaty (czyli zachowanym) rejestrach całkowitych.
Wymagania
Platformy: Zobacz Wymagania systemowe.
Nagłówka: CorProf.idl
Biblioteki: CorGuids.lib
wersje .NET Framework: dostępne od wersji 1.0