다음을 통해 공유


IMetaDataDispenser::OpenScope 메서드

디스크에 있는 기존 파일을 열고 해당 메타데이터를 메모리에 매핑합니다.

HRESULT OpenScope (
    [in]  LPCWSTR     szScope, 
    [in]  DWORD       dwOpenFlags, 
    [in]  REFIID      riid, 
    [out] IUnknown    **ppIUnk
);

매개 변수

  • szScope
    [in] 열려는 파일의 이름입니다. 이 파일에는 CLR(공용 언어 런타임) 메타데이터가 들어 있어야 합니다.

  • dwOpenFlags
    [in] 열기 모드(읽기, 쓰기 등)를 지정할 CorOpenFlags 열거형의 값입니다.

  • riid
    [in] 반환할 메타데이터 인터페이스의 IID입니다. 호출자는 해당 인터페이스를 사용하여 메타데이터를 가져오거나(읽기) 내보냅니다(쓰기).

    riid의 값에는 "가져오기" 또는 "내보내기" 인터페이스 중 하나를 지정해야 합니다. 유효한 값은 IID_IMetaDataEmit, IID_IMetaDataImport, IID_IMetaDataAssemblyEmit, IID_IMetaDataAssemblyImport, IID_IMetaDataEmit2 또는 IID_IMetaDataImport2입니다.

  • ppIUnk
    [out] 반환된 인터페이스에 대한 포인터입니다.

설명

메타데이터의 메모리 내 복사본은 "가져오기" 인터페이스 중 하나의 메서드를 사용하여 쿼리하거나 "내보내기" 인터페이스 중 하나의 메서드를 사용하여 추가할 수 있습니다.

대상 파일에 CLR 메타데이터가 없으면 OpenScope 메서드가 실패합니다.

.NET Framework 버전 1.0 및 버전 1.1에서 dwOpenFlags가 ofRead로 설정된 상태로 범위가 열려 있으면 해당 영역을 공유할 수 있습니다. 즉, 이후에 OpenScope를 호출할 때 이전에 연 파일의 이름을 전달하면 기존 범위가 다시 사용되고 새 데이터 구조 집합은 만들어지지 않습니다. 그러나 이 공유로 인해 문제가 발생할 수 있습니다.

.NET Framework 버전 2.0에서는 dwOpenFlags가 ofRead로 설정된 상태로 열린 범위가 더 이상 공유되지 않습니다. 범위를 공유하려면 ofReadOnly 값을 사용해야 합니다. 범위가 공유되면 "읽기/쓰기" 메타데이터 인터페이스를 사용하는 쿼리가 실패합니다.

요구 사항

플랫폼: .NET Framework 시스템 요구 사항 참조

헤더: Cor.h

라이브러리: MsCorEE.dll에서 리소스로 사용됨

.NET Framework 버전: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

참고 항목

참조

IMetaDataDispenser 인터페이스

IMetaDataDispenserEx 인터페이스

IMetaDataAssemblyEmit 인터페이스

IMetaDataAssemblyImport 인터페이스

IMetaDataEmit 인터페이스

IMetaDataEmit2 인터페이스

IMetaDataImport 인터페이스

IMetaDataImport2 인터페이스