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