다음을 통해 공유


IMetaDataInfo::GetFileMapping 메서드

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

구문

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

매개 변수

ppvData
[out] 매핑된 파일의 시작 부분에 대한 포인터입니다.

pcbData
[out] 명명된 영역의 크기입니다. pdwMappingTypefmFlat인 경우 파일의 크기입니다.

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

Return Value

HRESULT Description
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를 반환하고 어떤 출력도 채워지지 않습니다. 매핑 형식이나 영역의 크기를 무시하면 프로그램이 비정상적으로 종료될 수 있습니다.

요구 사항

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

헤더: Cor.h

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

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

참고 항목