← Back to context

Comment by wfunction

13 years ago

Hmm... yeah, that does sound very similar.

Why does Windows need kernel-to-user callbacks in the first place then? Now I'm thinking it shouldn't even be necessary at all...

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.