PFND3DDDI_UNLOCKASYNC コールバック関数 (d3dumddi.h)
UnlockAsync 関数は、LockAsync 関数が以前にロックしたリソースまたはリソース内のサーフェスのロックを解除します。
構文
PFND3DDDI_UNLOCKASYNC Pfnd3dddiUnlockasync;
HRESULT Pfnd3dddiUnlockasync(
HANDLE hDevice,
const D3DDDIARG_UNLOCKASYNC *unnamedParam2
)
{...}
パラメーター
hDevice
ディスプレイ デバイスへのハンドル (つまり、グラフィックス コンテキスト)。
unnamedParam2
pData [in]
ロックを解除するリソースまたはリソース内のサーフェスを記述する D3DDDIARG_UNLOCKASYNC 構造体へのポインター。
戻り値
UnlockAsync は、次のいずれかの値を返します。
リターン コード | 説明 |
---|---|
S_OK | リソースのロックが正常に解除されました。 |
E_OUTOFMEMORY | UnlockAsync は、完了するために必要なメモリを割り当てませんでした。 |
E_INVALIDARG | D3DDDIARG_UNLOCKASYNC記述されているリソースは、ドライバーの LockAsync 関数の以前の呼び出しによってロックされませんでした。 |
注釈
ユーザー モードのディスプレイ ドライバーは、UnlockAsync 関数が呼び出された後、適切な割り当てハンドルを使用して pfnUnlockCb 関数を呼び出す必要があります。
ユーザー モードのディスプレイ ドライバーは、必要に応じて UnlockAsync を実装します。Microsoft Direct3D ランタイムは、ドライバーが LockAsync、UnlockAsync、および Rename 関数を実装している場合にのみ UnlockAsync を呼び出します。
LockAsync と同様に、UnlockAsync は メイン アプリケーション スレッドで呼び出されますが、ユーザー モード ディスプレイ ドライバー関数に対する他のほとんどの呼び出しはワーカー スレッド (複数プロセッサ コンピューター) で行われます。
ユーザー モードのディスプレイ ドライバーが DDI バージョンの 0x0000000B 以上を公開している場合 (ドライバーは、ドライバーの OpenAdapter 関数の呼び出しで、D3D10DDIARG_OPENADAPTER構造体の DriverVersion メンバーでこの値を返します)、Direct3D ランタイムは再入可能な方法で UnlockAsync を呼び出します。 ランタイムが再入可能な方法で UnlockAsync を呼び出すと、あるスレッドが UnlockAsync 内で実行され、同じディスプレイ デバイスを参照する別のスレッドが別のユーザー モード ディスプレイ ドライバー関数内で実行されます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。 |
対象プラットフォーム | デスクトップ |
Header | d3dumddi.h (D3dumddi.h を含む) |