PFND3DDDI_CREATEOVERLAYCB コールバック関数 (d3dumddi.h)
pfnCreateOverlayCb 関数は、カーネル モードオーバーレイ オブジェクトを作成し、オーバーレイを表示するディスプレイ ミニポート ドライバーを呼び出します。
構文
PFND3DDDI_CREATEOVERLAYCB Pfnd3dddiCreateoverlaycb;
HRESULT Pfnd3dddiCreateoverlaycb(
HANDLE hDevice,
D3DDDICB_CREATEOVERLAY *unnamedParam2
)
{...}
パラメーター
hDevice
ディスプレイ デバイスへのハンドル (グラフィックス コンテキスト)。
unnamedParam2
pData [in, out]
作成するオーバーレイを記述する D3DDDICB_CREATEOVERLAY 構造体へのポインター。
戻り値
pfnCreateOverlayCb は、次のいずれかの値を返します。
リターン コード | 形容 |
---|---|
S_OK | オーバーレイ オブジェクトが正常に作成されました。 |
D3DDDIERR_NOTAVAILABLE | オーバーレイ ハードウェアまたは帯域幅がないため、pfnCreateOverlayCb が失敗しました。 |
E_INVALIDARG | パラメーターが検証され、正しくないと判断されました。 |
E_OUTOFMEMORY | pfnCreateOverlayCb は、完了するために必要なメモリを割り当てませんでした。 |
この関数は、他の HRESULT 値を返す場合もあります。
備考
pfnCreateOverlayCb 関数は、pData が指す D3DDDICB_CREATEOVERLAY 構造体の hKernelOverlay メンバー内の新しく作成されたカーネル モード オーバーレイ オブジェクトハンドルを返します。 ユーザー モードのディスプレイ ドライバーは、次の関数の呼び出しでこのハンドルを渡します。
次のコード例は、オーバーレイ オブジェクトを作成する方法を示しています。D3DKMT_HANDLE g_hOverlay = NULL;
HRESULT CD3DContext::CreateOverlay(D3DDDIARG_CREATEOVERLAY* pCreateOverlay) {
D3DDDICB_CREATEOVERLAY CreateCB;
DWORD_PTR dwResource = (DWORD_PTR) pCreateOverlay->OverlayInfo.hResource;
dwResource += pCreateOverlay->OverlayInfo.SubResourceIndex;
LONG dwTempPitch;
pCreateOverlay->hOverlay = (HANDLE) 0x27;
CreateCB.VidPnSourceId = 0;
CreateCB.OverlayInfo.hAllocation = R200GetAllocationHandle(m_pR200Ctx,
(DWORD)dwResource,
&dwTempPitch);
CreateCB.OverlayInfo.DstRect.left = pCreateOverlay->OverlayInfo.DstRect.left;
CreateCB.OverlayInfo.DstRect.right = pCreateOverlay->OverlayInfo.DstRect.right;
CreateCB.OverlayInfo.DstRect.top = pCreateOverlay->OverlayInfo.DstRect.top;
CreateCB.OverlayInfo.DstRect.bottom = pCreateOverlay->OverlayInfo.DstRect.bottom;
CreateCB.OverlayInfo.SrcRect.left = pCreateOverlay->OverlayInfo.SrcRect.left;
CreateCB.OverlayInfo.SrcRect.right = pCreateOverlay->OverlayInfo.SrcRect.right;
CreateCB.OverlayInfo.SrcRect.top = pCreateOverlay->OverlayInfo.SrcRect.top;
CreateCB.OverlayInfo.SrcRect.bottom = pCreateOverlay->OverlayInfo.SrcRect.bottom;
CreateCB.OverlayInfo.pPrivateDriverData = "This is a test";
CreateCB.OverlayInfo.PrivateDriverDataSize = 10;
HRESULT hr = m_d3dCallbacks.pfnCreateOverlayCb(m_hD3D, &CreateCB);
if (SUCCEEDED(hr)) {
g_hOverlay = CreateCB.hKernelOverlay;
}
return hr;
}
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。 |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | d3dumddi.h (D3dumddi.h を含む) |
関連項目
pfnDestroyOverlayCb の
pfnFlipOverlayCb を する
pfnUpdateOverlayCb の