다음을 통해 공유


IHostAssemblyStore::ProvideAssembly 메서드

IHostAssemblyManager::GetNonHostStoreAssemblies에서 반환되는 ICLRAssemblyReferenceList에서 참조되지 않는 어셈블리에 대한 참조를 가져옵니다. CLR(공용 언어 런타임)은 목록에 표시되지 않는 각 어셈블리에 대해 ProvideAssembly를 호출합니다.

구문

HRESULT ProvideAssembly (  
    [in]  AssemblyBindInfo *pBindInfo,  
    [out] UINT64           *pAssemblyId,  
    [out] UINT64           *pHostContext,  
    [out] IStream          **ppStmAssemblyImage,  
    [out] IStream          **ppStmPDB  
);  

매개 변수

pBindInfo
[in] 호스트가 버전 관리 정책의 존재 여부, 바인딩할 어셈블리 등 특정 바인드 특성을 확인하는 데 사용하는 AssemblyBindInfo 인스턴스에 대한 포인터입니다.

pAssemblyId
[out] 이 IStream에 대해 요청된 어셈블리의 고유 식별자에 대한 포인터입니다.

pHostContext
[out] 플랫폼 호출 없이 요청된 어셈블리의 증거를 확인하는 데 사용되는 호스트별 데이터에 대한 포인터입니다. pHostContext는 관리형 Assembly 클래스의 HostContext 속성에 해당합니다.

ppStmAssemblyImage
[out] 로드할 PE(이식 가능 파일) 이미지가 포함된 IStream의 주소에 대한 포인터이거나, 어셈블리를 찾을 수 없는 경우 null입니다.

ppStmPDB
[out] PDB(프로그램 디버그) 정보를 포함하는 IStream의 주소에 대한 포인터이거나, .pdb 파일을 찾을 수 없는 경우 null입니다.

Return Value

HRESULT 설명
S_OK ProvideAssembly가 성공적으로 반환되었습니다.
HOST_E_CLRNOTAVAILABLE CLR이 프로세스에 로드되지 않았거나 CLR이 관리 코드를 실행하거나 호출을 성공적으로 처리할 수 없는 상태입니다.
HOST_E_TIMEOUT 호출 시간이 초과되었습니다.
HOST_E_NOT_OWNER 호출자는 잠금을 소유하지 않습니다.
HOST_E_ABANDONED 차단된 스레드 또는 파이버가 이벤트를 기다리는 동안 이벤트가 취소되었습니다.
E_FAIL 알 수 없는 치명적인 오류가 발생했습니다. 메서드가 E_FAIL을 반환하면 CLR은 더 이상 프로세스 내에서 사용할 수 없습니다. 호스팅 메서드에 대한 후속 호출은 HOST_E_CLRNOTAVAILABLE을 반환합니다.
COR_E_FILENOTFOUND(0x80070002) 요청된 어셈블리를 찾을 수 없습니다.
E_NOT_SUFFICIENT_BUFFER pAssemblyId에 의해 지정된 버퍼 크기가 호스트가 반환하려는 식별자를 포함할 만큼 크지 않습니다.

설명

pAssemblyId에 대해 반환되는 ID 값은 호스트가 지정합니다. 식별자는 프로세스 수명 내에서 고유해야 합니다. CLR은 이 값을 스트림의 고유 식별자로 사용합니다. ProvideAssembly에 대한 다른 호출에서 반환되는 pAssemblyId 값에 대해 각 값을 확인합니다. 호스트가 또 다른 IStream에 대해 동일한 pAssemblyId 값을 반환하는 경우 CLR은 해당 스트림의 콘텐츠가 이미 매핑되었는지 여부를 확인합니다. 이 경우 런타임은 새 이미지를 매핑하는 대신 이미지의 기존 복사본을 로드합니다.

요구 사항

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

헤더: MSCorEE.h

라이브러리: 리소스로 MSCorEE.dll에 포함됩니다.

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

참고 항목