Comment by quotemstr

13 years ago

You may be interested in http://mista.nu/research/mandt-win32k-slides.pdf

Thanks, I took a look at that... but it doesn't seem to quite explain what I meant. I was thinking more like, there's no need for SendMessage() to go from user->kernel->user, even when it's on the same thread. It could just do a system call to get the wndproc for the given window, then call the wndproc from user-mode directly.

Wouldn't that completely avoid needing to call back into user-mode from kernel mode?

  • It does this already when the window is on the same thread if no window hooks are installed. When the window is on a different thread, it is GetMessage or PeekMessage on the target thread that notices the sent message and does the user-mode callback to call the window procedure.