Compartilhar via


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

Confira também