How to mount a virtual CD-ROM?

Hi all,

I am writing a virtual CD-ROM supported by an image file in NT 4.0. I added the response of IOCTL_CDROM_READ_TOC, IOCTL_CDROM_GET_DRIVE_GEOMETRY, IOCTL_CDROM_CHECK_VERIFY, etc. I also add the support of IRP_MJ_READ. But now after I mount a virtual CD-ROM, when I try to access the CD-ROM drive, it will report: “The disk structure is corrupt and non-readable.”

My questions are:

  1. The phenomena seem to be caused by the IRP_MJ_READ question. From IRP_MJ_READ, I can operate only Parameters.Read.Length & Parameters.Read.ByteOffset. But how can I redirect it to the real track data format through “byte” unit?
  2. Do I need to implement the response of IOCTL_CDROM_RAW_READ or more? Now, I cannot list the directory structure of the virtual CD-ROM. I wonder how many conditions are needed for being available to list the directory structure.

If any hint, thanks.

Jeffrey R
???y˫???+.n?+???u?ڲ˛??^r*D???kN???r??zǧu??jy???^j???ׯ??? 0?j?b??(??(

>But how can I redirect it to the real track data format through “byte”
cdfs mounts itself on a data track of your CD, so Read.ByteOffset zero
corresponds the first sector of the data track and so on.

  1. Do I need to implement the response of IOCTL_CDROM_RAW_READ
    This isn’t used for data tracks. It’s used for instance for video
    (mode2form2) tracks.

Regards,
Max Lyadvinsky


From: Jeffrey R[SMTP:xxxxx@sina.com]
Reply To: NT Developers Interest List
Sent: 29 ??? 2001 ?. 8:57
To: NT Developers Interest List
Subject: [ntdev] How to mount a virtual CD-ROM?

Hi all,

I am writing a virtual CD-ROM supported by an image file in NT 4.0. I
added the response of IOCTL_CDROM_READ_TOC,
IOCTL_CDROM_GET_DRIVE_GEOMETRY, IOCTL_CDROM_CHECK_VERIFY, etc. I also
add the support of IRP_MJ_READ. But now after I mount a virtual CD-ROM,
when I try to access the CD-ROM drive, it will report: “The disk
structure is corrupt and non-readable.”

My questions are:

  1. The phenomena seem to be caused by the IRP_MJ_READ question. From
    IRP_MJ_READ, I can operate only Parameters.Read.Length &
    Parameters.Read.ByteOffset. But how can I redirect it to the real track
    data format through “byte” unit?
  2. Do I need to implement the response of IOCTL_CDROM_RAW_READ or more?
    Now, I cannot list the directory structure of the virtual CD-ROM. I
    wonder how many conditions are needed for being available to list the
    directory structure.

If any hint, thanks.

Jeffrey R


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

How are you making your image file?
What are you doing in the TOC IOCTL?

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Jeffrey R
Sent: Monday, May 28, 2001 9:57 PM
To: NT Developers Interest List
Subject: [ntdev] How to mount a virtual CD-ROM?

Hi all,

I am writing a virtual CD-ROM supported by an image file in NT
4.0. I added the response of IOCTL_CDROM_READ_TOC,
IOCTL_CDROM_GET_DRIVE_GEOMETRY, IOCTL_CDROM_CHECK_VERIFY, etc. I
also add the support of IRP_MJ_READ. But now after I mount a
virtual CD-ROM, when I try to access the CD-ROM drive, it will
report: “The disk structure is corrupt and non-readable.”

My questions are:

  1. The phenomena seem to be caused by the IRP_MJ_READ question.
    From IRP_MJ_READ, I can operate only Parameters.Read.Length &
    Parameters.Read.ByteOffset. But how can I redirect it to the real
    track data format through “byte” unit?
  2. Do I need to implement the response of IOCTL_CDROM_RAW_READ or
    more? Now, I cannot list the directory structure of the virtual
    CD-ROM. I wonder how many conditions are needed for being
    available to list the directory structure.

If any hint, thanks.

Jeffrey R
b‹š­ç.®·§¶\¬¹»®&ÞvÚ’µ×¯jÈ䊶ò²Ú+jœ­§ír‰“¢éì¹»®&Þ±éÝi¹ZžG¦j)m¢Wš
½éíuëùëbåŠËl¢ÊÜ


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

You mean that Read.ByteOffset actually refers to the sector number of data track, right?
So thanks.

Best regards,
Jeffrey Ren

----- Original Message -----
From: “Max Lyadvinsky”
To: “NT Developers Interest List”
Sent: Tuesday, May 29, 2001 3:20 PM
Subject: [ntdev] RE: How to mount a virtual CD-ROM?

> >But how can I redirect it to the real track data format through “byte”
> cdfs mounts itself on a data track of your CD, so Read.ByteOffset zero
> corresponds the first sector of the data track and so on.
>
> >2) Do I need to implement the response of IOCTL_CDROM_RAW_READ
> This isn’t used for data tracks. It’s used for instance for video
> (mode2form2) tracks.
>
> Regards,
> Max Lyadvinsky
>
> ----------
> From: Jeffrey R[SMTP:xxxxx@sina.com]
> Reply To: NT Developers Interest List
> Sent: 29 ??? 2001 ?. 8:57
> To: NT Developers Interest List
> Subject: [ntdev] How to mount a virtual CD-ROM?
>
> Hi all,
>
> I am writing a virtual CD-ROM supported by an image file in NT 4.0. I
> added the response of IOCTL_CDROM_READ_TOC,
> IOCTL_CDROM_GET_DRIVE_GEOMETRY, IOCTL_CDROM_CHECK_VERIFY, etc. I also
> add the support of IRP_MJ_READ. But now after I mount a virtual CD-ROM,
> when I try to access the CD-ROM drive, it will report: “The disk
> structure is corrupt and non-readable.”
>
> My questions are:
> 1) The phenomena seem to be caused by the IRP_MJ_READ question. From
> IRP_MJ_READ, I can operate only Parameters.Read.Length &
> Parameters.Read.ByteOffset. But how can I redirect it to the real track
> data format through “byte” unit?
> 2) Do I need to implement the response of IOCTL_CDROM_RAW_READ or more?
> Now, I cannot list the directory structure of the virtual CD-ROM. I
> wonder how many conditions are needed for being available to list the
> directory structure.
>
> If any hint, thanks.
>
> Jeffrey R

b???.???????&?v?'?ׯj?.n?Qyȩf??]?:.?˛???m??֛???zf???%y?ޞ?^?˛??^r*Lzfެ?…???l??ܢ

> How are you making your image file?
I save the raw data to an image file and add a header info to it.

What are you doing in the TOC IOCTL?
I fill the CDROM_TOC structure according to the definition in NT4.0 DDK ntddcdrm.h.

Best regards,
Jeffrey Ren

----- Original Message -----
From: “Jamey Kirby”
To: “NT Developers Interest List”
Sent: Wednesday, May 30, 2001 2:14 AM
Subject: [ntdev] RE: How to mount a virtual CD-ROM?

> How are you making your image file?
> What are you doing in the TOC IOCTL?
>
> > -----Original Message-----
> > From: xxxxx@lists.osr.com
> > [mailto:xxxxx@lists.osr.com]On Behalf Of Jeffrey R
> > Sent: Monday, May 28, 2001 9:57 PM
> > To: NT Developers Interest List
> > Subject: [ntdev] How to mount a virtual CD-ROM?
> >
> >
> > Hi all,
> >
> > I am writing a virtual CD-ROM supported by an image file in NT
> > 4.0. I added the response of IOCTL_CDROM_READ_TOC,
> > IOCTL_CDROM_GET_DRIVE_GEOMETRY, IOCTL_CDROM_CHECK_VERIFY, etc. I
> > also add the support of IRP_MJ_READ. But now after I mount a
> > virtual CD-ROM, when I try to access the CD-ROM drive, it will
> > report: “The disk structure is corrupt and non-readable.”
> >
> > My questions are:
> > 1) The phenomena seem to be caused by the IRP_MJ_READ question.
> > From IRP_MJ_READ, I can operate only Parameters.Read.Length &
> > Parameters.Read.ByteOffset. But how can I redirect it to the real
> > track data format through “byte” unit?
> > 2) Do I need to implement the response of IOCTL_CDROM_RAW_READ or
> > more? Now, I cannot list the directory structure of the virtual
> > CD-ROM. I wonder how many conditions are needed for being
> > available to list the directory structure.
> >
> > If any hint, thanks.
> >
> > Jeffrey R

???y˫???+.n?+???u?ڲ˛??^r*D???kN???r??zǧu??jy???^j???ׯ??? 0?j?b??(??(

ByteOffset = sector number * 2048


From: Jeffrey Ren[SMTP:xxxxx@sina.com]
Reply To: NT Developers Interest List
Sent: 30 ÍÁÑ 2001 Ç. 6:19
To: NT Developers Interest List
Subject: [ntdev] RE: How to mount a virtual CD-ROM?

You mean that Read.ByteOffset actually refers to the sector number of
data track, right?
So thanks.

Best regards,
Jeffrey Ren


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Thanks, I will try that.
Jeffrey Ren

----- Original Message -----
From: “Max Lyadvinsky”
To: “NT Developers Interest List”
Sent: Wednesday, May 30, 2001 2:08 PM
Subject: [ntdev] RE: How to mount a virtual CD-ROM?

> ByteOffset = sector number * 2048
>
> ----------
> From: Jeffrey Ren[SMTP:xxxxx@sina.com]
> Reply To: NT Developers Interest List
> Sent: 30 ??? 2001 ?. 6:19
> To: NT Developers Interest List
> Subject: [ntdev] RE: How to mount a virtual CD-ROM?
>
> You mean that Read.ByteOffset actually refers to the sector number of
> data track, right?
> So thanks.
>
> Best regards,
> Jeffrey Ren
>

???y˫???+.n?+???u?ڲ˛??^r*D???kN???r??zǧu??jy???^j???ׯ??? 0?j?b??(??(