bonjour
ma question est la suivante
quel changement faut -il faire pour transformer une application qui permet la gravure en mode DAO
en mode SAO "multisession "
sachant que la stucture de la fonction pricipale est la suivante
je sais que le code est un peut bizare mais je ne demande que des indication comme
est ce que c'est la dll deviceIoControle qui s'en charge ou bien il faut mentioner le mode dans une structure qu'il faut se charger de
la remplir si c'est oui comment
merci pour votre serviabilite
fonction principale////////////////////////////////////
DWORD WINAPI graver()
{
DWORD dwnumberOfBlocks,dwavailableBlocks, dwfirstLba;
char
*szinfo;
long
lerror = 1;
szinfo = szISOINDISPO;
hFILEISO = CreateFile(szFile, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN,NULL);
if
(hFILEISO == NOFILE)
goto
burnExit;
szinfo = szISOINVALID;
if
(CheckIso(&dwnumberOfBlocks))
goto
burnExit1; szinfo = szCDINACCESS;
hCDROM = CreateFile(szdevice, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
if
(hCDROM == INVALID_HANDLE_VALUE)
goto
burnExit1; SetWindowText(hStatus, szENCOURS);
szinfo = szNONDISPO;
if
(!CdVierge())
goto burnExit2;
szinfo = szNOPARMSGRAV
if
(SaveWriteMode(iSim, TRACONCE,SESSION, MODE, TYPECD))
goto
burnExit2;szinfo = szNONVIERGE;
//////////////////comment tester sur la multisession/////////////////////////////////////////
if
(ProchaineAddr(0x01,(LONG *)&dwfirstLba, (LONG *)&dwavailableBlocks))
goto
burnExit2;
if
(dwavailableBlocks < dwnumberOfBlocks) {szinfo = szNOSPACE;
goto
burnExit2;}
//dwnumberOfBlocks est le nombre de block du fichier
if
(dwfirstLba) {szinfo = szERRDEB ;
goto
burnExit2;}
// pour tester si l'adresse du depart "dwfirstLba" est erronée ou non
szinfo = szERRCALIBRE;
//"Impossible de calibrer"
//if(SetCalibration()) goto burnExit2;
szinfo = szERRECRIRE;
//"Ecriture impossible"
if
(BurnSession(dwnumberOfBlocks, dwfirstLba))
goto
burnExit2;szinfo = szNOCLOTURE;
//"Cloturer CD impossible"
if
(FermeTrack(0))
goto
burnExit2;DemandeEject();
lerror = 0; szinfo = szFINI;
burnExit2:
CloseHandle(hCDROM); hCDROM = NOFILE;
burnExit1:
CloseHandle(hFILEISO); hFILEISO = NOFILE;
burnExit:
SetWindowText(hStatus, szinfo);
//
PostMessage(hMain, WM_ENDTHREAD, lerror, 0);
return
0;}