Release 940420
[wine.git] / include / hook.h
blob94f23f894195d9de676dd51c551562299ed98b9e
1 /*
2 * Windows hook definitions
4 * Copyright 1994 Alexandre Julliard
5 */
7 #ifndef HOOK_H
8 #define HOOK_H
10 #include "windows.h"
11 #include "user.h"
13 /* Hook data (pointed to by a HHOOK) */
14 typedef struct
16 HHOOK next; /* Next hook in chain */
17 HOOKPROC proc; /* Hook procedure */
18 short id; /* Hook id (WH_???) */
19 HTASK htask; /* Task owning this hook */
20 } HOOKDATA;
23 #define FIRST_HOOK WH_MSGFILTER
24 #define LAST_HOOK WH_SHELL
26 #define SYSTEM_HOOK(id) (systemHooks[(id)-FIRST_HOOK])
27 #define TASK_HOOK(id) (taskHooks[(id)-FIRST_HOOK])
28 #define INTERNAL_CALL_HOOK(hhook,code,wparam,lparam) \
29 ((hhook) ? CallHookProc(((HOOKDATA*)(hhook))->proc,code,wparam,lparam) : 0)
31 #define CALL_SYSTEM_HOOK(id,code,wparam,lparam) \
32 INTERNAL_CALL_HOOK(SYSTEM_HOOK(id),code,wparam,lparam)
33 #define CALL_TASK_HOOK(id,code,wparam,lparam) \
34 INTERNAL_CALL_HOOK(TASK_HOOK(id),code,wparam,lparam)
36 extern DWORD CallHookProc( HOOKPROC func, short code,
37 WPARAM wParam, LPARAM lParam ); /* callback.c */
39 extern HHOOK systemHooks[];
40 extern HHOOK taskHooks[];
42 #endif /* HOOK_H */