Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lire des secteurs d'un CD

31 réponses
Avatar
Yoshito
Salut à tous

Je cherche à lire les secteurs d'un CD : on m'a dit de venir ici car
apparement vous êtes les meilleurs.

J'ai utilisé la fonction createfile puis deviceiocontrol, jusqu'ici aucuns
problèmes, j'ai pu récupérer la géométrie du CD.

C'est après que ça se corse, j'utilise ReadFile, ça ne marche pas, et
j'obtiens en permanence l'erreur 87 avec getlasterror, erreur qui dit qu'un
des paramètres est incorrect.

que dois-je faire ??

merci de laide.

Voici le code :

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <winioctl.h>
#define CD "\\\\.\\e:"

int main()
{
HANDLE cdrom;
LPVOID *t;
BOOL resultat;
DWORD truc, truc2 = 0;
DISK_GEOMETRY buff;
unsigned char i;
char buffer[256];
printf("%p",buffer);


cdrom = CreateFile(CD, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, 0, NULL);

if(cdrom == INVALID_HANDLE_VALUE) // cannot open the drive
{
MessageBox(NULL, "Le lecteur que vous avez indiqué est impossible à
ouvrir pour une raison absolument inconnue :p\nVous avez sans doute mal tapé
la lettre du lecteur.", "Erreur d'ouverture", MB_ICONEXCLAMATION);
return (FALSE);
}

resultat = DeviceIoControl(cdrom, IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL,
0, &buff, sizeof(buff), &truc, NULL);

if(resultat)
{
printf("%s :\n", CD);
printf("- Cylindres = %ld\n", buff.Cylinders);
printf("- Pistes/Cylindres = %ld\n", (ULONG)
buff.TracksPerCylinder);
printf("- Secteurs/Pistes = %ld\n", (ULONG) buff.SectorsPerTrack);
printf("- Octets/Secteurs = %ld\n", (ULONG) buff.BytesPerSector);
printf("\n");
}
else
{
printf("%ld",GetLastError());
MessageBox(NULL, "La géométrie du disque (têtes, cylindres, etc..)
est impossible à obtenir.", "Erreur de lecture", MB_ICONEXCLAMATION);
return (FALSE);
}


resultat = ReadFile(cdrom, &buffer, 253, &truc2, NULL);

if(resultat)
{
printf("%ld bytes lus", truc2);
}
else
{
printf("Erreur %ld", GetLastError());
}

CloseHandle(cdrom);
return 0;
}

1 réponse

1 2 3 4
Avatar
Fred
wrote in message
news:
J'utilise IWriteEngine (pas trop le choix il me reste que ça !)



IDiscFormat2Data a l'air de mieux marcher que IWriteEngine2
1 2 3 4