Compartilhar via


GetThreadCallStack

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Essa função obtém a pilha de chamadas de um segmento no sistema.

Syntax

ULONG GetThreadCallStack(
  HANDLE hThrd,
  ULONG dwMaxFrames,
  LPVOID lpFrames[],
  DWORD dwFlags,
  DWORD dwSkip
);

Parameters

  • hThrd
    [no] Identificador para o segmento.
  • dwMaxFrames
    [no] Número máximo de quadros.
  • dwFlags
    [no] Sinalizador de bit indicar qual operação é para ser realizado.

    A seguinte tabela mostra os valores possíveis. Esses valores podem ser usados juntos em qualquer combinação.

    Valor Descrição

    STACKSNAP_EXTENDED_INFO

    Permite que a função para retornar informações adicionais pilha, such as o ponteiro quadro, atual processo e função parâmetros.

    Consulte a seção " Comentários " para obter mais informações sobre esse sinalizador.

    STACKSNAP_FAIL_IF_INCOMPLETE

    Indica que a função falhará se dwMaxFrames é menor do que o número de quadros.

    STACKSNAP_INPROC_ONLY

    Faz com que a função para retornar somente os quadros pilha que estão dentro processo proprietário de segmento. Ela não inclui quadros pilha que estão fora processo proprietário de segmento.

    STACKSNAP_NEW_VM

    Permite que a função para retornar chamar adicional-informações pilha, such as o ponteiro quadro, o atual processo, o atual processo cujo VM está ativo e função parâmetros.

    STACKSNAP_RETURN_FRAMES_ON_ERROR

    Retorna o número de quadros encontrados, mesmo se ocorrer um erro. A função SetLastError está definida.

    Se este sinalizador estiver ativado, o último erro é sempre definido, mesmo quando não há nenhum erro.

  • dwSkip
    [no] Número de quadros a ser ignorada.

Return Value

O número de quadros copiados lpFrames matriz indica sucesso. Zero indica falha. Chamada GetLastError para informações de erro estendidas get.

Remarks

Manter o seguinte pontos em mente ao usar GetThreadCallStack:

  • A prioridade do segmento chamador desta função pode estar temporariamente melhorar para uma prioridade maior do que a prioridade de hThrd. Isso impede que hThrd de execução ao olhando em seu contexto. Chamar esta função pode ter um impacto no comportamento em tempo real do hThrd.

  • O número de quadros é dinâmico. No entanto, usando dwSkip, você pode usar o seguinte executar um loop para recuperar as pilhas chamar completo de um segmento:

    CallSnapshot lpFrames[MAX_FRAMES];
    DWORD dwCnt, dwSkip = 0;
    do
    {
       dwCnt = GetThreadCallStack (hThread, MAX_FRAMES, lpFrames, 0, dwSkip);
       if (dwCnt)
       {
          // Process the frames retrieved so far
          MyProcessFrames (dwCnt, lpFrames);
          dwSkip += dwCnt;
       }
    }
    while (MAX_FRAMES == dwCnt);
    
  • **Um aplicativo não confiável pode obter a pilha de chamadas de apenas segmentos em seu próprio processo.

  • **

    Manter o seguinte pontos em mente ao passar os sinalizadores STACKSNAP_EXTENDED_INFO ou STACKSNAP_NEW_VM:

    • Se passar STACKSNAP_EXTENDED_INFO, Windows Embedded CE trata o lpFrames passado como uma estrutura CallSnapshotEx e passagens voltar estendido informações para cada quadro, incluindo o ponteiro quadro, atual processo, quatro parâmetros e endereço de retorno.
    • Se passar STACKSNAP_NEW_VM, Windows Embedded CE trata o lpFrames passado como uma estrutura CallSnapshot3 e passagens voltar estendido informações para cada quadro, incluindo o ponteiro quadro, atual processo, quatro parâmetros, endereço de retorno e o processo cujo VM está ativo.
    • Se nenhum sinalizador for passado, Windows Embedded CE trata lpFrames Como uma estrutura CallSnapshot e passagens voltar somente os endereços de retorno.

Requirements

Header pkfuncs.h
Library coredll.lib
Windows Embedded CE Windows CE 5.0 and later

See Also

Reference

Kernel Functions
CallSnapshot
CallSnapshotEx

Other Resources

SetLastError