Udostępnij za pośrednictwem


ICLRProfiling::AttachProfiler — Metoda

Dołącza określony profiler do określonego procesu.

Składnia

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  

Parametry

dwProfileeProcessID
[in] Identyfikator procesu, do którego należy dołączyć profiler. Na maszynie 64-bitowej bitowość profilowanego procesu musi być zgodna z bitowością procesu wyzwalacza, który wywołuje metodę AttachProfiler. Jeśli konto użytkownika, w ramach którego AttachProfiler jest wywoływane, ma uprawnienia administracyjne, proces docelowy może być dowolnym procesem w systemie. W przeciwnym razie proces docelowy musi być własnością tego samego konta użytkownika.

dwMillisecondsMax
[in] Czas trwania (w milisekundach) do AttachProfiler ukończenia. Proces wyzwalacza powinien przekazać limit czasu, który jest znany jako wystarczający dla określonego profilera w celu ukończenia jego inicjowania.

pClsidProfiler
[in] Wskaźnik do identyfikatora CLSID profilera do załadowania. Proces wyzwalacza może ponownie używać tej pamięci po AttachProfiler powrocie.

wszProfilerPath
[in] Pełna ścieżka do pliku DLL profilera do załadowania. Ten ciąg powinien zawierać nie więcej niż 260 znaków, w tym terminator o wartości null. Jeśli wszProfilerPath parametr ma wartość null lub pusty ciąg, środowisko uruchomieniowe języka wspólnego (CLR) spróbuje znaleźć lokalizację pliku DLL profilera, wyszukując w rejestrze identyfikator CLSID wskazujący pClsidProfiler .

pvClientData
[in] Wskaźnik do danych, które mają zostać przekazane do profilera przez metodę ICorProfilerCallback3::InitializeForAttach . Proces wyzwalacza może ponownie używać tej pamięci po AttachProfiler powrocie. Jeśli pvClientData parametr ma wartość null, cbClientData musi mieć wartość 0 (zero).

cbClientData
[in] Rozmiar w bajtach danych, które pvClientData wskazuje.

Wartość zwracana

Ta metoda zwraca następujące wartości HRESULTs.

HRESULT Opis
S_OK Określony profiler został pomyślnie dołączony do procesu docelowego.
CORPROF_E_PROFILER_ALREADY_ACTIVE Profiler jest już aktywny lub dołączany do procesu docelowego.
CORPROF_E_PROFILER_NOT_ATTACHABLE Określony profiler nie obsługuje załącznika. Proces wyzwalacza może podjąć próbę dołączenia innego profilera.
CORPROF_E_PROFILEE_INCOMPATIBLE_WITH_TRIGGER Nie można zażądać załącznika profilera, ponieważ wersja procesu docelowego jest niezgodna z bieżącym procesem wywołującym metodę AttachProfiler.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED) Użytkownik procesu wyzwalacza nie ma dostępu do procesu docelowego.
HRESULT_FROM_WIN32(ERROR_PRIVILEGE_NOT_HELD) Użytkownik procesu wyzwalacza nie ma uprawnień niezbędnych do dołączenia profilera do danego procesu docelowego. Dziennik zdarzeń aplikacji może zawierać więcej informacji.
CORPROF_E_IPC_FAILED Wystąpił błąd podczas komunikowania się z procesem docelowym. Dzieje się tak często, jeśli proces docelowy został zamknięty.
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) Proces docelowy nie istnieje lub nie uruchamia środowiska CLR obsługującego załącznik. Może to wskazywać, że clR został zwolniony od wywołania metody wyliczania środowiska uruchomieniowego.
HRESULT_FROM_WIN32(ERROR_TIMEOUT) Upłynął limit czasu bez rozpoczynania ładowania profilera. Możesz ponowić próbę wykonania operacji dołączania. Przekroczenia limitu czasu występują, gdy finalizator w procesie docelowym jest uruchamiany przez dłuższy czas niż wartość limitu czasu.
E_INVALIDARG Co najmniej jeden parametr ma nieprawidłowe wartości.
E_FAIL Wystąpił inny nieokreślony błąd.
Inne kody błędów Jeśli metoda ICorProfilerCallback3::InitializeForAttach profilera zwraca wartość HRESULT wskazującą błąd, AttachProfiler zwraca tę samą wartość HRESULT. W takim przypadku E_NOTIMPL jest konwertowana na CORPROF_E_PROFILER_NOT_ATTACHABLE.

Uwagi

Zarządzanie pamięcią

Zgodnie z konwencjami COM obiekt wywołujący AttachProfiler (na przykład kod wyzwalacza utworzony przez dewelopera profilera) jest odpowiedzialny za przydzielanie i delokowanie pamięci dla danych, do których pvClientData wskazuje parametr. Gdy clR wykonuje AttachProfiler wywołanie, wykonuje kopię pamięci, która pvClientData wskazuje i przekazuje ją do procesu docelowego. Gdy clR wewnątrz procesu docelowego odbiera własną kopię pvClientData bloku, przekazuje blok do profilera za pomocą InitializeForAttach metody , a następnie cofa jego kopię pvClientData bloku z procesu docelowego.

Wymagania

Platformy: Zobacz Wymagania systemowe.

Nagłówka: CorProf.idl, CorProf.h

Biblioteki: CorGuids.lib

wersje .NET Framework: dostępne od 4

Zobacz też