[vbox-dev] win 95/98 guest additions ?
michael.thayer at oracle.com
Mon Sep 12 13:21:31 PDT 2011
CC-ing the list again in case this is useful for someone else (I assume
it was just an oversight on your part though).
On 09/12/2011 10:00 PM, Huihong Luo wrote:
> When the guest window resizes, I guess the guest drvier must be
> notified, and then the guest changes the video mode? Does this mean that
> arbitrary video modes are supported?
> from BIOS view, there should be only certain number of video modes are
When the video mode changes the notification goes through the VMMDev
event notification mechanism which I described in a previous e-mail .
The notification is VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST - see the
recently-added documentation near VMMDevReq_GetDisplayChangeRequest2 in
include/VBox/VMMDev.h. In the X.Org/X11 Additions (I think the Windows
Additions do things similarly) a user-space client listens for these
events and sends notifications to the drivers. Using
VBoxVideoSetModeRegisters() or the HGSMI APIs we can set any video mode
(see also VBoxVideoAnyWidthAllowed() for completeness), not just those
offered by the BIOS.
> --- On *Mon, 9/12/11, Michael Thayer /<michael.thayer at oracle.com>/* wrote:
> From: Michael Thayer <michael.thayer at oracle.com>
> Subject: Re: [vbox-dev] win 95/98 guest additions ?
> To: "Huihong Luo" <huisinro at yahoo.com>
> Cc: vbox-dev at virtualbox.org
> Date: Monday, September 12, 2011, 12:37 PM
> Hello Huihong,
> On 09/12/2011 06:30 PM, Huihong Luo wrote:
> > We are exploring the possibility of implementing this old stuff. In
> > particular, the mouse and graphics drivers.
> > Seems mouse integration shouldn't be that difficult. However, for
> > cards, it will take quite some time.
> > I have a question, does
> > C:\virtualbox-dev\vbox\include\VBox\Hardware\VBoxVideoVBE.h
> contains all
> > the video card's registry information? In other words, do these
> > constants sufficient to develop the display driver? 95/98 uses
> > different driver model, and needs to implment in real mode using
> > assembly code.
> > So wanted to know what is the minimum requirement?
> See the files in src/VBox/Additions/common/VBoxVideo for a first
> approximation. Those were my first attempt at sharing video driver code
> between Linux and Windows. For a minimal driver, the functions
> VBoxVideoGetVRAMSize() and VBoxVideoSetModeRegisters() in
> Modesetting.cpp which can be used without any of the rest. Those
> functions are so basic they ought to be re-usable in 16bit code, or let
> me know if that can be achieved with trivial changes. If you wish to go
> further, HGSMIBase.cpp contains APIs for setting up the buffers used for
> communicating with the graphics device (sending commands and receiving
> replies and notifications) and for doing the actual communication.
> Modesetting.cpp uses them to set multi-monitor graphics modes (and the
> older APIs I mentioned for single-monitor mode-setting). VBVABase.cpp
> contains dirty rectangle notification code, particularly for
> accelerating remote display.
> Feel free to send API documentation patches! I wrote the existing
> documentation as I was getting to grips with the API (which was win32
> only, and I am a Linux developer...) so it is a bit unclear. See
> src/VBox/Additions/x11/vboxvideo/vbva.c for am example of how to set up
> the graphics card. pointer.c and setmode.c in that directory build on
> top of that.
> Hope that helps a bit.
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
Komplementärin: ORACLE Deutschland Verwaltung B.V.
Hertogswetering 163/167, 3543 AS Utrecht, Niederlande
Handelsregister der Handelskammer Midden-Niederlande, Nr. 30143697
Geschäftsführer: Jürgen Kunz, Marcel van de Molen, Alexander van der Ven
More information about the vbox-dev