Função StackSnapshotCallback
Fornece ao gerador de perfis informações sobre cada frame gerido e cada execução de fotogramas não geridos na pilha durante uma caminhada de pilha, que é iniciada pelo método ICorProfilerInfo2::D oStackSnapshot .
Sintaxe
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 este valor for zero, esta chamada de retorno destina-se a uma execução de frames não geridos; caso contrário, é o identificador de uma função gerida e esta chamada de retorno destina-se a uma moldura gerida.
ip
[in] O valor do ponteiro de instrução de código nativo na moldura.
frameInfo
[in] Um COR_PRF_FRAME_INFO
valor que referencia informações sobre a moldura da pilha. Este valor é válido para utilização apenas durante esta chamada de retorno.
contextSize
[in] O tamanho da CONTEXT
estrutura, que é referenciada pelo context
parâmetro.
context
[in] Um ponteiro para uma estrutura Win32 CONTEXT
que representa o estado da CPU para esta moldura.
O context
parâmetro só é válido se o sinalizador de COR_PRF_SNAPSHOT_CONTEXT tiver sido transmitido em ICorProfilerInfo2::DoStackSnapshot
.
clientData
[in] Um ponteiro para os dados do cliente, que é transmitido diretamente a partir de ICorProfilerInfo2::DoStackSnapshot
.
Observações
A StackSnapshotCallback
função é implementada pelo escritor do profiler. Tem de limitar a complexidade do trabalho realizado no StackSnapshotCallback
. Por exemplo, ao utilizar ICorProfilerInfo2::DoStackSnapshot
de forma assíncrona, o thread de destino pode estar a bloquear. Se o código no requerer StackSnapshotCallback
os mesmos bloqueios, poderá ocorrer um impasse.
O ICorProfilerInfo2::DoStackSnapshot
método chama a StackSnapshotCallback
função uma vez por frame gerido ou uma vez por execução de frames não geridos. Se StackSnapshotCallback
for chamado para uma execução de frames não geridos, o gerador de perfis poderá utilizar o contexto de registo (referenciado pelo context
parâmetro) para realizar a sua própria caminhada de pilha não gerida. Neste caso, a estrutura Win32 CONTEXT
representa o estado da CPU para o frame emitido mais recentemente na execução de frames não geridos. Embora a estrutura win32 CONTEXT
inclua valores para todos os registos, deve depender apenas dos valores do registo do ponteiro da pilha, do registo do ponteiro da moldura, do registo do ponteiro de instruções e dos registos de números inteiros não complicados (ou seja, preservados).
Requisitos
Plataformas: Veja Requisitos do Sistema.
Cabeçalho: CorProf.idl
Biblioteca: CorGuids.lib
.NET Framework Versões: Disponível desde 1.0