PFND3DDDI_CREATEOVERLAYCB função de retorno de chamada (d3dumddi.h)
A função pfnCreateOverlayCb cria um objeto de sobreposição no modo kernel e chama o driver de miniporto de exibição para exibir a sobreposição.
Sintaxe
PFND3DDDI_CREATEOVERLAYCB Pfnd3dddiCreateoverlaycb;
HRESULT Pfnd3dddiCreateoverlaycb(
HANDLE hDevice,
D3DDDICB_CREATEOVERLAY *unnamedParam2
)
{...}
Parâmetros
hDevice
Um identificador para o dispositivo de exibição (contexto gráfico).
unnamedParam2
pData [in, out]
Um ponteiro para uma estrutura D3DDDICB_CREATEOVERLAY que descreve a sobreposição a ser criada.
Retornar valor
pfnCreateOverlayCb retorna um dos seguintes valores:
Código de retorno | Descrição |
---|---|
S_OK | O objeto de sobreposição foi criado com êxito. |
D3DDDIERR_NOTAVAILABLE | pfnCreateOverlayCb falhou devido à falta de hardware de sobreposição ou largura de banda. |
E_INVALIDARG | Os parâmetros foram validados e determinados como incorretos. |
E_OUTOFMEMORY | pfnCreateOverlayCb não pôde alocar memória necessária para que ela fosse concluída. |
Essa função também pode retornar outros valores HRESULT.
Comentários
A função pfnCreateOverlayCb retorna um identificador para o objeto de sobreposição do modo kernel recém-criado no membro hKernelOverlay da estrutura D3DDDICB_CREATEOVERLAY apontada pelo pData. O driver de exibição do modo de usuário passa esse identificador em chamadas para as seguintes funções:
O exemplo de código a seguir mostra como criar um objeto de sobreposição.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;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows. |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | d3dumddi.h (inclua D3dumddi.h) |