Enumerating disks and controllers at a BIOS level

Discussion about using the VirtualBox API, Tutorials, Samples.
Post Reply
andyp73
Volunteer
Posts: 1631
Joined: 25. May 2010, 23:48
Primary OS: Mac OS X other
VBox Version: PUEL
Guest OSses: Assorted Linux, Windows Server 2012, DOS, Windows 10, BIOS/UEFI emulation

Enumerating disks and controllers at a BIOS level

Post by andyp73 »

Hello (michaln),

As part of the BIOS extension I have to enumerate all of the disk controllers in the system (both PATA and SATA) to work out what drives are attached to them.

I thought that enumerating the controllers would be easy using Int 1Ah function B103h (find device by class code) and looking for class codes 0101 (IDE), 010600 (SATA) and 010601 (AHCI). It turns out that this BIOS function needs both the class code, subclass code and programming interface which is problematical on the PATA controllers as it changes depending on whether controllers are in legacy or native mode. Is there a way to get the BIOS function to ignore the PI register without me having to implement a replacement?

With the VirtualBox AHCI controller, how does a disk attached to SATA Port 0 appear to the controller? Is it accessible through the Primary Command Block Base Address (equivalent to primary master) or do I find the base address for the command block for sending commands to this disk at an alternate location?

Thanks,

Andy.
My crystal ball is currently broken. If you want assistance you are going to have to give me all of the necessary information.
Please don't ask me to do your homework for you, I have more than enough of my own things to do.
mpack
Site Moderator
Posts: 39134
Joined: 4. Sep 2008, 17:09
Primary OS: MS Windows 10
VBox Version: PUEL
Guest OSses: Mostly XP

Re: Enumerating disks and controllers at a BIOS level

Post by mpack »

This is hardly a "Using VirtualBox" question. Moving to "VirtualBox API" forum, for want of anything better.
michaln
Oracle Corporation
Posts: 2973
Joined: 19. Dec 2007, 15:45
Primary OS: MS Windows 7
VBox Version: PUEL
Guest OSses: Any and all
Contact:

Re: Enumerating disks and controllers at a BIOS level

Post by michaln »

If you are interested in bootable drives then using EDD might be better. Also, what about bootable USB drives and similar?

With the VBox AHCI emulation, there is no IDE compatibility.
andyp73
Volunteer
Posts: 1631
Joined: 25. May 2010, 23:48
Primary OS: Mac OS X other
VBox Version: PUEL
Guest OSses: Assorted Linux, Windows Server 2012, DOS, Windows 10, BIOS/UEFI emulation

Re: Enumerating disks and controllers at a BIOS level

Post by andyp73 »

Thanks for the heads up. Looks like I can get all the information I need from the various int 13h calls and saves me having to poke around finding all of the disks and probing them myself!

Andy.
My crystal ball is currently broken. If you want assistance you are going to have to give me all of the necessary information.
Please don't ask me to do your homework for you, I have more than enough of my own things to do.
Post Reply