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