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


Функция NtGdiDdResetVisrgn

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

Используется для включения пользовательского режима для получения достоверного представления о области обрезки для окон на рабочем столе. Эта обрезка может асинхронно изменяться с точки зрения потоков пользовательского режима.

Синтаксис

BOOL APIENTRY NtGdiDdResetVisrgn(
  _In_ HANDLE hSurface,
  _In_ HWND   hwnd
);

Параметры

hSurface [in]

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

hwnd [in]

Зарезервировано.

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

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

Комментарии

Обрезка может асинхронно изменяться с точки зрения потоков пользовательского режима. Части в режиме ядра DirectDraw и интерфейса графических устройств Windows (GDI) поддерживают счетчик, который увеличивается при каждом изменении списка обрезки для всего рабочего стола. Вызов этой функции записывает этот счетчик с каждой существующей основной поверхностью DirectDraw в системе.

В любое время, когда одна из этих основных поверхностей изменяется операцией IDirectDrawSurface7::Blt или IDirectDrawSurface7::Lock (см. документацию по DDK), счетчик, записанный в surface, сравнивается с глобальным счетчиком. Если эти значения отличаются, код ошибки DDERR_VISRGNCHANGED возвращается в код пользовательского режима. Затем код пользовательского режима повторно запрашивает текущую обрезку для рабочего стола, вызывает NtGdiDdResetVisrgn и повторно пытается применить IDirectDrawSurface7::Blt к основной поверхности, учитывая новую обрезку. В конечном итоге вырезка, которая была выборка в коде пользовательского режима, будет совпадать с текущей обрезкой, принадлежащей режиму ядра, и IDirectDrawSurface7::Blt будет разрешено продолжить.

Приложениям рекомендуется использовать интерфейс IDirectDrawClipper или метод IDirect3DDevice8::P resent для обработки изменений асинхронной обрезки. Эти конструкции реализуют асинхронную обрезку автоматизированным и независимым от операционной системы способом.

Требования

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

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

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

DdResetVisrgn