PFND3DDDI_DEALLOCATECB回调函数 (d3dumddi.h)
如果创建了资源对象, pfnDeallocateCb 回调函数会释放分配或内核模式资源对象。
语法
PFND3DDDI_DEALLOCATECB Pfnd3dddiDeallocatecb;
HRESULT Pfnd3dddiDeallocatecb(
HANDLE hDevice,
const D3DDDICB_DEALLOCATE *unnamedParam2
)
{...}
参数
hDevice
显示设备的句柄 (图形上下文) 。
unnamedParam2
pData [in]
指向描述要发布的资源的 D3DDDICB_DEALLOCATE 结构的指针。
返回值
pfnDeallocateCb 返回以下值之一:
返回代码 | 说明 |
---|---|
S_OK | 已成功释放内存。 |
E_INVALIDARG | 参数已验证并确定为不正确。 |
此函数还可能返回其他 HRESULT 值。
注解
用户模式显示驱动程序可以通过以下方式释放分配:
- 单独通过将 pData 指向的 D3DDDICB_DEALLOCATE 结构的 hResource 成员设置为 NULL,并使用要释放的分配句柄填充 D3DDDICB_DEALLOCATE 的 HandleList 成员中的数组
- 在组中,通过将 hResource 设置为要释放其分配的资源句柄。 如果 hResource 为非 NULL,则忽略 D3DDDICB_DEALLOCATE 的 HandleList 和 NumAllocations 成员。
请注意, pfnDeallocateCb 函数不同于用户模式显示驱动程序的 DestroyResource 或 DestroyResource (D3D10) 函数。 但是,用户模式显示驱动程序通常调用 pfnDeallocateCb ,以响应对其 DestroyResource 或 DestroyResource (D3D10) 函数的调用。
Direct3D 版本 9 注意: 有关创建和销毁资源的详细信息,请参阅 处理资源创建和销毁。
Direct3D 版本 11 注意: 有关驱动程序如何调用 pfnDeallocateCb 的详细信息,请参阅 Direct3D 10 中的更改。
下面的代码示例演示如何释放资源。
D3DDDICB_DEALLOCATE deAllocCB;
HRESULT hr;
D3DKMT_HANDLE hKMAllocHandle;
memset(&deAllocCB, 0, sizeof(deAllocCB));
deAllocCB.hResource = m_hCurResRuntime;
hr = m_d3dCallbacks.pfnDeallocateCb(m_hD3D, &deAllocCB);
if ((m_hCurResRuntime) && (SUCCEEDED(hr))) {
m_bCurResFreed = TRUE;
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows Vista 和更高版本的 Windows 操作系统中可用。 |
目标平台 | 桌面 |
标头 | d3dumddi.h (包括 D3dumddi.h) |