Функция ChangeWindowMessageFilterEx (winuser.h)
Изменяет фильтр сообщений пользовательского интерфейса Privilege Isolation (UIPI) для указанного окна.
Синтаксис
BOOL ChangeWindowMessageFilterEx(
[in] HWND hwnd,
[in] UINT message,
[in] DWORD action,
[in, out, optional] PCHANGEFILTERSTRUCT pChangeFilterStruct
);
Параметры
[in] hwnd
Тип: HWND
Дескриптор для окна, фильтр сообщений uiPI которого требуется изменить.
[in] message
Тип: UINT
Сообщение, которое фильтр сообщений разрешает или блокирует.
[in] action
Тип: DWORD
Выполняемое действие может принимать одно из следующих значений:
Значение | Значение |
---|---|
|
Разрешает сообщение через фильтр. Это позволяет hWnd получать сообщение, независимо от источника сообщения, даже из процесса с более низким уровнем привилегий. |
|
Блокирует доставку сообщения в hWnd , если оно поступает из процесса с более низким уровнем привилегий, если сообщение не разрешено для всего процесса с помощью функции ChangeWindowMessageFilter или глобально. |
|
Сбрасывает фильтр сообщений окна для hWnd до значения по умолчанию. Любое сообщение, разрешенное глобально или на уровне процесса, будет получено, но все сообщения, не включенные в эти две категории и поступающие от процесса с более низким уровнем привилегий, будут заблокированы. |
[in, out, optional] pChangeFilterStruct
Тип: PCHANGEFILTERSTRUCT
Необязательный указатель на структуру CHANGEFILTERSTRUCT .
Возвращаемое значение
Тип: BOOL
Если функция выполнена успешно, она возвращает значение TRUE; в противном случае возвращается значение FALSE. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
UIPI — это функция безопасности, которая предотвращает получение сообщений от отправителя с низким уровнем целостности. Эту функцию можно использовать, чтобы разрешить доставку определенных сообщений в окно, даже если сообщение поступает из процесса на более низком уровне целостности. В отличие от функции ChangeWindowMessageFilter , которая управляет фильтром сообщений процесса, функция ChangeWindowMessageFilterEx управляет фильтром сообщений окна.
Приложение может использовать функцию ChangeWindowMessageFilter , чтобы разрешить или заблокировать сообщение на уровне всего процесса. Если сообщение разрешено фильтром сообщений процесса или фильтром сообщений окна, оно будет доставлено в окно.
Обратите внимание, что процессам в SECURITY_MANDATORY_LOW_RID или ниже не разрешено изменять фильтр сообщений. Если эти процессы вызывают эту функцию, произойдет сбой и будет создан расширенный код ошибки , ERROR_ACCESS_DENIED.
Некоторые сообщения, значение которых меньше WM_USER , должны передаваться через фильтр независимо от параметра фильтра. При попытке использовать эту функцию для разрешения или блокировки таких сообщений эффект не будет.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Целевая платформа | Windows |
Header | winuser.h (включая Windows.h) |
Библиотека | User32.lib |
DLL | User32.dll |
Набор API | ext-ms-win-ntuser-gui-l1-3-0 (представлен в Windows 10 версии 10.0.10240) |
См. также раздел
Основные понятия
Справочные материалы