Delen via


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::DoStackSnapshotworden doorgegeven.

Opmerkingen

De StackSnapshotCallback functie wordt geïmplementeerd door de profiler writer. U moet de complexiteit van het werk in StackSnapshotCallbackbeperken. 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

Zie ook