DXGKDDI_CREATEALLOCATION回调函数 (d3dkmddi.h)

DxgkDdiCreateAllocation 函数创建系统或视频内存的分配。

语法

DXGKDDI_CREATEALLOCATION DxgkddiCreateallocation;

NTSTATUS DxgkddiCreateallocation(
  [in]     IN_CONST_HANDLE hAdapter,
  [in/out] INOUT_PDXGKARG_CREATEALLOCATION pCreateAllocation
)
{...}

参数

[in] hAdapter

与显示适配器关联的上下文块的句柄。 显示微型端口驱动程序之前在 DxgkDdiAddDevice 函数的 MiniportDeviceContext 输出参数中向 Microsoft DirectX 图形内核子系统提供了此句柄。

[in/out] pCreateAllocation

指向 DXGKARG_CREATEALLOCATION 结构的指针,该结构包含用于创建分配的信息。

返回值

DxgkDdiCreateAllocation 返回以下值之一:

返回代码 说明
STATUS_SUCCESS DxgkDdiCreateAllocation 已成功创建分配。
STATUS_INVALID_PARAMETER 传递给 DxgkDdiCreateAllocation 的参数包含阻止其完成的错误。
STATUS_NO_MEMORY DxgkDdiCreateAllocation 无法分配完成该操作所需的内存。
STATUS_GRAPHICS_DRIVER_MISMATCH 显示微型端口驱动程序与启动 对 DxgkDdiCreateAllocation 调用的用户模式显示驱动程序不兼容。

注解

在用户模式显示驱动程序调用 pfnAllocateCb 函数后,DirectX 图形内核子系统调用显示微型端口驱动程序的 DxgkDdiCreateAllocation 函数来创建分配。 对于从用户模式显示驱动程序传递的每个分配) ,显示微型端口驱动程序必须解释DXGK_ALLOCATIONINFO结构的 pPrivateDriverData 成员中的专用数据 (,并且必须确定通过视频内存管理器创建每个分配所需的参数列表。 有关显示微型端口驱动程序如何向视频内存管理器提供这些参数的详细信息,请参阅 在创建分配时指定段

显示微型端口驱动程序必须返回分配句柄,该句柄通常是指向包含有关分配信息的专用驱动程序数据结构的指针。 显示微型端口驱动程序可以随时调用 DxgkCbGetHandleData 函数来检索分配句柄的私有数据。 因此,显示微型端口驱动程序不需要维护专用分配句柄表。 事实上,我们强烈建议不要使用专用句柄表,因为它们可能会在显示模式切换方案中过时或与 DirectX 图形内核子系统不同步,例如快速用户开关、热拔出电源等。

用户模式显示驱动程序将分配分配给资源或设备。 若要确定分配是否属于某个资源,显示微型端口驱动程序可以检查是否在 dxgkDdiCreateAllocationpCreateAllocation 参数指向的 DXGKARG_CREATEALLOCATION 结构的 Flags 成员中设置资源位字段标志。 如果分配属于某个资源,则显示微型端口驱动程序可以 (但不需要) 返回资源句柄,该句柄通常是指向描述资源的专用驱动程序数据结构的指针。 如果 DirectX 图形内核子系统调用 DxgkDdiCreateAllocation 为现有资源创建额外的分配,则 DXGKARG_CREATEALLOCATION 的 hResource 成员包含该资源的上一个 DxgkDdiCreateAllocation 调用返回的句柄。 如有必要,显示微型端口驱动程序可以在调用 DxgkDdiCreateAllocation 期间更改资源句柄。

如果用户模式显示驱动程序将资源句柄放置在命令缓冲区中,则显示微型端口驱动程序可以通过调用 DxgkCbGetHandleData 来检索专用数据。 显示微型端口驱动程序还可以通过调用 DxgkCbEnumHandleChildren 函数来枚举资源的所有子分配。

从 Windows 7 开始,如果显示微型端口驱动程序处理对 DxgkDdiCreateAllocation 函数的调用以创建 GDI 硬件加速的分配,则驱动程序应设置分配大小 (包括 CPU 可见分配的间距值) pCreateAllocation-pAllocationInfo-Size>>

DxgkDdiCreateAllocation 调用中创建的资源属于适配器,而不是设备。 显示微型端口驱动程序不应引用专用分配和资源数据结构中的任何位置的设备数据。 由于图面共享,在用户模式显示驱动程序从其创建资源的设备销毁后,资源可能正在使用中。

应使 DxgkDdiCreateAllocation 可分页。

分配历史记录缓冲区

从 Windows 8.1 开始,调用 DxgkDdiCreateAllocation 时,显示微型端口驱动程序可以设置DXGK_ALLOCATIONINFOFLAGSHistoryBuffer 成员,指示用户模式驱动程序可以管理历史记录缓冲区的创建和销毁。

要求

要求
最低受支持的客户端 Windows Vista
目标平台 桌面
标头 d3dkmddi.h
IRQL PASSIVE_LEVEL

另请参阅

DXGKARG_CREATEALLOCATION

DXGK_ALLOCATIONINFO

DXGK_ALLOCATIONINFOFLAGS

DxgkCbEnumHandleChildren

DxgkCbGetHandleData

DxgkDdiAddDevice

pfnAllocateCb