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