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 ...
Get Subclassing and Hooking with Visual Basic now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.