StackSnapshotCallback, functie
Biedt de profiler informatie over elk beheerd frame en elke uitvoering van niet-beheerde frames op de stack tijdens een stack-walk, die wordt gestart door de methode ICorProfilerInfo2::D oStackSnapshot .
Syntaxis
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
);
Parameters
funcId
[in] Als deze waarde nul is, is deze callback bedoeld voor een uitvoering van niet-beheerde frames; anders is het de id van een beheerde functie en is deze callback voor een beheerd frame.
ip
[in] De waarde van de systeemeigen code-instructiepointer in het frame.
frameInfo
[in] Een COR_PRF_FRAME_INFO
waarde die verwijst naar informatie over het stackframe. Deze waarde is alleen geldig voor gebruik tijdens deze callback.
contextSize
[in] De grootte van de CONTEXT
structuur, waarnaar wordt verwezen door de context
parameter .
context
[in] Een verwijzing naar een Win32-structuur CONTEXT
die de status van de CPU voor dit frame aangeeft.
De context
parameter is alleen geldig als de vlag COR_PRF_SNAPSHOT_CONTEXT is doorgegeven in ICorProfilerInfo2::DoStackSnapshot
.
clientData
[in] Een aanwijzer naar de clientgegevens, die rechtstreeks vanuit ICorProfilerInfo2::DoStackSnapshot
worden doorgegeven.
Opmerkingen
De StackSnapshotCallback
functie wordt geïmplementeerd door de profiler writer. U moet de complexiteit van het werk in StackSnapshotCallback
beperken. Wanneer u bijvoorbeeld op een asynchrone manier gebruikt ICorProfilerInfo2::DoStackSnapshot
, kan de doelthread vergrendelingen bevatten. Als code binnen StackSnapshotCallback
dezelfde vergrendelingen vereist, kan er een impasse ontstaan.
De ICorProfilerInfo2::DoStackSnapshot
methode roept de StackSnapshotCallback
functie eenmaal aan per beheerd frame of eenmaal per uitvoering van onbeheerde frames. Als StackSnapshotCallback
wordt aangeroepen voor een uitvoering van onbeheerde frames, kan de profiler de registercontext (waarnaar wordt verwezen door de context
parameter) gebruiken om een eigen onbeheerde stack-walk uit te voeren. In dit geval vertegenwoordigt de Win32-structuur CONTEXT
de CPU-status voor het meest recent gepushte frame binnen de uitvoering van onbeheerde frames. Hoewel de Win32-structuur CONTEXT
waarden voor alle registers bevat, moet u alleen vertrouwen op de waarden van het stackpointerregister, het framepointerregister, het instructiepointerregister en de niet-volatile (dat wil gezegd, behouden) gehele registers.
Vereisten
Platforms: Zie Systeemvereisten.
Header: CorProf.idl
Bibliotheek: CorGuids.lib
.NET Framework versies: beschikbaar sinds 1.0