Lecture secteur CDROM en mode RAW

Résolu
Profil bloqué - 25 juin 2008 à 07:08
 Profil bloqué - 1 juil. 2008 à 06:56
Salut à tous
Je cherche à lire un secteur sur un CDROM en mode RAW ( les 2352 octets)
J'ai le code suivant mais Deviceiocontrol me renvoie une erreur
Je précise que hDevice est bien initialisé ( pas de INVALID_HANDLE_VALUE) ainsi que le tableau de bytes Buffer de réception des octets du secteur
Où est le problème ?

    Public Enum TRACK_MODE_TYPE
        YellowMode2
        XAForm2
        CDDA
    End Enum

    Private Structure RAW_READ_INFO
        Dim diskoffset As Int64
        Dim sectorcount As Int32
        Dim trackmode As Byte
    End Structure

Public Sub CdromReadRaw(ByVal sector As Int32, ByVal nbsector As Int32)

        Dim readinfo As RAW_READ_INFO
        Dim pointerbufferdata As IntPtr, pointerinfo As IntPtr
        Dim ret As Int32, retbytes As Int32, leninfo As Int32

        dskerr = False
        leninfo = Marshal.SizeOf(readinfo)
        With readinfo
            .diskoffset = sector * RAW_SECTOR_SIZE
            .sectorcount = nbsector
            .trackmode = datamode
        End With
        pointerinfo = Marshal.AllocHGlobal(leninfo)
        pointerbufferdata = Marshal.AllocHGlobal(buffer.Length)
        Marshal.StructureToPtr(readinfo, pointerinfo, False)

        ' lecture du secteur
        ret = DeviceIoControl(hDevice, IOCTL_CDROM_RAW_READ, pointerinfo, leninfo, pointerbufferdata, buffer.Length, retbytes, IntPtr.Zero)

        If ret = 1 Then
            Marshal.Copy(pointerbufferdata, buffer, 0, buffer.Length)
        Else
            dskerr = True
        End If
        Marshal.FreeHGlobal(pointerbufferdata)
        Marshal.FreeHGlobal(pointerinfo)

    End Sub

Merci beaucoup pour vos réponses

GRENIER Alain

5 réponses

Profil bloqué
1 juil. 2008 à 06:56
Ne cherchez plus : j'ai trouvé en utilisant le SPTI
Pour la solution voir la source "Acces Direct Disque en VB net"

Merci à tous

GRENIER Alain
3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
25 juin 2008 à 11:04
Bonjour

Va voir cette source, tu auras peut être quelques données en plus :
http://www.vbfrance.com/code.aspx?ID=46012

L'ouverture d'esprit ne se limite pas toujours à une fracture du crâne.
VB (6, .NET1&2), C++, C#.Net1
Mo
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
25 juin 2008 à 14:56
Bonjour,
Ce n'est pas du VB.Net mais du C# mais je pense que son contenu d'aidera.
http://www.csharpfr.com/codes/NET2-LECTURE-FICHIER-CDA-EXTRACTION-PISTE-AUDIO-CD_41094.aspx

Pour information, quel code erreur as-tu en retour de DeviceIoControl ?
0
Profil bloqué
25 juin 2008 à 21:53
Salut Willi
Deviceiocontrol ne renvoie 0 en retour et retbytes est = à 0 (ce qui signifie que aucun octet n'a été lu)

Salut NHenry
La source que tu m'as marqué est ma propre source et c'est sur elle que j'ai le problème depuis que j'ai Windows Vista.

Lorsque je fais un "Acces Direct Disque" sur un disque optique (CDROM ou DVDROM) je lis le système de fichiers (UDF pour les DVD vidéo et CDFS pour les CD ou DVD audio et de données)
En CDFS je cherche à lire le secteur 0 en mode Raw pour ensuite déterminer son mode (si le Synchro Pattern "0FFFFFFFFFFFFFFF......" est présent c'est un CD et j'en déduis si CD audio ou de données et si le Synchro Pattern est absent c'est un DVD)
Sous Windows Xp cela fonctionnait mais sous Vista

Merci pour votre aide

GRENIER Alain
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
26 juin 2008 à 08:43
Bonjour

Désolé Galain, j'avais pas fais attention

Désolé (encore une fois), mais cela sort de mes compétences.

L'ouverture d'esprit ne se limite pas toujours à une fracture du crâne.
VB (6, .NET1&2), C++, C#.Net1
Mo
0
Rejoignez-nous