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


Функция NtGdiDdCreateSurface

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

Прикрепляет поверхность к другой поверхности.

Синтаксис

DWORD APIENTRY NtGdiDdCreateSurface(
  _In_    HANDLE               hDirectDraw,
  _In_    HANDLE               *hSurface,
  _Inout_ DDSURFACEDESC        *puSurfaceDescription,
  _Inout_ DD_SURFACE_GLOBAL    *puSurfaceGlobalData,
  _Inout_ DD_SURFACE_LOCAL     *puSurfaceLocalData,
  _Inout_ DD_SURFACE_MORE      *puSurfaceMoreData,
  _Inout_ DD_CREATESURFACEDATA *puCreateSurfaceData,
  _Out_   HANDLE               *puhSurface
);

Параметры

hDirectDraw [in]

Дескриптор структуры DD_DIRECTDRAW_GLOBAL , представляющей драйвер.

hSurface [in]

Предыдущий дескриптор на той же поверхности. Используется, если поверхность создается повторно после переключения режима.

puSurfaceDescription [in, out]

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

puSurfaceGlobalData [in, out]

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

puSurfaceLocalData [in, out]

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

puSurfaceMoreData [in, out]

Указатель на структуру DD_SURFACE_MORE , которая содержит дополнительные локальные данные поверхности.

puCreateSurfaceData [in, out]

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

puhSurface [out]

Используется API DirectDraw и не должен заполняться драйвером.

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

NtGdiDdCreateSurface возвращает один из следующих кодов обратного вызова.

Код возврата Описание
DDHAL_DRIVER_HANDLED
Драйвер выполнил операцию и вернул допустимый код возврата для этой операции. Если этот код DD_OK, DirectDraw или Direct3D продолжает работу с функцией . В противном случае DirectDraw или Direct3D возвращает код ошибки, предоставленный драйвером, и прерывает функцию.
DDHAL_DRIVER_NOTHANDLED
Драйвер не имеет комментариев к запрошенной операции. Если драйвер должен реализовать определенный обратный вызов, DirectDraw или Direct3D сообщает об ошибке. В противном случае DirectDraw или Direct3D обрабатывает операцию так, как если бы обратный вызов драйвера не был определен путем выполнения аппаратной реализации DirectDraw или Direct3D.

 

Комментарии

Рекомендуется, чтобы приложение вызывало метод IDirectDraw7::CreateSurface вместо использования этой функции.

При создании цепочки присоединенных поверхностей, таких как цепочка буферов, цепочка или MIP-карты, для каждой поверхности сначала следует вызывать NtGdiDdCreateSurfaceObject . Затем вызовите NtGdiDdAttachSurface , чтобы присоединить их. Наконец, вызовите NtGdiDdCreateSurface только для первой поверхности в цепочке. В этом случае hSurface будет дескриптором, возвращенным NtGdiDdCreateSurfaceObject для первой поверхности в цепочке.

NtGdiDdCreateSurface следует вызывать только для создания поверхностей в локальной и нелокционной видеопамяти. Его никогда не следует вызывать для создания поверхностей системной памяти. Чтобы создать поверхности системной памяти, используйте вместо него NtGdiDdCreateSurfaceObject .

Требования

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

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

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