Функция 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

Выполняемое действие может принимать одно из следующих значений:

Значение Значение
MSGFLT_ALLOW
1
Разрешает сообщение через фильтр. Это позволяет hWnd получать сообщение, независимо от источника сообщения, даже из процесса с более низким уровнем привилегий.
MSGFLT_DISALLOW
2
Блокирует доставку сообщения в hWnd , если оно поступает из процесса с более низким уровнем привилегий, если сообщение не разрешено для всего процесса с помощью функции ChangeWindowMessageFilter или глобально.
MSGFLT_RESET
0
Сбрасывает фильтр сообщений окна для 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)

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

ChangeWindowMessageFilter

Основные понятия

Справочные материалы

Windows