Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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