ICLRProfiling::AttachProfiler, metod
Kopplar angiven profilerare till den angivna processen.
Syntax
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
Parametrar
dwProfileeProcessID
[in] Process-ID för den process som profileraren ska kopplas till. På en 64-bitars dator måste den profilerade processens bitness matcha bitnessen i utlösarprocessen som anropar AttachProfiler
. Om det användarkonto som anropas under har administratörsbehörighet kan målprocessen vara vilken process som AttachProfiler
helst i systemet. Annars måste målprocessen ägas av samma användarkonto.
dwMillisecondsMax
[in] Tidsvaraktigheten, i millisekunder, för AttachProfiler
att slutföras. Utlösarprocessen bör klara en tidsgräns som är känd för att vara tillräcklig för att den specifika profileraren ska kunna slutföra initieringen.
pClsidProfiler
[in] En pekare till CLSID för profileraren som ska läsas in. Utlösarprocessen kan återanvända det här minnet när det har returnerats AttachProfiler
.
wszProfilerPath
[in] Den fullständiga sökvägen till profilerarens DLL-fil som ska läsas in. Den här strängen får inte innehålla fler än 260 tecken, inklusive null-avslutaren. Om wszProfilerPath
är null eller en tom sträng försöker CLR (Common Language Runtime) hitta platsen för profilerarens DLL-fil genom att leta i registret efter CLSID som pClsidProfiler
pekar på.
pvClientData
[in] En pekare till data som ska skickas till profileraren av metoden ICorProfilerCallback3::InitializeForAttach . Utlösarprocessen kan återanvända det här minnet när det har returnerats AttachProfiler
. Om pvClientData
är null cbClientData
måste vara 0 (noll).
cbClientData
[in] Storleken i byte på de data som pvClientData
pekar på.
Returvärde
Den här metoden returnerar följande HRESULT.
HRESULT | Description |
---|---|
S_OK | Den angivna profileraren har kopplats till målprocessen. |
CORPROF_E_PROFILER_ALREADY_ACTIVE | Det finns redan en profilerare aktiv eller kopplas till målprocessen. |
CORPROF_E_PROFILER_NOT_ATTACHABLE | Den angivna profileraren stöder inte bifogad fil. Utlösarprocessen kan försöka koppla en annan profilerare. |
CORPROF_E_PROFILEE_INCOMPATIBLE_WITH_TRIGGER | Det går inte att begära en profilerarbilaga eftersom versionen av målprocessen inte är kompatibel med den aktuella processen som anropar AttachProfiler . |
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED) | Utlösarprocessens användare har inte åtkomst till målprocessen. |
HRESULT_FROM_WIN32(ERROR_PRIVILEGE_NOT_HELD) | Utlösarprocessens användare har inte de behörigheter som krävs för att koppla en profilerare till den angivna målprocessen. Programhändelseloggen kan innehålla mer information. |
CORPROF_E_IPC_FAILED | Ett fel uppstod vid kommunikation med målprocessen. Detta inträffar ofta om målprocessen stängdes av. |
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) | Målprocessen finns inte eller kör inte en CLR som stöder bifogade filer. Detta kan tyda på att CLR har tagits bort sedan anropet till uppräkningsmetoden för körning. |
HRESULT_FROM_WIN32(ERROR_TIMEOUT) | Tidsgränsen upphörde att gälla utan att profileraren började läsas in. Du kan försöka ansluta igen. Tidsgränser uppstår när en slutförare i målprocessen körs under en längre tid än tidsgränsvärdet. |
E_INVALIDARG | En eller flera parametrar har ogiltiga värden. |
E_FAIL | Något annat, ospecificerat fel inträffade. |
Andra felkoder | Om profilerarens ICorProfilerCallback3::InitializeForAttach-metod returnerar en HRESULT som indikerar fel returnerar AttachProfiler samma HRESULT. I det här fallet konverteras E_NOTIMPL till CORPROF_E_PROFILER_NOT_ATTACHABLE. |
Kommentarer
Minneshantering
I enlighet med COM-konventioner ansvarar anroparen för AttachProfiler
(till exempel utlösarkoden som skapats av profileraren) för att allokera och avallokera minnet för de data som parametern pvClientData
pekar på. När CLR kör anropet AttachProfiler
skapas en kopia av minnet som pvClientData
pekar på och överför det till målprocessen. När CLR i målprocessen tar emot en egen kopia av pvClientData
blocket skickar den blocket till profileraren via InitializeForAttach
metoden och frigör sedan sin kopia av pvClientData
blocket från målprocessen.
Krav
Plattformar: Se Systemkrav.
Huvudet: CorProf.idl, CorProf.h
Bibliotek: CorGuids.lib
.NET Framework versioner: Tillgänglig sedan 4