bonjour tout le monde
je cherche une api qui retourne l'espace utilisé d'un cd
plate forme:
visual c++
windows xp
merci
bonjour tout le monde
je cherche une api qui retourne l'espace utilisé d'un cd
plate forme:
visual c++
windows xp
merci
GetDiskFreeSpaceEx() ?
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
bonjour
quand j'utilise l'api GetDiskFreeSpaceEx( )
avec comme premier paramettre 'NULL' ça marche
elle recupere des informations sur le disque dur ,
mais quand je met la lettre qui correspond au lecteur cd la fontion echoue
et si par exemple je mettais un C:\\ pour le disque dur ou E:\\ pour le lecteur
la fonction ne retournerais rien
j'ai deja vu l'msdn ça ne m'a pas ajouté grand chose
si vous avez des indications ou un petit exemple de programme qui illustre
l'utilisation de GetDiskFreeSpaceEx() surtout avec le premier argument
n'hésitez pas à me les proposer
merci
En inventant rien: google + nom de la methode
il suffit alors de remanier l'argument de retour pour renvoyer la valeur desiré et le tour est joué.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 #include <Windows.h> #include <stdio.h> typedef BOOL (WINAPI *PGETDISKFREESPACEEX)(LPCSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); BOOL MyGetDiskFreeSpaceEx(LPCSTR pszDrive) { PGETDISKFREESPACEEX pGetDiskFreeSpaceEx; __int64 i64FreeBytesToCaller, i64TotalBytes, i64FreeBytes; DWORD dwSectPerClust, dwBytesPerSect, dwFreeClusters, dwTotalClusters; BOOL fResult; pGetDiskFreeSpaceEx = (PGETDISKFREESPACEEX) GetProcAddress( GetModuleHandle("Kernel32.dll"), "GetDiskFreeSpaceExA"); if (pGetDiskFreeSpaceEx) { fResult = pGetDiskFreeSpaceEx (pszDrive, (PULARGE_INTEGER)&i64FreeBytesToCaller, (PULARGE_INTEGER)&i64TotalBytes, (PULARGE_INTEGER)&i64FreeBytes); // Process GetDiskFreeSpaceEx results. if(fResult) { printf("Total free bytes = %I64d\n", i64FreeBytes); } return fResult; } else { fResult = GetDiskFreeSpaceA (pszDrive, &dwSectPerClust, &dwBytesPerSect, &dwFreeClusters, &dwTotalClusters); // Process GetDiskFreeSpace results. if(fResult) { printf("Total free bytes = %I64d\n", dwFreeClusters*dwSectPerClust*dwBytesPerSect); } return fResult; } } int main(int argc, char *argv[]) { MyGetDiskFreeSpaceEx ("C:"); MyGetDiskFreeSpaceEx ("Z:"); MyGetDiskFreeSpaceEx ("X:"); MyGetDiskFreeSpaceEx ("O:"); }
Euh...
Pourquoi récupérer dynamiquement la fonction ?
Elle existe depuis Windows 95 OSR2...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
J'ai juste recupere la faq MSDN. Ce que je voulais montrer surtout c'est de passer en argument la valeur c: et non pas c:\\
Partager