다음을 통해 공유


ICorProfilerCallback6::GetAssemblyReferences Method

[.NET Framework 4.5.2 이상 버전에서 지원됨]

공용 언어 런타임이 어셈블리 참조 닫기 워크를 수행할 때 어셈블리가 매우 초기 로드 단계에 있음을 프로파일러에 알릴 수 있습니다.

Syntax

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

Parameters

wszAssemblyPath [in] 메타데이터를 수정할 어셈블리의 경로 및 이름입니다.

pAsmRefProvider [in] 추가할 어셈블리 참조를 지정하는 ICorProfilerAssemblyReferenceProvider 인터페이스의 주소에 대한 포인터입니다.

Return Value

이 콜백의 반환 값은 무시됩니다.

Remarks

이 콜백은 ICorProfilerCallback5::SetEventMask2 메서드를 호출할 때 COR_PRF_HIGH_ADD_ASSEMBLY_REFERENCES 이벤트 마스크 플래그를 설정하여 제어됩니다. 프로파일러가 ICorProfilerCallback6::GetAssemblyReferences 콜백 메서드에 등록하는 경우 런타임은 로드할 어셈블리의 경로와 이름을 해당 메서드에 ICorProfilerAssemblyReferenceProvider 인터페이스 개체에 대한 포인터와 함께 전달합니다. 그런 다음 프로파일러는 콜백에 지정된 GetAssemblyReferences 어셈블리에서 참조할 각 대상 어셈블리에 대한 개체를 사용하여 COR_PRF_ASSEMBLY_REFERENCE_INFOICorProfilerAssemblyReferenceProvider::AddAssemblyReference 메서드를 호출할 수 있습니다.

프로파일러가 GetAssemblyReferences 어셈블리 참조를 추가하기 위해 어셈블리의 메타데이터를 수정해야 하는 경우에만 콜백을 사용합니다. 그러나 어셈블리 메타데이터의 실제 수정은 ICorProfilerCallback::ModuleLoadFinished콜백 메서드에서 수행됩니다. 프로파일러가 콜백 메서드를 GetAssemblyReferences 구현하여 모듈이 로드될 때 어셈블리 참조가 추가될 것이라고 CLR(공용 언어 런타임)에 알려야 합니다. 이렇게 하면 프로파일러가 나중에 메타데이터 어셈블리 참조를 수정할 계획이지만 이 초기 단계에서 CLR에서 내린 어셈블리 공유 결정이 유효하게 유지됩니다. 이렇게 하면 프로파일러 메타데이터 수정으로 인해 오류가 발생하는 일부 인스턴스를 방지할 수 있습니다 SECURITY_E_INCOMPATIBLE_SHARE .

프로파일러는 이 메서드에서 제공하는 ICorProfilerAssemblyReferenceProvider 개체를 사용하여 CLR 어셈블리 참조 클로저 워커에 어셈블리 참조를 추가합니다. ICorProfilerAssemblyReferenceProvider 개체는 이 콜백 내에서만 사용해야 합니다. 이 콜백에서 ICorProfilerAssemblyReferenceProvider::AddAssemblyReference 메서드에 대한 호출은 수정된 메타데이터가 아니라 수정된 어셈블리 참조 닫기 워크에서만 발생합니다. 프로파일러는 여전히 IMetaDataAssemblyEmit 개체를 사용하여 콜백을 구현하더라도 참조 어셈블리에 대한 ICorProfilerCallback::ModuleLoadFinished 콜백 내에서 어셈블리 참조를 명시적으로 추가해야 합니다 GetAssemblyReferences .

프로파일러는 동일한 어셈블리에 대해 이 콜백에 대한 중복 호출을 수신하도록 준비해야 하며, 이러한 각 중복 호출에 대해 동일하게 응답해야 합니다(동일한 ICorProfilerAssemblyReferenceProvider::AddAssemblyReference 호출 집합을 만들어).

Requirements

플랫폼:시스템 요구 사항을 참조하세요.

머리글: CorProf.idl, CorProf.h

Library: CorGuids.lib

.NET Framework 버전: 4.5.2 이후 사용 가능

See also