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
을 반환됩니다. 다른 값은 나중에 사용할 수 있도록 예약되어 있습니다. 그러나 향후 버전이나 서비스 릴리스에서 다른 값이 사용될 수 있으므로 항상 반환된 값을 확인해야 합니다.
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부터 사용 가능
참고 항목
.NET