Mounting Virtual CDDA

Hi Everybody,

I’m developing an application in order to mount virtual drives and I would like to know how to mount a virtual audio drive from CUE and BIN files. I can mount ISO images of DATA CDs, but I don’t know how to perform the mounting if the sources are CUE and BIN files.

I debugged with SoftICE some applications such as MagicDisk and I could discover that it uses Mount Manger Client of Microsoft. Anyway, I couldn’t find the answer. It is not an easy task.

Does anyone have some idea?

Thanks in advance

Christian

Hi Christian,

First, you must understand the format of CUE and BIN files, as well as have a decent understanding of the mid-level formatting of an audio CD (subcode P, Q, R-W; sector size variations possible on CD media; Table of Contents for CD media; etc.). Specifications on these formats is very difficult to find (for free), so prepare for some searching.

Once you do this, then you have a problem that is, essentially, the same as any other virtual disk/disc program – handling all the SCSI opcodes properly. You can search the archives for much in the way of the pain this causes.

As someone who has worked on optical drives for ten years, I strongly urge you to avoid duplicating the massive work this would take. In short, it’s almost always cheaper to buy an existing product to do this. There are also freeware tools, especially when used for non-commercial use, and some even include nifty scripting interfaces to make your life easier.

Hth,

Henry Gabryjelski
Senior Software Development Engineer
US - Windows Device Experience
Microsoft Corporation

>media; etc.). Specifications on these formats is very difficult to find (for
free), so

prepare for some searching.

MMC spec is a free download, and seems to cover everything the CD/DVD drive
exposes to the software.


Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

MMC is just one piece of the puzzle. Henry’s first paragraph hits on things you need to know that are not in MMC and may cost $5000 or so just to get the specification. You can find bits and pieces here and there on the web and try to patch them together with reverse engineering though.

Christian,

Unfortunately you did not tell much about your driver architecture making our job helping you quite difficult :slight_smile:
OK, here’s common scenario to do what you want:

  1. Pick up right architecture. As you’re talking about Mount Manager I can *guess* you did a biggest mistake
    making your driver CDROM class driver… Rewrite it either as monolithic SCSI port or SCSIPORT/StorPort miniport
    (search this list, topic was discussed here many many many times). To get maximum possible flexibility you need to
    process SCSI commands, not IOCTLs.

  2. Grab some CD emulator software (I do recommend Daemon Tools as it’s virtually the best CD emulator written ever,
    it even emulates SCSI commands execution time matching physical hardware) and some application allowing you do
    catch SCSI commands / data (input, IN phase) and SCSI sense / data (output, OUT phase). Attaching to the virtual
    CDROM PDO will allow you to do quite effective reverse engineering. Of course have MMC spec under hands (but forget
    about implementing ALL of the commands listed there, even the ones called “mandatory” - it’s complete overkill).

  3. Stick with some of the open CD image formats as a basic one for your project. CUE/BIN is quite popular and good
    documented. I’d use it as a base adding NRG, MDS, IMG etc later (if you’d be able to make friends with the companies
    holding copyright on them, most of them are closed formats).

  4. is system-dependent stuff, 2) and 3) can be written in pure C and 100% portable between OSes and OS environments
    (kernel/user). We have 95% the same code running both in NT kernel (DVD emulator) and Linux user land (iSCSI target).

Good luck on this 1001+ CD emulator project :slight_smile:

Regards,
Anton Kolomyeytsev

CEO, Rocket Division Software

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@yahoo.com.ar
Sent: Thursday, June 21, 2007 4:55 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] Mounting Virtual CDDA

Hi Everybody,

I’m developing an application in order to mount virtual drives and I would like to know how to mount a virtual audio drive from CUE and BIN files. I can mount ISO images of DATA CDs, but I don’t know how to perform the mounting if the sources are CUE and BIN files.

I debugged with SoftICE some applications such as MagicDisk and I could discover that it uses Mount Manger Client of Microsoft. Anyway, I couldn’t find the answer. It is not an easy task.

Does anyone have some idea?

Thanks in advance

Christian


Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer