ICLRProfiling::AttachProfiler Method
Anexa o profiler especificado ao processo especificado.
Sintaxe
HRESULT AttachProfiler(
[in] DWORD dwProfileeProcessID,
[in] DWORD dwMillisecondsMax, // optional
[in] const CLSID * pClsidProfiler,
[in] LPCWSTR wszProfilerPath, // optional
[in] size_is(cbClientData)] void * pvClientData, // optional
[in] UINT cbClientData); // optional
Parâmetros
dwProfileeProcessID
[in] O ID do processo ao qual o profiler deve ser anexado. Num computador de 64 bits, a bits do processo com perfil tem de corresponder à bits do processo de acionador que está a chamar AttachProfiler
. Se a conta de utilizador na qual AttachProfiler
é chamada tiver privilégios administrativos, o processo de destino poderá ser qualquer processo no sistema. Caso contrário, o processo de destino tem de ser propriedade da mesma conta de utilizador.
dwMillisecondsMax
[in] A duração do tempo, em milissegundos, para AttachProfiler
concluir. O processo de acionador deve passar um tempo limite que se sabe ser suficiente para que o profiler específico conclua a inicialização.
pClsidProfiler
[in] Um ponteiro para o CLSID do gerador de perfis a carregar. O processo de acionador pode reutilizar esta memória após AttachProfiler
a devolução.
wszProfilerPath
[in] O caminho completo para o ficheiro DLL do gerador de perfis a carregar. Esta cadeia não deve conter mais de 260 carateres, incluindo o terminador nulo. Se wszProfilerPath
for nulo ou uma cadeia vazia, o runtime de idioma comum (CLR) tentará encontrar a localização do ficheiro DLL do gerador de perfis ao procurar no registo o CLSID que pClsidProfiler
aponta para.
pvClientData
[in] Um ponteiro para os dados a transmitir ao gerador de perfis pelo método ICorProfilerCallback3::InitializeForAttach . O processo de acionador pode reutilizar esta memória após AttachProfiler
a devolução. Se pvClientData
for nulo, cbClientData
tem de ser 0 (zero).
cbClientData
[in] O tamanho, em bytes, dos dados que pvClientData
apontam para.
Devolver Valor
Este método devolve os seguintes HRESULTs.
HRESULT | Description |
---|---|
S_OK | O profiler especificado foi anexado com êxito ao processo de destino. |
CORPROF_E_PROFILER_ALREADY_ACTIVE | Já existe um gerador de perfis ativo ou anexado ao processo de destino. |
CORPROF_E_PROFILER_NOT_ATTACHABLE | O profiler especificado não suporta anexos. O processo de acionador pode tentar anexar um gerador de perfis diferente. |
CORPROF_E_PROFILEE_INCOMPATIBLE_WITH_TRIGGER | Não é possível pedir um anexo do gerador de perfis, uma vez que a versão do processo de destino é incompatível com o processo atual que está a chamar AttachProfiler . |
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED) | O utilizador do processo de acionador não tem acesso ao processo de destino. |
HRESULT_FROM_WIN32(ERROR_PRIVILEGE_NOT_HELD) | O utilizador do processo de acionador não tem os privilégios necessários para anexar um gerador de perfis ao processo de destino especificado. O registo de eventos da aplicação pode conter mais informações. |
CORPROF_E_IPC_FAILED | Ocorreu uma falha ao comunicar com o processo de destino. Normalmente, isto acontece se o processo de destino estiver a ser encerrado. |
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) | O processo de destino não existe ou não está a executar um CLR que suporte anexos. Isto pode indicar que o CLR foi descarregado desde a chamada para o método de enumeração do runtime. |
HRESULT_FROM_WIN32(ERROR_TIMEOUT) | O tempo limite expirou sem começar a carregar o gerador de perfis. Pode repetir a operação de anexação. Os tempos limite ocorrem quando um finalizador no processo de destino é executado durante mais tempo do que o valor de tempo limite. |
E_INVALIDARG | Um ou mais parâmetros têm valores inválidos. |
E_FAIL | Ocorreu outra falha não especificada. |
Outros códigos de erro | Se o método ICorProfilerCallback3::InitializeForAttach do profiler devolver um HRESULT que indica falhas, AttachProfiler devolve esse mesmo HRESULT. Neste caso, E_NOTIMPL é convertida em CORPROF_E_PROFILER_NOT_ATTACHABLE. |
Observações
Gestão de Memória
De acordo com as convenções COM, o autor da chamada ( AttachProfiler
por exemplo, o código do acionador criado pelo programador de perfis) é responsável por alocar e desalocar a memória dos dados aos quais o pvClientData
parâmetro aponta. Quando o CLR executa a AttachProfiler
chamada, faz uma cópia da memória que pvClientData
aponta e transmite-a para o processo de destino. Quando o CLR dentro do processo de destino recebe a pvClientData
sua própria cópia do bloco, passa o bloco para o gerador de perfis através do InitializeForAttach
método e, em seguida, desaloca a pvClientData
cópia do bloco do processo de destino.
Requisitos
Plataformas: Veja Requisitos do Sistema.
Cabeçalho: CorProf.idl, CorProf.h
Biblioteca: CorGuids.lib
.NET Framework Versões: Disponível desde 4