Partilhar via


Função StackSnapshotCallback

Fornece informações sobre cada quadro gerenciado e cada execução de quadros não gerenciados na pilha durante uma movimentação de pilha é iniciada pelo profiler a ICorProfilerInfo2::DoStackSnapshot método.

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] Se esse valor for zero, esse retorno de chamada é para uma execução de quadros não gerenciados; Caso contrário, ele é o identificador de uma função gerenciada e esse retorno de chamada para um quadro gerenciado.

  • ip
    [in] O valor do ponteiro de instrução do código nativo no quadro.

  • frameInfo
    [in] A COR_PRF_FRAME_INFO valor que faça referência a informações sobre o quadro de pilha. Esse valor é válido para uso somente durante esse retorno de chamada.

  • contextSize
    [in] O tamanho da CONTEXT estrutura, que é referenciada pela context parâmetro.

  • context
    [in] Um ponteiro para um Win32 CONTEXT estrutura que representa o estado da CPU para esse quadro.

    O context parâmetro é válido somente se o sinalizador COR_PRF_SNAPSHOT_CONTEXT foi transmitido em ICorProfilerInfo2::DoStackSnapshot.

  • clientData
    [in] Um ponteiro para os dados do cliente, que são passados diretamente por meio de ICorProfilerInfo2::DoStackSnapshot.

Comentários

O StackSnapshotCallback função é implementada pelo gravador profiler. Você deve limitar a complexidade do trabalho feito na StackSnapshotCallback. Por exemplo, ao usar ICorProfilerInfo2::DoStackSnapshot de maneira assíncrona, o thread-alvo possa estar mantendo bloqueios. Se o código dentro de StackSnapshotCallback requer os mesmos bloqueios, um deadlock isso poderia causar.

O ICorProfilerInfo2::DoStackSnapshot chamadas de método de StackSnapshotCallback função uma vez por quadro gerenciado ou de uma vez por execução de quadros não gerenciados. Se StackSnapshotCallback é chamado para uma execução de quadros não gerenciados, o profiler pode usar o contexto de registro (referenciado pelo context parâmetro) para realizar sua própria movimentação de pilha não gerenciada. Neste caso, o Win32 CONTEXT estrutura representa o estado de CPU para o quadro foi enviado por recentemente dentro da execução de quadros não gerenciados. Embora o Win32 CONTEXT estrutura inclui valores para todos os registradores, você deve confiar somente nos valores do registro do ponteiro de pilha, o registro de ponteiro do quadro, registro de ponteiro de instrução e não-volátil (isto é, preservado) inteiro registradores.

Requisitos

Plataformas: Consulte Requisitos de sistema do .NET Framework.

Cabeçalho: Corprof. idl

Biblioteca: CorGuids.lib

.NET Framework versões: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

Consulte também

Referência

Método de ICorProfilerInfo2::DoStackSnapshot

Outros recursos

A criação de perfil globais funções estáticas