ChangeWindowMessageFilterEx 関数 (winuser.h)
指定したウィンドウのユーザー インターフェイス特権分離 (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 によってメッセージを受信できます。 |
|
メッセージが、ChangeWindowMessageFilter 関数またはグローバルに使用してプロセス全体で許可されていない限り、低い特権のプロセスから来た場合に hWnd に配信されるメッセージをブロックします。 |
|
hWnd のウィンドウ メッセージ フィルターを既定値にリセットします。 グローバルまたはプロセス全体で許可されたメッセージはすべて通過しますが、これら 2 つのカテゴリに含まれていないメッセージ (低い特権のプロセスに由来) はすべてブロックされます。 |
[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 |
ヘッダー | winuser.h (Windows.h を含む) |
Library | User32.lib |
[DLL] | User32.dll |
API セット | ext-ms-win-ntuser-gui-l1-3-0 (Windows 10 バージョン 10.0.10240 で導入) |
こちらもご覧ください
概念
リファレンス