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)
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
Vous n’avez pas trouvé la réponse que vous recherchez ?