ICorProfilerCallback6::GetAssemblyReferences メソッドICorProfilerCallback6::GetAssemblyReferences Method

[.NET Framework 4.5.2 以降のバージョンでのみでサポート][Supported in the .NET Framework 4.5.2 and later versions]

共通言語ランタイムがアセンブリ参照クロージャのウォークを実行するときに、アセンブリがごく初期のローディング状態であることをプロファイラーに通知します。Notifies the profiler that an assembly is in a very early loading stage, when the common language runtime performs an assembly reference closure walk.

構文Syntax

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

パラメーターParameters

wszAssemblyPath
[in] メタデータが変更されるアセンブリのパスおよび名前。[in] The path and name of the assembly whose metadata will be modified.

pAsmRefProvider
から追加するアセンブリ参照を指定するICorProfilerAssemblyReferenceProviderインターフェイスのアドレスへのポインター。[in] A pointer to the address of an ICorProfilerAssemblyReferenceProvider interface that specifies the assembly references to add.

戻り値Return Value

このコールバックからの戻り値は無視されます。Return values from this callback are ignored.

コメントRemarks

このコールバックは、 ICorProfilerCallback5:: SetEventMask2メソッドを呼び出すときに、 COR_PRF_HIGH_ADD_ASSEMBLY_REFERENCESイベントマスクフラグを設定することによって制御されます。This callback is controlled by setting the COR_PRF_HIGH_ADD_ASSEMBLY_REFERENCES event mask flag when calling the ICorProfilerCallback5::SetEventMask2 method. プロファイラーがICorProfilerCallback6:: GetAssemblyReferences callback メソッドを登録すると、ランタイムは、読み込まれるアセンブリのパスと名前、およびそのメソッドへのICorProfilerAssemblyReferenceProviderインターフェイスオブジェクトへのポインターを渡します。If the profiler registers for the ICorProfilerCallback6::GetAssemblyReferences callback method, the runtime passes the path and name of the assembly to be loaded, along with a pointer to an ICorProfilerAssemblyReferenceProvider interface object to that method. その後、プロファイラーは、GetAssemblyReferences コールバックで指定されたアセンブリから参照する各ターゲットアセンブリの COR_PRF_ASSEMBLY_REFERENCE_INFO オブジェクトを使用して、 ICorProfilerAssemblyReferenceProvider:: AddAssemblyReferenceメソッドを呼び出すことができます。The profiler can then call the ICorProfilerAssemblyReferenceProvider::AddAssemblyReference method with a COR_PRF_ASSEMBLY_REFERENCE_INFO object for each target assembly it plans to reference from the assembly specified in the GetAssemblyReferences callback.

GetAssemblyReferences コールバックを使用するのは、プロファイラーがアセンブリのメタデータを変更してアセンブリ参照を追加する必要がある場合のみですUse the GetAssemblyReferences callback only if the profiler has to modify an assembly's metadata to add assembly references. (ただし、アセンブリのメタデータの実際の変更は、 ICorProfilerCallback:: ModuleLoadFinishedコールバックメソッドで行われることに注意してください)。プロファイラーは、モジュールが読み込まれたときにアセンブリ参照が追加されることを共通言語ランタイム (CLR) に通知するために、GetAssemblyReferences コールバックメソッドを実装する必要があります。(But note that the actual modification of an assembly's metadata is done in the ICorProfilerCallback::ModuleLoadFinishedcallback method.) The profiler should implement the GetAssemblyReferences callback method to inform the common language runtime (CLR) that assembly references will be added when the module has been loaded. これにより、プロファイラーが後でメタデータのアセンブリ参照を変更するつもりでも、アセンブリが共有している "初期の段階で CLR によって行われた決定" は有効なままになります。This helps ensure that assembly sharing decisions made by the CLR during this early stage remain valid although the profiler plans to modify the metadata assembly references later. このため一部のインスタンスでの、プロファイラーのメタデータ変更による SECURITY_E_INCOMPATIBLE_SHARE エラーの発生を回避できる場合があります。This can avoid some instances in which profiler metadata modifications cause an SECURITY_E_INCOMPATIBLE_SHARE error.

プロファイラーは、このメソッドによって提供されるICorProfilerAssemblyReferenceProviderオブジェクトを使用して、CLR アセンブリ参照クロージャのウォーカーにアセンブリ参照を追加します。The profiler uses the ICorProfilerAssemblyReferenceProvider object provided by this method to add assembly references to the CLR assembly reference closure walker. ICorProfilerAssemblyReferenceProviderオブジェクトは、このコールバック内からのみ使用する必要があります。The ICorProfilerAssemblyReferenceProvider object should be used only from within this callback. このコールバックからICorProfilerAssemblyReferenceProvider:: AddAssemblyReferenceメソッドを呼び出すと、変更されたメタデータは生成されませんが、変更されたアセンブリ参照クロージャウォークでのみ発生します。Calls to the ICorProfilerAssemblyReferenceProvider::AddAssemblyReference method from this callback don't result in modified metadata, but only in a modified assembly reference closure walk. プロファイラーは、 IMetaDataAssemblyEmitオブジェクトを使用して、参照元アセンブリのICorProfilerCallback:: moduleloadfinishedコールバック内からアセンブリ参照を明示的に追加する必要があります。これは、GetAssemblyReferences コールバックが実装されている場合でも同様です。The profiler will still have to use an IMetaDataAssemblyEmit object to explicitly add assembly references from within the ICorProfilerCallback::ModuleLoadFinished callback for the referencing assembly, even if it implements the GetAssemblyReferences callback.

プロファイラーは、同じアセンブリに対してこのコールバックへの重複する呼び出しを受け取るように準備する必要があります。また、同じICorProfilerAssemblyReferenceProvider:: AddAssemblyReference呼び出しのセットを作成することによって、重複する各呼び出しに対して同じように応答する必要があります。The profiler should be prepared to receive duplicate calls to this callback for the same assembly, and should respond identically for each such duplicate call (by making the same set of ICorProfilerAssemblyReferenceProvider::AddAssemblyReference calls).

要件Requirements

:システム要件」を参照してください。Platforms: See System Requirements.

ヘッダー : CorProf.idl、CorProf.hHeader: CorProf.idl, CorProf.h

ライブラリ: CorGuids.libLibrary: CorGuids.lib

.NET Framework のバージョン: 4.5.2 以降で使用可能Available since 4.5.2.NET Framework Versions: 4.5.2 以降で使用可能Available since 4.5.2

参照See also