次の方法で共有


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 を設定します。 hResourceNULL 以外の場合、D3DDDICB_DEALLOCATEの HandleList メンバーと NumAllocations メンバーは無視されます。
ユーザー モードディスプレイ ドライバーが hResourceNULL に設定し、 HandleList 内のすべての配列要素を設定してすべての割り当てを解放する場合、その後、ドライバーは pfnDeallocateCb 関数を再度呼び出して、リソースへのハンドルに hResource を設定することによってのみリソースを解放する必要があることに注意してください。

pfnDeallocateCb 関数は、ユーザー モードディスプレイ ドライバーの DestroyResource または DestroyResource(D3D10) 関数とは異なります。 ただし、ユーザー モードディスプレイ ドライバーは通常、DestroyResource または DestroyResource(D3D10) 関数の呼び出しに応答して pfnDeallocateCb を呼び出します。

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 オペレーティング システムで使用できます。
対象プラットフォーム デスクトップ
Header d3dumddi.h (D3dumddi.h を含む)

こちらもご覧ください

D3DDDICB_DEALLOCATE

D3DDDI_DEVICECALLBACKS

DestroyResource

DestroyResource(D3D10)

pfnAllocateCb