2010-11-01 3 views
3

Je me demandais s'il y a une API Windows qui peut me dire s'il y a un CD vide dans un lecteur de CD-ROM/DVD-ROM.Comment déterminer si un CD est dans le lecteur de CD-ROM

J'ai déjà regardé GetVolumeInformation(), mais cela ne ramène des informations que sur le lecteur de CD-ROM actuel, pas sur le média qui s'y trouve, même s'il contient un CD. Tout ce que j'essaie de faire est de voir s'il y a un cd dans le lecteur ou non et de retourner une valeur booléenne.

Merci pour toute aide

+0

Étiquette qt supprimée, rien à voir avec qt. –

Répondre

1

Appel GetFileAttributes() sur le répertoire racine. GetFileAttributes() est assez optimisé car il est couramment utilisé pour vérifier si un fichier ou un répertoire existe.

Une autre méthode consiste à appeler GetDiskFreeSpace, qui (malgré son nom) renvoie également la taille totale du disque.

Le Shell a également quelques fonctions utiles. SHGetDriveMedia vous dira ce qui est chargé, mais vous devez d'abord appeler GetDriveType().

+0

Ok, je les ai tous essayés, mais aucune de ces commandes ne marche. Ils ne lisent tout simplement pas les médias. Merci de m'avoir indiqué la bonne direction. – Drake0727

+0

@ Drake0727: c'est assez bizarre. Êtes-vous en train de dire que 'GetDiskFreeSpace()' ne retourne pas réellement la taille du CD? – MSalters

+0

Non, ce n'est pas le cas. Getfileattributes ne renvoie rien; Getdiskfreespace Je l'utilise déjà dans une fonction différente, et il fonctionne pour les lecteurs HD et flash, mais pas de CD-ROM; et SHGetDriveMedia est une API Windows Vista et up, j'ai malheureusement besoin de la compatibilité avec XP. – Drake0727

0

Vous pouvez utiliser l'API DeviceIoControl en passant IOCTL_STORAGE_CHECK_VERIFY en tant que dwIoControlCode. Cela permettra de vérifier si un lecteur de disque particulier est prêt i. e. a un disque dedans et, bien sûr, le plateau est fermé. Consultez la documentation MSDN DeviceIoControl pour plus d'informations sur cette fonction.

Questions connexes