Get Drive Info 2

Win32 Based Device Information Reporter


GetDriveInfo2 is a Win32 program that examines the optical and removable media drives currently mounted on a computer, and returns information about those devices (in the case of optical devices it also returns information about the any media currently mounted in the device). Output is returned as XML, though it can optionally be formatted as human readable.

This program was developed to address an issue that arose during the development of the Prometheus digital workflow system, in which consistent information about devices was required, but no reliable and machine readable solution could be found.

GetDriveInfo2 uses two libraries to access device information. Seagull, a SCSI interface library; and Seabass, which provides an interface to Microsoft IOCTL commands. The source code for the libraries is included in the distribution package.

This software is the second revision of the software that was initially written for Prometheus. The first version was written in C#, and relied heavily on Windows Management Instrumentation to query drives. This was slow and often unreliable in the case of optical media (it especially had trouble differentiating between CD-ROM media and DVD media). The version that can be found here has been re-written from scratch in C++, and apart from being a somewhat faster, it’s also a lot more reliable. It is currently being used in the Prometheus project for the drive identification part of the system’s workflow.

GetDriveInfo2, Seabass, and Seagull were written by Nick del Pozo. They are all copyright to the National Library of Australia, and released under an MIT style licence.


Running GetDriveInfo2 requires that you have a version of .NET installed. Let's say 3.5, since that's what it was compiled for. In order to compile the source, you'll need a copy of the Windows Driver Development Kit, as files from there are referenced. This project was compiled using Microsoft Visual C++ Express.

If you are thinking of using the source code, just be aware that this program was written to a tight schedule, so you may encounter a fair amount of unfinished functionality, misleading comments, ugly patterns, and general weirdness.

GetDriveInfo2 is easy to use. Just type the executable name into the console. For a list of instructions, type: GetDriveInfo2 –help