다음을 통해 공유


IMetaDataInfo::GetFileMapping 메서드

매핑된 파일의 메모리 영역 및 매핑 형식을 가져옵니다.

HRESULT GetFileMapping (
    [out] const void           **ppvData, 
    [out] ULONGLONG            *pcbData, 
    [out] DWORD                *pdwMappingType
);

매개 변수

  • ppvData
    [out] 매핑된 파일의 시작 포인터입니다.

  • pcbData
    [out] 매핑된 영역의 크기입니다. pdwMappingType이 fmFlat인 경우의 파일 크기입니다.

  • pdwMappingType
    [out] 매핑의 유형을 나타내는 CorFileMapping입니다. CLR(공용 언어 런타임)의 현재 구현은 항상 fmFlat을 반환합니다. 다른 값은 나중에 사용하기 위해 예약되어 있습니다. 그러나 향후 버전이나 서비스 릴리스에서 다른 값이 사용될 수 있으므로 항상 반환되는 값을 확인해야 합니다.

반환 값

HRESULT

설명

S_OK

모든 출력은 채워집니다.

E_INVALIDARG

NULL은 인수 값으로 전달되었습니다.

COR_E_NOTSUPPORTED

CLR 구현은 메모리 영역에 대한 정보를 제공할 수 없습니다. 이 문제는 다음과 같은 이유로 발생할 수 있습니다.

  • 메타데이터 범위가 ofWrite 또는 ofCopyMemory 플래그를 사용하여 열렸습니다.

  • 메타데이터 범위가 ofReadOnly 플래그 없이 열렸습니다.

  • IMetaDataDispenser::OpenScopeOnMemory 메서드는 파일의 메타데이터 부분만 여는 데 사용되었습니다.

  • 파일이 PE 파일(이식 가능 파일)이 아닙니다.

참고참고
이러한 조건은 CLR 구현에 따라 달라지며 향후 CLR 버전에서는 기능이 약화될 수 있습니다.

설명

ppvData가 가리키는 메모리는 기본 메타데이터 범위가 열려 있는 동안에만 유효합니다.

이 메서드가 작동하려면 IMetaDataDispenser::OpenScope 메서드를 호출하여 디스크상 파일의 메타데이터를 메모리로 매핑할 때 ofReadOnly 플래그를 지정해야 하며 ofWrite 또는 ofCopyMemory 플래그는 지정해서는 안 됩니다.

각 범위에 대한 파일 매핑 형식의 선택은 CLR의 주어진 구현에 특정합니다. 사용자가 설정할 수 없습니다. CLR의 현재 구현은 항상 pdwMappingType에서 fmFlat을 반환하지만 CLR의 향후 버전 또는 주어진 버전의 향후 서비스 릴리스에서는 변경될 수 있습니다. 형식마다 다른 레이아웃과 오프셋을 갖기 때문에 항상 pdwMappingType에서 반환 값을 확인해야 합니다.

세 매개 변수에 대해 NULL 전달은 지원되지 않습니다. 이 메서드는 E_INVALIDARG를 반환하고 아무런 출력이 채워지지 않습니다. 매핑 형식 또는 해당 영역의 크기를 무시하면 비정상적인 프로그램 종료가 발생할 수 있습니다.

요구 사항

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

헤더: Cor.h

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

.NET Framework 버전: 4

참고 항목

기타 리소스

IMetaDataInfo 인터페이스

CorFileMapping 열거형