Sdílet prostřednictvím


ICLRProfiling::AttachProfiler – metoda

Připojí zadaný profiler k zadanému procesu.

Syntaxe

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
[v] ID procesu, ke kterému má být profiler připojen. Na 64bitovém počítači musí bitová verze profilovaného procesu odpovídat bitové verzi aktivačního procesu, který volá AttachProfiler. Pokud má uživatelský účet, pod kterým AttachProfiler je volána, oprávnění správce, může být cílový proces libovolný proces v systému. V opačném případě musí být cílový proces vlastněný stejným uživatelským účtem.

dwMillisecondsMax
[v] Doba trvání dokončení v milisekundách AttachProfiler . Proces triggeru by měl projít časový limit, o který se ví, že je dostatečný pro dokončení inicializace konkrétního profileru.

pClsidProfiler
[v] Ukazatel na IDENTIFIKÁTOR CLSID profileru, který se má načíst. Proces triggeru může tuto paměť po AttachProfiler vrácení znovu použít.

wszProfilerPath
[v] Úplná cesta k souboru DLL profileru, který má být načten. Tento řetězec by neměl obsahovat více než 260 znaků, včetně ukončovacího znaku null. Pokud wszProfilerPath má hodnotu null nebo prázdný řetězec, modul CLR (Common Language Runtime) se pokusí najít umístění souboru DLL profileru vyhledáním identifikátoru CLSID, který pClsidProfiler odkazuje na, v registru.

pvClientData
[v] Ukazatel na data, která mají být předán profiler ICorProfilerCallback3::InitializeForAttach metoda. Proces triggeru může tuto paměť po AttachProfiler vrácení znovu použít. Pokud pvClientData je hodnota null, cbClientData musí být 0 (nula).

cbClientData
[v] Velikost dat v bajtech, na která pvClientData odkazuje.

Návratová hodnota

Tato metoda vrátí následující hodnoty HRESULT.

HRESULT Description
S_OK Zadaný profiler se úspěšně připojil k cílovému procesu.
CORPROF_E_PROFILER_ALREADY_ACTIVE Profiler už je aktivní nebo se připojuje k cílovému procesu.
CORPROF_E_PROFILER_NOT_ATTACHABLE Zadaný profiler nepodporuje přílohu. Proces triggeru se může pokusit připojit jiný profiler.
CORPROF_E_PROFILEE_INCOMPATIBLE_WITH_TRIGGER Nelze požádat o přílohu profileru, protože verze cílového procesu není kompatibilní s aktuálním procesem, který volá AttachProfiler.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED) Uživatel procesu triggeru nemá přístup k cílovému procesu.
HRESULT_FROM_WIN32(ERROR_PRIVILEGE_NOT_HELD) Uživatel procesu triggeru nemá oprávnění potřebná k připojení profileru k danému cílovému procesu. Protokol událostí aplikace může obsahovat další informace.
CORPROF_E_IPC_FAILED Při komunikaci s cílovým procesem došlo k chybě. K tomu obvykle dochází v případě, že se cílový proces vypíná.
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) Cílový proces neexistuje nebo neběží clr, který podporuje přílohu. To může znamenat, že clr byl uvolněn od volání metody výčtu modulu runtime.
HRESULT_FROM_WIN32(ERROR_TIMEOUT) Časový limit vypršel, aniž by se začal načítat profiler. Můžete zkusit operaci připojení zopakovat. K vypršení časových limitů dochází, když finalizační proces v cílovém procesu běží delší dobu, než je hodnota časového limitu.
E_INVALIDARG Nejméně jeden parametr má neplatné hodnoty.
E_FAIL Došlo k nějaké jiné nespecifikované chybě.
Jiné kódy chyb Pokud profiler ICorProfilerCallback3::InitializeForAttach metoda vrátí HRESULT, která označuje selhání, AttachProfiler vrátí stejnou HRESULT. V tomto případě se E_NOTIMPL převede na CORPROF_E_PROFILER_NOT_ATTACHABLE.

Poznámky

Správa paměti

V souladu s konvence modelu COM je volající AttachProfiler (například aktivační kód vytvořený vývojářem profileru) zodpovědný za přidělení a zrušení přidělení paměti pro data, na která pvClientData parametr odkazuje. Když CLR provede AttachProfiler volání, vytvoří kopii paměti, která pvClientData odkazuje na, a přenese ji do cílového procesu. Když CLR v cílovém procesu obdrží vlastní kopii pvClientData bloku, předá tento blok profileru prostřednictvím InitializeForAttach metody a poté uvolní jeho kopii pvClientData bloku z cílového procesu.

Požadavky

Platformy: Viz Požadavky na systém.

Záhlaví: CorProf.idl, CorProf.h

Knihovny: CorGuids.lib

Verze rozhraní .NET Framework: K dispozici od 4

Viz také