DXGKCB_MAP_MEMORY回调函数 (dispmprt.h)

DxgkCbMapMemory 函数将一系列已转换的物理地址 (与分配给显示适配器的内存资源相关联,) 映射到系统空间或用户模式进程的虚拟地址空间。

语法

DXGKCB_MAP_MEMORY DxgkcbMapMemory;

NTSTATUS DxgkcbMapMemory(
  [in]  HANDLE DeviceHandle,
  [in]  PHYSICAL_ADDRESS TranslatedAddress,
  [in]  ULONG Length,
  [in]  BOOLEAN InIoSpace,
  [in]  BOOLEAN MapToUserMode,
  [in]  MEMORY_CACHING_TYPE CacheType,
  [out] PVOID *VirtualAddress
)
{...}

参数

[in] DeviceHandle

表示显示适配器的句柄。 显示微型端口驱动程序以前在传递给 DxgkDdiStartDevice的 DXGKRNL_INTERFACE 结构的 DeviceHandle 成员中获取此句柄。

[in] TranslatedAddress

要映射的内存范围的基本转换物理地址。 显示微型端口驱动程序以前通过调用 DxgkCbGetDeviceInformation 获取此地址。

[in] Length

要映射的范围的大小(以字节为单位)。

[in] InIoSpace

一个布尔值,指定范围是在 I/O 空间中 (TRUE) 还是内存空间 (FALSE) 。

[in] MapToUserMode

一个布尔值,指定范围是映射到用户模式空间还是系统空间。 如果 为 TRUE,则范围映射到当前进程的 (用户模式) 虚拟地址空间中。 如果 为 FALSE,则范围将映射到系统空间中。 如果 InIoSpaceTRUE,则忽略此参数。

[in] CacheType

指定映射范围的缓存行为的 MEMORY_CACHING_TYPE 枚举器。

[out] VirtualAddress

指向变量的指针,该变量接收映射范围开头的地址。 访问映射范围的方式取决于 InIoSpaceMapToUserMode 的值。 下表总结了访问映射范围的不同方式。

InIoSpace 的值 MapToUserMode 为 FALSE MapToUserMode 为 TRUE
FALSE READ_REGISTER_X WRITE_REGISTER_X 用户模式代码执行普通内存访问。
TRUE READ_PORT_X WRITE_PORT_X 不可能。

返回值

如果成功,DxgkCbMapMemory 将返回STATUS_SUCCESS。 否则,它将返回 Ntstatus.h 中定义的错误代码之一。

注解

PHYSICAL_ADDRESS数据类型在 Ntdef.h 中定义。

要求

要求
最低受支持的客户端 Windows Vista
目标平台 桌面
标头 dispmprt.h (包括 Dispmprt.h)
IRQL PASSIVE_LEVEL

另请参阅

MEMORY_CACHING_TYPE