获取映射文件的内存区域和映射的类型。
Syntax
HRESULT GetFileMapping (
[out] const void **ppvData,
[out] ULONGLONG *pcbData,
[out] DWORD *pdwMappingType
);
Parameters
ppvData [out]指向映射文件的开头的指针。
pcbData [out]映射区域的大小。
fmFlat如果是pdwMappingType,则为文件大小。
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 的未来版本中可能会减弱。 |
Remarks
仅当基础元数据范围处于打开状态时, ppvData 指向的内存才有效。
若要使此方法正常工作,通过调用 IMetaDataDispenser::OpenScope 方法将磁盘上的文件的元数据映射到内存中时,必须指定标志,并且不得指定ofReadOnlyofWrite或ofCopyMemory标志。
每个范围的文件映射类型的选择特定于 CLR 的给定实现。 用户无法设置它。 CLR 的当前实现始终返回fmFlatpdwMappingType,但这可以在 CLR 的未来版本或给定版本的将来服务版本中更改。 应始终检查返回的值 pdwMappingType,因为不同类型的布局和偏移量不同。
不支持为这三个参数中的任何一个传递 NULL。 该方法返回 E_INVALIDARG,并且未填充任何输出。 忽略映射类型或区域的大小可能会导致程序异常终止。
Requirements
平台: 请参阅 .NET 支持的作系统。
Header: Cor.h
Library: CorGuids.lib
.NET 版本: 自 .NET Framework 4.0 起可用