INF: Calling SendMessage() Inside a Hook Filter Function

ID Number: Q74857

3.00

WINDOWS

Summary:

A hook filter function should not call SendMessage() to pass intertask

messages because this behavior can create a deadlock condition in

Windows. If a hook filter function is called as a result of an

intertask SendMessage(), and if the hook function then yields control

with an intertask SendMessage(), a message deadlock condition may

occur. For this reason, hook filters should use PostMessage() rather

than SendMessage to pass messages to other applications.

Note that a hook filter can use SendMessage() to pass a message to the

current task because this will not yield the control.

Section 1.1.5 of the "Microsoft Windows Software Development Kit

Reference Volume 1" has more information on message deadlocks.