Delen via


Methode ICLRProfiling::AttachProfiler

Koppelt de opgegeven profiler aan het opgegeven proces.

Syntaxis

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  

Parameters

dwProfileeProcessID
[in] De proces-id van het proces waaraan de profiler moet worden gekoppeld. Op een 64-bits computer moet de bitness van het geprofileerde proces overeenkomen met de bitness van het triggerproces dat aanroept AttachProfiler. Als het gebruikersaccount waaronder AttachProfiler wordt aangeroepen beheerdersbevoegdheden heeft, kan het doelproces elk proces op het systeem zijn. Anders moet het doelproces eigendom zijn van hetzelfde gebruikersaccount.

dwMillisecondsMax
[in] De tijdsduur, in milliseconden, om AttachProfiler te voltooien. Het triggerproces moet een time-out doorgeven die voldoende is voor de specifieke profiler om de initialisatie te voltooien.

pClsidProfiler
[in] Een verwijzing naar de CLSID van de profiler die moet worden geladen. Het triggerproces kan dit geheugen opnieuw gebruiken na AttachProfiler retournering.

wszProfilerPath
[in] Het volledige pad naar het DLL-bestand van de profiler dat moet worden geladen. Deze tekenreeks mag niet meer dan 260 tekens bevatten, inclusief het null-eindteken. Als wszProfilerPath null of een lege tekenreeks is, probeert de Common Language Runtime (CLR) de locatie van het DLL-bestand van de profiler te vinden door in het register te zoeken naar de CLSID die pClsidProfiler naar verwijst.

pvClientData
[in] Een verwijzing naar gegevens die moeten worden doorgegeven aan de profiler door de methode ICorProfilerCallback3::InitializeForAttach . Het triggerproces kan dit geheugen opnieuw gebruiken na AttachProfiler retournering. Als pvClientData null is, cbClientData moet 0 (nul) zijn.

cbClientData
[in] De grootte, in bytes, van de gegevens waarnaar pvClientData wordt verwezen.

Retourwaarde

Deze methode retourneert de volgende HRESULTs.

HRESULT Beschrijving
S_OK De opgegeven profiler is gekoppeld aan het doelproces.
CORPROF_E_PROFILER_ALREADY_ACTIVE Er is al een profiler actief of gekoppeld aan het doelproces.
CORPROF_E_PROFILER_NOT_ATTACHABLE De opgegeven profiler biedt geen ondersteuning voor bijlagen. Het triggerproces kan proberen een andere profiler te koppelen.
CORPROF_E_PROFILEE_INCOMPATIBLE_WITH_TRIGGER Kan geen profilerbijlage aanvragen, omdat de versie van het doelproces niet compatibel is met het huidige proces dat aanroept AttachProfiler.
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED) De gebruiker van het triggerproces heeft geen toegang tot het doelproces.
HRESULT_FROM_WIN32(ERROR_PRIVILEGE_NOT_HELD) De gebruiker van het triggerproces beschikt niet over de benodigde bevoegdheden om een profiler te koppelen aan het opgegeven doelproces. Het gebeurtenislogboek van de toepassing bevat mogelijk meer informatie.
CORPROF_E_IPC_FAILED Er is een fout opgetreden bij het communiceren met het doelproces. Dit gebeurt meestal als het doelproces werd afgesloten.
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) Het doelproces bestaat niet of voert geen CLR uit die bijlage ondersteunt. Dit kan erop wijzen dat de CLR is verwijderd sinds de aanroep van de runtime-opsommingsmethode.
HRESULT_FROM_WIN32(ERROR_TIMEOUT) De time-out is verlopen zonder de profiler te laden. U kunt de koppelbewerking opnieuw proberen. Time-outs treden op wanneer een finalizer in het doelproces langer wordt uitgevoerd dan de time-outwaarde.
E_INVALIDARG Een of meer parameters hebben ongeldige waarden.
E_FAIL Er is een andere, niet-gespecificeerde fout opgetreden.
Overige foutcodes Als de methode ICorProfilerCallback3::InitializeForAttach van de profiler een HRESULT retourneert dat een fout aangeeft, AttachProfiler retourneert dezelfde HRESULT. In dit geval wordt E_NOTIMPL geconverteerd naar CORPROF_E_PROFILER_NOT_ATTACHABLE.

Opmerkingen

Geheugenbeheer

In overeenstemming met COM-conventies is de aanroeper van AttachProfiler (bijvoorbeeld de triggercode die is geschreven door de profiler-ontwikkelaar) verantwoordelijk voor het toewijzen en ongedaan maken van de toewijzing van het geheugen voor de gegevens waarnaar de pvClientData parameter verwijst. Wanneer de CLR de AttachProfiler aanroep uitvoert, maakt deze een kopie van het geheugen dat pvClientData verwijst naar en verzendt deze naar het doelproces. Wanneer de CLR in het doelproces een eigen kopie van het pvClientData blok ontvangt, wordt het blok doorgegeven aan de profiler via de InitializeForAttach methode en wordt vervolgens de toewijzing van de kopie van het blok van het pvClientData doelproces ongedaan gemaakt.

Vereisten

Platforms: Zie Systeemvereisten.

Header: CorProf.idl, CorProf.h

Bibliotheek: CorGuids.lib

.NET Framework versies: beschikbaar sinds 4

Zie ook