[vbox-dev] Question regarding channel callbacks between guest and host
Michael Thayer
michael.thayer at oracle.com
Thu Apr 24 14:00:00 UTC 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