Bonjour à tous !

J'ai un petit souci en voulant utiliser la fonction DeviceIOControl pour lire les premiers secteurs d'un cd-rom : après des semaines de recherches sur le net (la MSDN est très peu fournie pour ce cas précis), d'expérimentations et de prise de tête, je n'arrive toujours pas à le faire ...
Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
char Fn[8] = { '\\', '\\', '.', '\\', 'E', ':', '\0' };
HANDLE hCD;
DWORD Dummy;
RAW_READ_INFO ReadInfo;
unsigned char pBuf[2352] = "";
DWORD dwError=0;
DWORD dwBytesRet = 0;
 
hCD = CreateFile( Fn, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, 0, NULL );
 
if ( !DeviceIoControl( hCD, IOCTL_STORAGE_CHECK_VERIFY,
NULL,
0,
NULL,
0,
&Dummy,
NULL) )
{
MessageBox(NULL,"Drive E:\\ isn't accessible",NULL,MB_OK);
}else{
ReadInfo.TrackMode = XAForm2;
ReadInfo.SectorCount = 1;
ReadInfo.DiskOffset.QuadPart = 0*2048; // 2048 est obligatoire quelquesoit le format
if ( !DeviceIoControl( hCD,
IOCTL_CDROM_RAW_READ,
&ReadInfo,
sizeof(ReadInfo),
&pBuf,
2352, // 2352 donne erreur 1 (incorrect function), 2048 donne erreur 87 (invalid parameter)
&Dummy,
NULL ) )
{
dwError = GetLastError();
}else{
}
}
Edit: désolé pour le double post