[User32|Win32k]
[reactos.git] / reactos / subsystems / win32 / win32k / include / hook.h
1 #pragma once
2
3 #define HOOK_THREAD_REFERENCED (0x1)
4 #define HOOKID_TO_INDEX(HookId) (HookId - WH_MINHOOK)
5 #define HOOKID_TO_FLAG(HookId) (1 << ((HookId) + 1))
6 #define ISITHOOKED(HookId) (((PTHREADINFO)PsGetCurrentThreadWin32Thread())->fsHooks & HOOKID_TO_FLAG(HookId))
7
8 typedef struct tagEVENTHOOK
9 {
10 THROBJHEAD head;
11 LIST_ENTRY Chain; /* Event chain entry */
12 UINT eventMin;
13 UINT eventMax;
14 DWORD idProcess;
15 DWORD idThread;
16 WINEVENTPROC Proc; /* Event function */
17 ULONG Flags; /* Some internal flags */
18 ULONG_PTR offPfn;
19 INT ihmod;
20 } EVENTHOOK, *PEVENTHOOK;
21
22 typedef struct tagEVENTTABLE
23 {
24 LIST_ENTRY Events;
25 UINT Counts;
26 } EVENTTABLE, *PEVENTTABLE;
27
28 typedef struct _NOTIFYEVENT
29 {
30 DWORD event;
31 LONG idObject;
32 LONG idChild;
33 DWORD flags;
34 } NOTIFYEVENT, *PNOTIFYEVENT;
35
36 LRESULT FASTCALL co_CallHook(INT HookId, INT Code, WPARAM wParam, LPARAM lParam);
37 LRESULT FASTCALL co_HOOK_CallHooks(INT HookId, INT Code, WPARAM wParam, LPARAM lParam);
38 LRESULT FASTCALL co_EVENT_CallEvents(DWORD, HWND, UINT_PTR, LONG_PTR);
39 VOID FASTCALL HOOK_DestroyThreadHooks(PETHREAD Thread);
40 VOID FASTCALL EVENT_DestroyThreadEvents(PETHREAD Thread);
41 PHOOK FASTCALL IntGetHookObject(HHOOK);
42 PHOOK FASTCALL IntGetNextHook(PHOOK Hook);
43 LRESULT FASTCALL UserCallNextHookEx( PHOOK pHook, int Code, WPARAM wParam, LPARAM lParam, BOOL Ansi);
44 BOOL FASTCALL IntUnhookWindowsHook(int,HOOKPROC);
45
46 /* EOF */