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。 保留其他值以供将来使用。 但是,应始终确认返回的值,因为未来版本或 service releases 中可能启用了其他值。
返回值
HRESULT |
说明 |
---|---|
S_OK |
填充所有输出。 |
E_INVALIDARG |
NULL 作为参数值传递。 |
COR_E_NOTSUPPORTED |
CLR 实现不能提供有关内存区域的信息。 发生这种情况的原因如下:
注意
这些条件取决于 CLR 实现,并可在 CLR 的未来版本中变弱。
|
备注
ppvData 指向的内存只有在基础元数据范围打开时才有效。
为使此方法正常工作,当您通过调用 IMetaDataDispenser::OpenScope 方法将磁盘文件中的元数据映射到内存中时,您必须指定 ofReadOnly 标志,并且不能指定 ofWrite 或 ofCopyMemory 标志。
为每个范围选择文件映射类型是特定于给定的 CLR 实现的。 它不能由用户设置。 CLR 的当前实现在 pdwMappingType 中始终返回 fmFlat,但此情况将在 CLR 的未来版本或给定版本的未来 Service Release 中更改。 您应该始终检查 pdwMappingType 中的返回值,因为不同的类型将具有不同的布局和偏移量。
不支持为这三个参数中的任何一个传递 NULL。 方法返回 E_INVALIDARG,并且未填充任何输出。 忽略映射类型或区域的大小可能会导致异常程序终止。
要求
**平台:**请参见 .NET Framework 系统要求。
**头文件:**Cor.h
**库:**在 MsCorEE.dll 中用作资源
**.NET Framework 版本:**4