Megosztás a következőn keresztül:


ICLRProfiling::AttachProfiler metódus

A megadott profilozót a megadott folyamathoz csatolja.

Szintaxis

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  

Paraméterek

dwProfileeProcessID
[in] Annak a folyamatnak a folyamatazonosítója, amelyhez a profilkészítőt csatolni kell. Egy 64 bites gépen a profilozott folyamat bitképességének meg kell egyeznie a meghívandó AttachProfilereseményindító folyamat bitképességével. Ha az a felhasználói fiók, amelynek AttachProfiler a neve rendszergazdai jogosultságokkal rendelkezik, a célfolyamat a rendszer bármely folyamata lehet. Ellenkező esetben a célfolyamatnak ugyanannak a felhasználói fióknak kell lennie.

dwMillisecondsMax
[in] A befejezés időtartama ezredmásodpercben AttachProfiler . Az eseményindító folyamatnak olyan időtúllépést kell átadnia, amelyről ismert, hogy elegendő az adott profilkészítő számára az inicializálás befejezéséhez.

pClsidProfiler
[in] Mutató a betöltendő profiler CLSID azonosítójára. Az eseményindító folyamat a visszatérés után AttachProfiler újra felhasználhatja ezt a memóriát.

wszProfilerPath
[in] A profilkészítő betöltendő DLL-fájljának teljes elérési útja. Ez a sztring legfeljebb 260 karakterből állhat, beleértve a null terminátort is. Ha wszProfilerPath null értékű vagy üres sztring, a közös nyelvi futtatókörnyezet (CLR) megpróbálja megkeresni a profilozó DLL-fájljának helyét a clSID pClsidProfiler beállításjegyzékében.

pvClientData
[in] Az ICorProfilerCallback3::InitializeForAttach metódus által a profilozónak átadott adatokra mutató mutató. Az eseményindító folyamat a visszatérés után AttachProfiler újra felhasználhatja ezt a memóriát. Ha pvClientData null, cbClientData akkor 0 -nak (nulla) kell lennie.

cbClientData
[in] Az adatok mérete bájtban kifejezve pvClientData .

Visszatérési érték

Ez a metódus a következő HRESULT-t adja vissza.

HRESULT Description
S_OK A megadott profilkészítő sikeresen kapcsolódott a célfolyamathoz.
CORPROF_E_PROFILER_ALREADY_ACTIVE Már van aktív profilozó, vagy kapcsolódik a célfolyamathoz.
CORPROF_E_PROFILER_NOT_ATTACHABLE A megadott profilkészítő nem támogatja a mellékletet. Az eseményindító folyamat megpróbálhat másik profilkészítőt csatolni.
CORPROF_E_PROFILEE_INCOMPATIBLE_WITH_TRIGGER Nem lehet profilermellékletet kérni, mert a célfolyamat verziója nem kompatibilis a jelenleg hívható AttachProfilerfolyamattal.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED) Az eseményindító folyamat felhasználója nem rendelkezik hozzáféréssel a célfolyamathoz.
HRESULT_FROM_WIN32(ERROR_PRIVILEGE_NOT_HELD) Az eseményindító folyamat felhasználója nem rendelkezik a profilkészítő adott célfolyamathoz való csatolásához szükséges jogosultságokkal. Az alkalmazás eseménynaplója további információkat tartalmazhat.
CORPROF_E_IPC_FAILED Hiba történt a célfolyamattal való kommunikáció során. Ez általában akkor fordul elő, ha a célfolyamat leállt.
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) A célfolyamat nem létezik, vagy nem olyan CLR-t futtat, amely támogatja a mellékletet. Ez azt jelezheti, hogy a CLR ki lett ürítve a futtatókörnyezet enumerálási metódusának hívása óta.
HRESULT_FROM_WIN32(ERROR_TIMEOUT) Az időtúllépés a profilkészítő betöltése nélkül lejárt. Újrapróbálhatja a csatolási műveletet. Időtúllépések akkor fordulnak elő, ha a célfolyamat véglegesítője hosszabb ideig fut, mint az időtúllépési érték.
E_INVALIDARG Egy vagy több paraméter érvénytelen értékekkel rendelkezik.
E_FAIL Más, meghatározatlan hiba történt.
Egyéb hibakódok Ha a profilozó ICorProfilerCallback3::InitializeForAttach metódusa hibát jelző HRESULT értéket ad vissza, AttachProfiler ugyanazt a HRESULT értéket adja vissza. Ebben az esetben a E_NOTIMPL CORPROF_E_PROFILER_NOT_ATTACHABLE lesz konvertálva.

Megjegyzések

Memóriakezelés

A COM-konvencióknak megfelelően a hívója AttachProfiler (például a profilkészítő fejlesztő által létrehozott triggerkód) felelős a paraméter által megadott adatok pvClientData memóriájának kiosztásáért és kiosztásának megszüntetéséért. Amikor a CLR végrehajtja a AttachProfiler hívást, másolatot készít a memóriáról, amely pvClientData a célfolyamatra mutat és továbbítja azt. Amikor a célfolyamaton belüli CLR megkapja a pvClientData blokk saját példányát, a metóduson keresztül átadja a blokkot a InitializeForAttach profilozónak, majd felszabadítja a blokk másolatát a pvClientData célfolyamatból.

Követelmények

Platformok: Lásd: Rendszerkövetelmények.

Fejléc: CorProf.idl, CorProf.h

Könyvtár: CorGuids.lib

.NET-keretrendszer verziók: 4 óta érhető el

Lásd még