ICorProfilerCallback6::GetAssemblyReferences 메서드

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

공용 언어 런타임이 어셈블리 참조 closure 워커를 수행할 때 어셈블리가 초기 로드 상태임을 프로파일러에 알립니다.

구문

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

매개 변수

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

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

Return Value

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

설명

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

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

프로파일러는 이 메서드가 제공하는 ICorProfilerAssemblyReferenceProvider 개체를 사용하여 CLR 어셈블리 참조 closure 워커에 어셈블리 참조를 추가합니다. ICorProfilerAssemblyReferenceProvider 개체는 이 콜백 내에서만 사용해야 합니다. 이 콜백에서 ICorProfilerAssemblyReferenceProvider::AddAssemblyReference 메서드를 호출해도 메타데이터가 수정되지 않으며 어셈블리 참조 closure 워크만 수정됩니다. 프로파일러는 GetAssemblyReferences 콜백을 구현하더라도 IMetaDataAssemblyEmit 개체를 사용하여 참조 어셈블리에 대해 ICorProfilerCallback::ModuleLoadFinished 콜백 내에서 어셈블리 참조를 명시적으로 추가해야 합니다.

프로파일러는 같은 어셈블리에 대한 이 콜백의 중복 호출을 수신할 준비를 해야 하며 같은 ICorProfilerAssemblyReferenceProvider::AddAssemblyReference 호출 집합을 만들어 이러한 중복 호출에 대해 동일하게 응답해야 합니다.

요구 사항

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

헤더: CorProf.idl, CorProf.h

라이브러리: CorGuids.lib

.NET Framework 버전: 4.5.2부터 사용 가능

참고 항목