Поделиться через


Функция NtGdiDdQueryDirectDrawObject

[Эта функция может изменяться с каждой редакцией операционной системы. Вместо этого используйте DirectDraw и Microsoft Direct3DAPis; эти API изолируют приложения от таких изменений операционной системы и скрывают многие другие трудности, связанные с взаимодействием непосредственно с драйверами дисплея.]

Запрашивает ранее созданное представление объекта Microsoft DirectDraw в режиме ядра для его возможностей.

Синтаксис

BOOL APIENTRY NtGdiDdQueryDirectDrawObject(
  _In_  HANDLE                      hDirectDrawLocal,
  _Out_ DD_HALINFO                  *pHalInfo,
        DWORD                       *pCallBackFlags,
  _Out_ LPD3DNTHAL_CALLBACKS        puD3dCallbacks,
  _Out_ LPD3DNTHAL_GLOBALDRIVERDATA puD3dDriverData,
  _Out_ PDD_D3DBUFCALLBACKS         puD3dBufferCallbacks,
  _Out_ LPDDSURFACEDESC             puD3dTextureFormats,
  _Out_ DWORD                       *puNumHeaps,
  _Out_ VIDEOMEMORY                 *puvmList,
  _Out_ DWORD                       *puNumFourCC,
  _Out_ DWORD                       *puFourCC
);

Параметры

hDirectDrawLocal [in]

Дескриптор ранее созданного устройства DirectDraw в режиме ядра.

pHalInfo [out]

Указатель на DD_HALINFO структуру, которая будет заполнена возможностями устройства. Дополнительные сведения см. в документации по DDK.

pCallBackFlags

Указатель на предоставленный вызывающим объектом буфер, в котором хранятся флаги обратного вызова, сообщаемые драйвером. Буфер должен иметь размер 3*sizeof(DWORD) и хранить флаги обратного вызова в следующем порядке: pCallBackFlags[0] для флагов в DD_CALLBACKS, pCallBackFlags[1] для флагов в DD_SURFACECALLBACKS и pCallBackFlags[2] для флагов в DD_PALETTECALLBACKS. Дополнительные сведения см. в документации по DDK.

puD3dCallbacks [out]

Указатель на таблицу указателей обратного вызова Direct3D. Таблица заполнена указателями на функции в Gdi32.dll, имитирующие драйвер дисплея Direct3D. Эта таблица обратных вызовов идентична структуре D3DHAL_D3DCALLBACKS, описанной в документации по DDK.

puD3dDriverData [out]

Указатель на D3DHAL_GLOBALDRIVERDATA данные, как описано в документации по DDK.

puD3dBufferCallbacks [out]

Указатель на таблицу указателей обратного вызова. Таблица заполнена указателями на функции в Gdi32.dll, имитирующие драйвер дисплея Direct3D. Эта таблица обратных вызовов идентична структуре DDHAL_DDEXEBUFCALLBACKS, которая соответствует структуре DD_D3DBUFCALLBACKS , описанной в документации по DDK, за исключением того, что элементы XxxD3DBuffer в DD_D3DBUFCALLBACKS заменяются xxxExecuteBuffer в DDHAL_DDEXEBUFCALLBACKS.

puD3dTextureFormats [out]

Указатель на массив структур DDSURFACEDESC , определяющих набор допустимых форматов текстур.

puNumHeaps [out]

Указатель на член dwNumHeapsDD_HALINFO. vmiData. Член dwNumHeaps указывает количество кучи памяти в puvmList. Дополнительные сведения см. в документации по DDK.

puvmList [out]

Указатель на список дескрипторов кучи видеопамять. Может иметь значение NULL. Этот параметр не используется, так как управление видеопамяти полностью обрабатывается в режиме ядра.

puNumFourCC [out]

Указатель на элемент puNumFourCCCodesDD_HALINFO. ddCaps. Член puNumFourCCCodes указывает количество кодов FOURCC , поддерживаемых драйвером. Дополнительные сведения см. в документации по DDK.

puFourCC [out]

Указатель на список поддерживаемых форматов поверхностей четырехсимвого кода (FOURCC). Может иметь значение NULL.

Возвращаемое значение

В случае успешного выполнения эта функция возвращает значение TRUE; В противном случае возвращается значение FALSE.

Комментарии

Вызов этой функции предназначен для выполнения в двухэтапном процессе. На первом шаге puFourCC, puvmList и puD3dTextureFormats должны иметь значение NULL, а DdQueryDirectDrawObject заполнит DD_HALINFO. ddCaps. dwNumFourCCCodes, DD_HALINFO. vmiData. dwNumHeaps и D3DHAL_GLOBALDRIVERDATA. dwNumTextureFormats с количеством возвращаемых записей. Во втором вызове вызывающий объект должен выделить массивы указанного размера и передать эти указатели вместо значений NULL в параметрах puFourCC, puvmList и puD3dTextureFormats . Затем массивы будут заполнены соответствующими данными.

Приложениям рекомендуется использовать API DirectDraw и Direct3D для создания объектов графических устройств и управления ими. Эти конструкции абстрагируют процесс создания устройства упрощенным и независимым от операционной системы способом.

Требования

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows 2000 Server [только классические приложения]
Заголовок
Ntgdi.h

См. также раздел

Поддержка клиентов нижнего уровня графики

DdQueryDirectDrawObject

NtGdiDdCreateDirectDrawObject