GetVolumeInformation pb sous win98

Résolu
bloobird0 Messages postés 30 Date d'inscription vendredi 6 février 2004 Statut Membre Dernière intervention 23 octobre 2008 - 17 déc. 2004 à 11:10
bloobird0 Messages postés 30 Date d'inscription vendredi 6 février 2004 Statut Membre Dernière intervention 23 octobre 2008 - 17 déc. 2004 à 11:44
hello les gens, j'ai un léger soucis avec un soft compilé sous XP qui ne fonctionne pas sous Win98 (enfin je pense).

Résumé:
je veux detecter la présence d'un disque d'après sa lettre.
Pour test, j'essai sur C avec le code suivant (compilé sur WinXP avec VisualStudio .net):

GetVolumeInformation("c:\",NULL,0,NULL,NULL,NULL,NULL,0);
printf("\nc drive error: %d", GetLastError());

Sous XP aucun soucis, l'error code est 0 donc lecteur C est présent.
Avec le même exécutable sous win98 j'ai l'erreur code 120 donc fonction non supportée.

- Alors ça vient de quoi?
- Est ce qu'il y a une directive dans le compilo pour avoir un compatibilité win98? (Le MSDN indique que la fonction existe sous Win98.)
- Est ce que je dois compiler absolument sous Win98?
- Ce qui est bizarre est qu'avec la fonction GetDiskFreeSpaceEx j'ai bien les data qu'il faut.

- Sinon quelle est la façon la plus simple possible si le lecteur "d:" existe? (en gros, je détecte la présence d'un disque mis en rack)

Merci d'avance pour votre aide

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 déc. 2004 à 11:29
Je crois me souvenir qu'on ne laisse pas tous les params a NULL pour les winbebes, faut trouver lequel.

GetLogicalDrives() est nettement mieux s'il s'agit juste de verifier la presence d'un lecteur.

ciao...
BruNews, MVP VC++
3
bloobird0 Messages postés 30 Date d'inscription vendredi 6 février 2004 Statut Membre Dernière intervention 23 octobre 2008
17 déc. 2004 à 11:40
Merci pour cette réponse éclair et concise!

Est ce documenté qq part qu'on ne peux pas laisser tous les params à NULL?

Question de vocabulaire, qu'appelles tu "winbebes"??
Sont-ce les win9x et Me?

C'est vrai que GetLogicalDrives à l'air top plus simple.

En gros:
if (GetLogicalDrives()& 8 == 0)
printf("Lecteur D présent")

me simplifie grandement
0
bloobird0 Messages postés 30 Date d'inscription vendredi 6 février 2004 Statut Membre Dernière intervention 23 octobre 2008
17 déc. 2004 à 11:44
oups un printf("Lecteur D absent") serait un poil mieux quand même (et pis sans accent aussi).

BOOL et moi ........
0
Rejoignez-nous