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,则忽略 HandleList 和 NumAllocations D3DDDICB_DEALLOCATE成员。
请注意,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) |