Método ICLRProfiling::AttachProfiler
Anexa o criador de perfil 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] A ID do processo ao qual o criador de perfil deve ser anexado. Em um computador de 64 bits, o número de bit do processo com perfil deve corresponder ao número de bit do processo de gatilho que está chamando AttachProfiler
. Se a conta de usuário sob a qual AttachProfiler
é chamada tiver privilégios administrativos, o processo de destino poderá ser qualquer processo no sistema. Caso contrário, o processo de destino deve pertencer à mesma conta de usuário.
dwMillisecondsMax
[in] A duração do tempo, em milissegundos, para AttachProfiler
ser concluída. O processo de gatilho deve passar um tempo limite que é conhecido por ser suficiente para que o criador de perfil específico conclua sua inicialização.
pClsidProfiler
[in] Um ponteiro para o CLSID do criador de perfil a ser carregado. O processo de gatilho pode reutilizar essa memória após AttachProfiler
retornar.
wszProfilerPath
[in] O caminho completo para o arquivo DLL do criador de perfil a ser carregado. Essa cadeia de caracteres não deve conter mais de 260 caracteres, incluindo o terminador nulo. Se wszProfilerPath
for nulo ou uma cadeia de caracteres vazia, o CLR (Common Language Runtime) tentará localizar o local do arquivo DLL do criador de perfil procurando no Registro do CLSID para o qual o pClsidProfiler
aponta.
pvClientData
[in] Um ponteiro para os dados a serem passados para o criador de perfil pelo método ICorProfilerCallback3::InitializeForAttach. O processo de gatilho pode reutilizar essa memória após AttachProfiler
retornar. Se pvClientData
for nulo, cbClientData
deverá ser 0 (zero).
cbClientData
[in] O tamanho, em bytes, dos dados para os quais pvClientData
aponta.
Valor Retornado
Esse método retorna os HRESULTs a seguir.
HRESULT | Descrição |
---|---|
S_OK | O criador de perfil especificado foi anexado com êxito ao processo de destino. |
CORPROF_E_PROFILER_ALREADY_ACTIVE | Já há um criador de perfil ativo ou anexado ao processo de destino. |
CORPROF_E_PROFILER_NOT_ATTACHABLE | O criador de perfil especificado não dá suporte ao anexo. O processo de gatilho pode tentar anexar um criador de perfil diferente. |
CORPROF_E_PROFILEE_INCOMPATIBLE_WITH_TRIGGER | Não é possível solicitar um anexo do criador de perfil, pois a versão do processo de destino é incompatível com o processo atual que está chamando AttachProfiler . |
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED) | O usuário do processo de gatilho não tem acesso ao processo de destino. |
HRESULT_FROM_WIN32(ERROR_PRIVILEGE_NOT_HELD) | O usuário do processo de gatilho não tem os privilégios necessários para anexar um criador de perfil ao processo de destino especificado. O log de eventos do aplicativo pode conter mais informações. |
CORPROF_E_IPC_FAILED | Ocorreu uma falha ao se comunicar com o processo de destino. Isso geralmente acontece se o processo de destino estava sendo desligado. |
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) | O processo de destino não existe ou não está executando um CLR que dá suporte ao anexo. Isso pode indicar que o CLR foi descarregado desde a chamada para o método de enumeração de runtime. |
HRESULT_FROM_WIN32(ERROR_TIMEOUT) | O tempo limite expirou sem começar a carregar o criador de perfil. Você pode tentar anexar a operação novamente. Os tempos limite ocorrem quando um finalizador no processo de destino é executado por um tempo maior do que o valor do tempo limite. |
E_INVALIDARG | Um ou mais parâmetros possuem um valor inválido. |
E_FAIL | Alguma outra falha não especificada ocorreu. |
Outros códigos de erro | Se o método ICorProfilerCallback3::InitializeForAttach do criador de perfil retornar um HRESULT que indica falha, AttachProfiler retornará o mesmo HRESULT. Nesse caso, E_NOTIMPL é convertido em CORPROF_E_PROFILER_NOT_ATTACHABLE. |
Comentários
Gerenciamento de memória
De acordo com as convenções COM, o chamador ( AttachProfiler
por exemplo, o código de gatilho criado pelo desenvolvedor do criador de perfil) é responsável por alocar e desaloque a memória para os dados para os quais o parâmetro pvClientData
aponta. Quando o CLR executa a chamada AttachProfiler
, ela faz uma cópia da memória para a qual pvClientData
aponta e a transmite para o processo de destino. Quando o CLR dentro do processo de destino recebe sua própria cópia do bloco pvClientData
, ele passa o bloco para o criador de perfil por meio do método InitializeForAttach
e desaloca sua cópia do bloco pvClientData
do processo de destino.
Requisitos
Plataformas: confira Requisitos do sistema.
Cabeçalho: CorProf.idl, CorProf.h
Biblioteca: CorGuids.lib
Versões do .NET Framework: disponíveis desde 4