Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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