[vbox-dev] Question regarding channel callbacks between guest and host

Michael Thayer michael.thayer at oracle.com
Thu Apr 24 14:00:00 GMT 2014


Hello Jaeyong,

On 24/04/14 15:18, Jaeyong Yoo wrote:
> While I'm reading the source, I found the following sequence of
> function call:
>
> [In xpdm directory] VBoxMPHGSMIDpc () -->
>                               VBoxHGSMIProcessHostQueue ()  -->
>                               hgsmiHostCommandQueryProcess() -->
>                               hgsmiHostCmdProcess () -->
>                               HGSMIBufferProcess () -->
>                               hgsmiBufferProcess () -->
>                               HGSMIChannelHandlerCall ()  -->
>                               pfnHandler()   ==
> [Host side]             vbvaChannelHandler
>
> It looks like a guest-side function (in VGA driver) VBoxMPHGSMIDpc
> calls the host-side function (in VGA emulator) vbvaChannelHandler.
> How is this possible since host and guest are in different address
> space (if we are using nested paging table)? Or, I'm feeling like I
> miss something.

I'm not too familiar with that code, but what makes you think that 
pfnHandler points to vbvaChannelHandler() inside the guest driver?  See 
line 626 of 
src/VBox/Additions/WINNT/Graphics/Video/mp/xpdm/VBoxMPInternal.cpp:

   rc = HGSMIChannelRegister(&pCommon->hostCtx.channels, u8Channel,
                             "VGA Miniport HGSMI channel",
                             VBoxVbvaChannelGenericHandlerCB,
                             pContexts, &s_OldHandler);

So I would guess that VBoxVbvaChannelGenericHandlerCB() is what is being 
called.  In any case there should be no direct calls from the guest to 
the host address space.

Regards,

Michael
-- 
ORACLE Deutschland B.V. & Co. KG   Michael Thayer
Werkstrasse 24                     VirtualBox engineering
71384 Weinstadt, Germany           mailto:michael.thayer at oracle.com

Hauptverwaltung: Riesstr. 25, D-80992 München
Registergericht: Amtsgericht München, HRA 95603
Geschäftsführer: Jürgen Kunz

Komplementärin: ORACLE Deutschland Verwaltung B.V.
Hertogswetering 163/167, 3543 AS Utrecht, Niederlande
Handelsregister der Handelskammer Midden-Niederlande, Nr. 30143697
Geschäftsführer: Alexander van der Ven, Astrid Kepper, Val Maher




More information about the vbox-dev mailing list