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) 関数とは異なります。 ただし、ユーザー モードディスプレイ ドライバーは通常、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 を含む) |