Udostępnij za pośrednictwem


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::DoStackSnapshotpliku .

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

Zobacz też