Ce code permet d'obtenir des infos (Lecture CD-R,CD-RW,Ecriture de CD-R,CD-RW) sur les lecteurs ou graveurs de CD présents sur votre ordinateur.
Il permet aussi d'obtenir des infos (fabricant, taille,...) sur un CD (présent dans un graveur : les lecteurs de CD ne sont pas toujours capables de lire les infos ATIP).
Pour utiliser ce code, il vous faut WNASPI32.dll :
- il faut télécharger le pack ASPI d'adaptec (
http://www.gravure-news.com/html/tuto/08/page01.php) :
http://www.adaptec.com/worldwide/support/suppdetail.jsp?sess=no&language=English+US&prodkey=ASPI-4.70
Dans ce cas, les fichier sont placés dans le répertoire système. Ensuite, il faut ajouter une clé au registre pour que cela fonctionne :
http://www.macdisk.com/faqaspifr.php3
Il faut impérativement une valeur chaine "ExcludeMiniports" vide :
Sous Windows NT/2000/XP :
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Services
Aspi32
Parameters
ExcludeMiniports
Sous Windows 95/98 :
HKEY_LOCAL_MACHINE
System
CurrentControlSet
Services
VxD
APIX
ExcludeMiniports
- sinon vous pouvez le télécharger à l'adresse suivante :
ftp://ftp6.nero.com/wnaspi32.dll (juste pour tester (ce fichier est le propriété de Nero ). Il faut ensuite le placer dans le répertoire de l'application (et de la dll ASPIdll.dll). Nero interdit de la mettre dans system32...
Ce projet est compatible 9x/ME/NT/2000/XP.
Conclusion :
Le code est un peu commenté. Il applique les commandes SCSI (
http://casl.csa.iisc.ernet.in/Standards/SCSI/ ou sur www.t10.org : SCSI-3 Primary Commands (SPC), SCSI-3 Multimedia Commands (MMC), Multi-Media Commands - 2 (MMC-2), SCSI-2 Small Computer System Interface - 2 (SCSI-2))
Le seul bug connu est que chez moi, Ejecter ou charger le CD est impossible avec ASPI. La gestion d'erreur est minimale (juste détection de présence ou absence de WNASPI32.dll sinon en fait ca affiche juste n'importe quoi en cas d'erreur.
Si vous utilisez ce code, Nero interdit de distribuer son WNASPI32.dll.
N'hésitez pas à mettre des commentaires et à noter...
10 oct. 2005 à 01:28
Le bouton "Ejecter" ne fonctionne pas car il y a une erreur sur ta CDB dans le fichier CDROM.CPP à la ligne 214.
En effet, le code pour CDB[0] n'est pas 0xA6 mais 0x1B
Avec cete modification, l'ejection fonctionne :-)
DWORD LoadUnloadCD(BYTE HaID,BYTE Target,BYTE Lun,BOOL Load)
{
//LOAD/UNLOAD CD Command demande une CDB de 12 octets
BYTE CDB[12]={0};
//LOAD/UNLOAD CD Command
CDB[0]= 0x1B; //0xA6;
//si on veut fermer
if (Load)
CDB[4]=3; //LOAD
else
CDB[4]=2; //UNLOAD
//SLOT 0
CDB[8]=0;
//execute la commande LOAD/UNLOAD CD
return Exec(HaID,Target,Lun,NULL,0,12,CDB);
}
Tchô Tchô
Burn Proof Alias Buz l'eclair
---------------------------------------------------------------
13 déc. 2004 à 18:21
oui, je sais que Ejecter ne marche pas mais je ne sais pas pourquoi
sinon, pour le graveur USB, je pense que cela vient des pilotes ASPI et pas de mon code.
La solution se trouve peut être dans ces pages
http://www.plextor.com/english/support/faqs/SW00004.htm
http://aspi.radified.com/
http://www.afterdawn.com/guides/archive/aspisetup.cfm
il faut avoir la dernière version des pilotes ASPI, avoir mis une chaîne vide (et pas l'absence de clé) dans ExcludeMiniport (voir explications)
ShareVB
12 déc. 2004 à 17:45
- Mon graveur de DVD en USB n'est pas dans la liste
1 sept. 2004 à 10:31
++
1 sept. 2004 à 09:49
merci pour le test... (le pire c'est que chez moi ça marchait quand même)
le bug ne vient pas du code qui gère ASPI mais du combo : je n'avais pas fait attention que CB_ADDSTRING ne l'ajoutait pas forcement à la fin de la liste... en fait ca devait interroger ton disque dur, d'où l'affichage erroné...
ShareVB
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.