Description
The main purpose of the WH_DEBUG hook, as its
name
implies, is for debugging
other hooks. When you install this hook, it intercepts the call to an
installed hook’s filter function before the call is actually
made. For the sake of simplicity, I will refer to the hook that is
being debugged as the target hook. Figure 21-1
illustrates the relationship of the WH_DEBUG hook
to the operating system and the target hook.

Figure 21-1. The WH_DEBUG hook is called before the target hook
You can install this hook as a thread-specific
hook
in a Visual Basic (VB) application, or you can install it as a
system-wide hook in a Win32 dynamic link library (DLL). When you
install it as a thread-specific hook, the system will call it before
calling any installed hook filter functions within that specific
thread. As a note, the WH_DEBUG hook will not
intercept messages sent to the WH_MOUSE_LL and
WH_KEYBOARD_LL hook filter functions, since these
low-level hook filter functions are called earlier in the messaging
system. When you install the WH_DEBUG hook as a
system-wide hook, the system will call it before calling any
installed hook filter functions within the system, once again
excluding all WH_MOUSE_LL and
WH_KEYBOARD_LL hooks.
As you can see, any installed filter functions
for
the WH_DEBUG hook are always called before calling any other hook’s filter function. If several hooks are installed ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access