Partilhar via


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

Ver também