PFND3DDDI_SETPRIORITYCB回调函数 (d3dumddi.h)

pfnSetPriorityCb 函数设置资源或分配列表的优先级。

语法

PFND3DDDI_SETPRIORITYCB Pfnd3dddiSetprioritycb;

HRESULT Pfnd3dddiSetprioritycb(
  HANDLE hDevice,
  D3DDDICB_SETPRIORITY *unnamedParam2
)
{...}

参数

hDevice

显示设备的句柄 (图形上下文) 。

unnamedParam2

pData [in]

指向 D3DDDICB_SETPRIORITY 结构的指针,该结构描述要设置的资源或分配列表的优先级。

返回值

pfnSetPriorityCb 返回以下值之一:

返回代码 说明
S_OK 已成功设置优先级。
E_INVALIDARG 参数已验证并确定为不正确。

此函数还可能返回其他 HRESULT 值。

注解

用户模式显示驱动程序可以调用 pfnSetPriorityCb 函数来设置基础资源或分配列表的优先级。 如果设置了资源的优先级,则属于该资源的所有分配都设置为指定的优先级。 通常,在 Microsoft Direct3D 运行时调用用户模式显示驱动程序的 SetPrioritySetResourcePriorityDXGI 函数以设置资源的逐出内存优先级后,用户模式显示驱动程序会设置资源或分配列表的优先级。 但是,用户模式显示驱动程序可以随时设置分配的优先级。

应用程序请求设置图面的优先级后,用户模式显示驱动程序应将相应的资源或分配列表设置为应用程序指定的优先级。

注意 优先级只是对视频内存管理器的提示;在各种条件下,内存管理器可以忽略它们。
 
分配优先级定义分配保持驻留的可能性,以及视频内存管理器尝试遵循驱动程序对分配放置的首选项的难度的可能性。 以下优先级在 D3dukmdt.h 头文件中定义:

驱动程序可以在适当时使用前面定义的值以外的优先级。 例如,将优先级为0x78000001的分配表示分配略高于正常水平。

示例

下面的代码示例演示如何设置优先级。

HRESULT CD3DContext::SetPriority(CONST D3DDDIARG_SETPRIORITY* pSetPriority) {
    DWORD  dwSurfaceHandle = (DWORD)(DWORD_PTR)pSetPriority->hResource;
    CResource   &res = m_RTbl[dwSurfaceHandle];
    D3DDDICB_SETPRIORITY    setPri;
    UINT                    priority;

    priority = pSetPriority->Priority;

    memset(&setPri, 0, sizeof(setPri));

    setPri.hResource   = res.m_hResRuntime;
    setPri.pPriorities = &priority;

    return (m_d3dCallbacks.pfnSetPriorityCb(m_hD3D, &setPri));
}

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 操作系统中可用。
目标平台 桌面
标头 d3dumddi.h (包括 D3dumddi.h)

另请参阅

D3DDDICB_SETPRIORITY

D3DDDI_DEVICECALLBACKS

DxgkCbCreateContextAllocation

SetPriority

SetResourcePriorityDXGI