Compartir a través de


StackSnapshotCallback (Función)

Esta función puede usarse para proporcionar información al generador de perfiles sobre cada marco administrado y cada ejecución de marcos no administrados que ocurran en la pila durante un recorrido de pila, que se inicia mediante el uso del método ICorProfilerInfo2::DoStackSnapshot.

Sintaxis

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  
);  

Parámetros

funcId
[in] Si este valor es de cero, esta devolución de llamada se usará en una ejecución de marcos no administrados; de lo contrario, el valor se corresponderá al identificador de una función administrada y esta devolución de llamada se usará en un marco administrado.

ip
[in] El valor de este parámetro se corresponde con el puntero de instrucción de código nativo del marco.

frameInfo
[in] El valor de este parámetro se corresponde con el valor COR_PRF_FRAME_INFO, que hace referencia a la información sobre el marco de pila. El uso de este valor solo es válido durante este proceso de devolución de llamada.

contextSize
[in] El valor de este parámetro se corresponde con el tamaño de la estructura CONTEXT a la que se hace referencia en el parámetro context.

context
[in] El valor de este parámetro se corresponde con un puntero que apunta a una estructura CONTEXT de Win32 que representa el estado de la CPU que se corresponde con este marco.

El parámetro context solo será válido si se ha pasado la marca COR_PRF_SNAPSHOT_CONTEXT en el método ICorProfilerInfo2::DoStackSnapshot.

clientData
[in] El valor de este parámetro se corresponde con un puntero que apunta a los datos de cliente y que se pasa directamente desde el método ICorProfilerInfo2::DoStackSnapshot.

Comentarios

El escritor del generador de perfiles es el encargado de implementar la función StackSnapshotCallback. Es necesario que se limite la complejidad del trabajo que se realiza en la función StackSnapshotCallback. Por ejemplo, si el método ICorProfilerInfo2::DoStackSnapshot se usa de forma asincrónica, el subproceso de destino podría contener bloqueos. Si el código de la función StackSnapshotCallback depende de esos mismos bloqueos, podría darse un escenario de interbloqueo.

Al usar el método ICorProfilerInfo2::DoStackSnapshot, se produce una llamada a la función StackSnapshotCallback por marco administrado o por cada ejecución de marcos no administrados. Si se llama a la función StackSnapshotCallback para un proceso de ejecución de marcos no administrados, el generador de perfiles podrá realizar su propio recorrido de pila no administrado en función del contexto de registro (al que se hace referencia en el parámetro context). En este caso, la estructura CONTEXT de Win32 representa el estado de CPU que se corresponda con el marco que se haya insertado más recientemente en el proceso de ejecución de marcos no administrados. Aunque en la estructura CONTEXT de Win32 se incluyen valores que para todos los registros, solo debe confiar en los valores del registro de puntero de pila, el registro de puntero de marco, el registro de puntero de instrucción y los registros enteros no volátiles (es decir, los conservados).

Requisitos

Plataformas: Vea Requisitos de sistema.

Encabezado: CorProf.idl

Biblioteca: CorGuids.lib

Versiones de .NET Framework: está disponible desde la versión 1.0

Consulte también