共用方式為


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,並在 HandleList 成員中填入陣列,D3DDDICB_DEALLOCATE的句柄,並填入要釋放的配置句柄
  • 在群組中,將 hResource 設定為要釋放其配置的資源句柄。 如果 hResource 為非NULL,則會忽略 HandleListNumAllocations 成員D3DDDICB_DEALLOCATE的成員。
請注意,如果使用者模式顯示驅動程式會將 hResource 設定為 NULL,並在 HandleList 中填入所有數位元素,以釋放所有配置,則驅動程式後續必須再次 呼叫 pfnDeallocateCb 函式,將 hResource 設定為資源的句柄,以只釋放資源。

請注意,pfnDeallocateCb 函式與使用者模式顯示驅動程式 DestroyResourceDestroyResource(D3D10) 函式不同。 不過,使用者模式顯示驅動程式通常會呼叫 pfnDeallocateCb ,以回應其 DestroyResourceDestroyResource(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)

另請參閱

D3DDDICB_DEALLOCATE

D3DDDI_DEVICECALLBACKS

DestroyResource

DestroyResource(D3D10)

pfnAllocateCb