Intercepting GDI calls

Jui-Hao Chiang windtracekimo at
Fri Feb 12 00:11:20 CST 2010

Hi, all:

I am currently starting a project which tries to run a window
application on one (source) machine, and display on another
(destination) machine. Of course, the VNC or X11 forwarding technique
can achieve the same goal, but I am trying to reduce the bandwidth by
"not" transferring the video frame buffer but transfer the GDI
function calls instead.

The way I can see is try to intercept all the calls inside gdi32.dll,
and forward the calls and parameters to remote machine by using some
RPC library, and then replay the GDI calls on the destination machine.

However, I have two doubts:
(1) It seems like the user32.dll is actually handling the window,
menu, and cursor. Does the drawing of menu and cursor depends on
user-level gdi32.dll? or other kernel-level dlls?
(2) It seems that there is no corresponding win32k.sys implementation
in wine, and the user-level GDI calls seems to be forwarded to
winex11.drv, right?

I wander is there any good way or a place inside the source to do this
kind of interception?
Appreciate any suggestions,

More information about the wine-devel mailing list