StackSnapshotCallback – funkce
Poskytuje profileru informace o každém spravovaném rámci a každém spuštění nespravovaných rámců v zásobníku během procházení zásobníku, který je inicializován ICorProfilerInfo2::D oStackSnapshot metoda.
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
);
Parametry
funcId
[v] Pokud je tato hodnota nula, toto zpětné volání je pro spuštění nespravovaných rámců; v opačném případě se jedná o identifikátor spravované funkce a toto zpětné volání je určené pro spravovaný rámec.
ip
[v] Hodnota ukazatele nativní instrukce kódu v rámci.
frameInfo
[v] Hodnota COR_PRF_FRAME_INFO
, která odkazuje na informace o rámci zásobníku. Tato hodnota je platná pro použití pouze během tohoto zpětného volání.
contextSize
[v] Velikost CONTEXT
struktury, na kterou odkazuje context
parametr.
context
[v] Ukazatel na strukturu Win32 CONTEXT
, která představuje stav procesoru pro tento rámec.
Parametr context
je platný pouze v případě, že byl příznak COR_PRF_SNAPSHOT_CONTEXT předán v ICorProfilerInfo2::DoStackSnapshot
souboru .
clientData
[v] Ukazatel na data klienta, který se předává přímo z ICorProfilerInfo2::DoStackSnapshot
.
Poznámky
Funkci StackSnapshotCallback
implementuje zapisovač profileru. Je nutné omezit složitost práce provedené v nástroji StackSnapshotCallback
. Například při asynchronním použití ICorProfilerInfo2::DoStackSnapshot
může cílové vlákno držet zámky. Pokud kód v rámci StackSnapshotCallback
vyžaduje stejné zámky, mohlo by dojít k vzájemnému zablokování.
Metoda ICorProfilerInfo2::DoStackSnapshot
volá StackSnapshotCallback
funkci jednou za spravovaný rámec nebo jednou za spuštění nespravovaných snímků. Pokud StackSnapshotCallback
se volá pro spuštění nespravovaných rámců, profiler může použít kontext registru (odkazovaný parametrem context
) k provedení vlastního nespravovaného procházení zásobníku. V tomto případě struktura Win32 CONTEXT
představuje stav procesoru pro naposledy vložený rámec v rámci spuštění nespravovaných rámců. Přestože struktura Win32 CONTEXT
obsahuje hodnoty pro všechny registry, měli byste spoléhat pouze na hodnoty registru ukazatele zásobníku, registru ukazatele rámce, registru ukazatele instrukce a nevolatilních (tj. zachovaných) celočíselných registrů.
Požadavky
Platformy: Viz Požadavky na systém.
Záhlaví: CorProf.idl
Knihovny: CorGuids.lib
Verze rozhraní .NET Framework: K dispozici od verze 1.0