Dela via


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

Se även