Freigeben über


ICorProfilerCallback6::GetAssemblyReferences-Methode

[Wird nur in .NET Framework 4.5.2 und neueren Versionen unterstützt]

Benachrichtigt den Profiler, dass ein Assembly sich in einer sehr frühen Ladephase befindet, wenn die Common Language Runtime einen "Closure Walk" des Assemblyverweises durchführt.

Syntax

HRESULT GetAssemblyReferences(        [in, string] const WCHAR* wszAssemblyPath,  
        [in] ICorProfilerAssemblyReferenceProvider* pAsmRefProvider  
);  

Parameter

wszAssemblyPath
[in] Der Pfad und Name des Assemblys, dessen Metadaten geändert werden.

pAsmRefProvider
[in] Ein Zeiger zur Adresse einer ICorProfilerAssemblyReferenceProvider-Schnittstelle, die die hinzuzufügenden Assemblyverweisen festlegt

Rückgabewert

Rückgabewerte von diesem Rückruf werden ignoriert.

Bemerkungen

Dieser Rückruf wird durch Festlegen des Ereignismaskenkennzeichnens COR_PRF_HIGH_ADD_ASSEMBLY_REFERENCES beim Aufruf der Methode ICorProfilerCallback5::SetEventMask2 gesteuert. Wenn der Profiler für die ICorProfilerCallback6::GetAssemblyReferences-Rückrufmethode registriert ist, gibt die Runtime den Pfad und den Namen der zu ladenden Assembly weiter, zusammen mit einem Zeiger auf ein ICorProfilerAssemblyReferenceProvider-Schnittstellenobjekt für diese Methode. Der Profiler ruft dann die Methode ICorProfilerAssemblyReferenceProvider::AddAssemblyReference mit einem COR_PRF_ASSEMBLY_REFERENCE_INFO-Objekt für jede Zielassembly auf, auf die es von dem im GetAssemblyReferences-Rückruf festgelegten Assembly verweisen soll.

Verwenden Sie den GetAssemblyReferences-Rückruf nur, wenn der Profiler die Metadaten einer Assembly für das Hinzufügen von Assemblyreferenzen ändern muss. (Beachten Sie jedoch, dass die eigentliche Änderung der Metadaten einer Assembly in der Rückrufmethode ICorProfilerCallback::ModuleLoadFinished erfolgt.) Der Profiler sollte die GetAssemblyReferences-Rückrufmethode implementieren, um die Common Language Runtime (CLR) darüber zu informieren, dass Assemblyverweise hinzugefügt werden, wenn das Modul geladen wurde. Damit kann sichergestellt werden, dass die Freigabeentscheidungen der Assembly, die in dieser frühen Phase von der CLR getroffen werden, gültig bleiben, auch wenn der Profiler die Assemblyverweise der Metadaten später ändert. Damit kann verhindert werden, dass manche Instanzen mit Profiler-Metadatenänderungen einen SECURITY_E_INCOMPATIBLE_SHARE-Fehler verursachen.

Der Profiler verwendet das von dieser Methode bereitgestellte Objekt ICorProfilerAssemblyReferenceProvider für das Hinzufügen von Assemblyverweisen zum CLR-Closure Walker des Assemblyverweises. Das Objekt ICorProfilerAssemblyReferenceProvider sollte nur von innerhalb dieses Rückrufs aus verwendet werden. Aufrufe der Methode ICorProfilerAssemblyReferenceProvider::AddAssemblyReference von diesem Rückruf führen nicht zu geänderten Metadaten, sondern nur zu einem geänderten Assemblyverweis-Closure-Walk. Der Profiler muss dennoch ein IMetaDataAssemblyEmit-Objekt verwenden, um ausdrücklich Assemblyverweise aus dem ICorProfilerCallback::ModuleLoadFinished-Rückruf für die verweisende Assembly hinzuzufügen, selbst wenn er den GetAssemblyReferences-Rückruf implementiert.

Der Profiler muss auf das Empfangen doppelter Aufrufe auf diesen Rückruf für dieselbe Assembly vorbereitet werden und muss auf jeden solchen Aufruf identisch reagieren (indem er dieselben ICorProfilerAssemblyReferenceProvider::AddAssemblyReference-Aufrufe durchführt).

Anforderungen

Plattformen: Informationen finden Sie unter Systemanforderungen.

Header: CorProf.idl, CorProf.h

Bibliothek: CorGuids.lib

.NET Framework-Versionen: Seit Version 4.5.2 verfügbar

Siehe auch