Store a bitmap of active hooks on the client side to try to avoid
server calls for hooks that are not set.
diff --git a/server/trace.c b/server/trace.c
index 65ee3e9..cd05668 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -1909,6 +1909,7 @@
fprintf( stderr, " time=%08x,", req->time );
fprintf( stderr, " info=%08x,", req->info );
fprintf( stderr, " hw_id=%08x,", req->hw_id );
+ fprintf( stderr, " active_hooks=%08x,", req->active_hooks );
fprintf( stderr, " total=%d,", req->total );
fprintf( stderr, " data=" );
dump_varargs_bytes( cur_size );
@@ -2542,7 +2543,8 @@
static void dump_set_hook_reply( const struct set_hook_reply *req )
{
- fprintf( stderr, " handle=%p", req->handle );
+ fprintf( stderr, " handle=%p,", req->handle );
+ fprintf( stderr, " active_hooks=%08x", req->active_hooks );
}
static void dump_remove_hook_request( const struct remove_hook_request *req )
@@ -2552,6 +2554,11 @@
fprintf( stderr, " proc=%p", req->proc );
}
+static void dump_remove_hook_reply( const struct remove_hook_reply *req )
+{
+ fprintf( stderr, " active_hooks=%08x", req->active_hooks );
+}
+
static void dump_start_hook_chain_request( const struct start_hook_chain_request *req )
{
fprintf( stderr, " id=%d,", req->id );
@@ -2568,6 +2575,7 @@
fprintf( stderr, " tid=%04x,", req->tid );
fprintf( stderr, " proc=%p,", req->proc );
fprintf( stderr, " unicode=%d,", req->unicode );
+ fprintf( stderr, " active_hooks=%08x,", req->active_hooks );
fprintf( stderr, " module=" );
dump_varargs_unicode_str( cur_size );
}
@@ -3161,7 +3169,7 @@
(dump_func)dump_set_caret_window_reply,
(dump_func)dump_set_caret_info_reply,
(dump_func)dump_set_hook_reply,
- (dump_func)0,
+ (dump_func)dump_remove_hook_reply,
(dump_func)dump_start_hook_chain_reply,
(dump_func)0,
(dump_func)dump_get_next_hook_reply,