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

表示显示适配器的句柄。 显示微型端口驱动程序以前在传递给 DxgkDdiStartDeviceDXGKRNL_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
READ_REGISTER_X WRITE_REGISTER_X 用户模式代码执行普通内存访问。
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