Функция 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 [только классические приложения] |
Заголовок |
|
См. также раздел