Delen via


FunctionEnter2, functie

De profiler meldt dat het besturingselement wordt doorgegeven aan een functie en geeft informatie over het stackframe en de functieargumenten. Deze functie vervangt de functie FunctionEnter .

Syntaxis

void __stdcall FunctionEnter2 (  
    [in]  FunctionID                       funcId,
    [in]  UINT_PTR                         clientData,
    [in]  COR_PRF_FRAME_INFO               func,
    [in]  COR_PRF_FUNCTION_ARGUMENT_INFO  *argumentInfo  
);  

Parameters

funcId [in] De id van de functie waaraan het besturingselement wordt doorgegeven.

clientData [in] De opnieuw toegewezen functie-id, die de profiler eerder heeft opgegeven met behulp van de functie FunctionIDMapper .

func [in] Een COR_PRF_FRAME_INFO waarde die verwijst naar informatie over het stackframe.

De profiler moet dit behandelen als een ondoorzichtige ingang die kan worden doorgestuurd naar de uitvoeringsengine in de methode ICorProfilerInfo2::GetFunctionInfo2 .

argumentInfo [in] Een verwijzing naar een COR_PRF_FUNCTION_ARGUMENT_INFO structuur die de locaties in het geheugen van de argumenten van de functie aangeeft.

Als u toegang wilt krijgen tot argumentinformatie, moet de COR_PRF_ENABLE_FUNCTION_ARGS vlag worden ingesteld. De profiler kan de methode ICorProfilerInfo::SetEventMask gebruiken om de gebeurtenisvlaggen in te stellen.

Opmerkingen

De waarden van de func parameters en argumentInfo zijn niet geldig nadat de FunctionEnter2 functie is geretourneerd omdat de waarden kunnen worden gewijzigd of vernietigd.

De FunctionEnter2 functie is een callback. U moet deze implementeren. De implementatie moet het __declspeckenmerk (naked) storage-class gebruiken.

De uitvoeringsengine slaat geen registers op voordat deze functie wordt aangeroepen.

  • Bij invoer moet u alle registers opslaan die u gebruikt, inclusief de registers in de drijvende-kommaeenheid (FPU).

  • Bij het afsluiten moet u de stack herstellen door alle parameters uit te schakelen die door de aanroeper zijn gepusht.

De implementatie van FunctionEnter2 mag niet worden geblokkeerd omdat dit de garbagecollection vertraagt. De implementatie mag geen garbagecollection uitvoeren, omdat de stack mogelijk niet geschikt is voor garbagecollection. Als een garbagecollection wordt geprobeerd, wordt de runtime geblokkeerd totdat FunctionEnter2 deze wordt geretourneerd.

FunctionEnter2 De functie mag ook geen beheerde code aanroepen en op geen enkele manier een toewijzing van beheerd geheugen veroorzaken.

Vereisten

Platforms: Zie Systeemvereisten.

Header: CorProf.idl

Bibliotheek: CorGuids.lib

.NET Framework versies: beschikbaar sinds 2.0

Zie ook