GetThreadCallStack
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.
- lpFrames
[no] Matriz de CallSnapshot ou CallSnapshotEx estruturas para receber os quadros pilha.
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