Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция 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 возвращает дескриптор созданному объекту наложения в режиме ядра в элементе hKernelOverlay структуры D3DDDICB_CREATEOVERLAY, на которую указывает pData. Драйвер отображения в пользовательском режиме передает этот дескриптор в вызовах следующих функций:
В следующем примере кода показано, как создать объект наложения.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 (include D3dumddi.h) |