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 구현은 메모리 영역에 대한 정보를 제공할 수 없습니다. 이 문제는 다음과 같은 이유로 발생할 수 있습니다.
참고
이러한 조건은 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