Partilhar via


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

Ver também