Je programme sous Windows, C++, mfc Comment puis-je connaître le format du disque par chemin comme "c: \". Windows fournit-il de telles API?Comment connaître le format d'un certain disque (FAT32 ou NTFS)
4
A
Répondre
11
La fonction Win32API :: GetVolumeInformation est ce que vous cherchez.
De MSDN:
BOOL WINAPI GetVolumeInformation(
__in_opt LPCTSTR lpRootPathName,
__out LPTSTR lpVolumeNameBuffer,
__in DWORD nVolumeNameSize,
__out_opt LPDWORD lpVolumeSerialNumber,
__out_opt LPDWORD lpMaximumComponentLength,
__out_opt LPDWORD lpFileSystemFlags,
__out LPTSTR lpFileSystemNameBuffer, // Here
__in DWORD nFileSystemNameSize
);
Exemple:
TCHAR fs [MAX_PATH+1];
::GetVolumeInformation(_T("C:\\"), NULL, 0, NULL, NULL, NULL, &fs, MAX_PATH+1);
// Result is in (TCHAR*) fs
2
GetVolumeInformation vous donnera ce dont vous avez besoin. Il renverra le nom du format de lecteur dans lpFileSystemNameBuffer.
Si vous voulez un bon emballage autour, vous pouvez regarder CVolumeMaster de Microsoft.
1
La classe Win32_LogicalDisk dans WMI possède une propriété FileSystem qui expose ces informations.
3
Oui c'est GetVolumeInformation.
TCHAR szVolumeName[100] = "";
TCHAR szFileSystemName[10] = "";
DWORD dwSerialNumber = 0;
DWORD dwMaxFileNameLength = 0;
DWORD dwFileSystemFlags = 0;
if(::GetVolumeInformation("c:\\",
szVolumeName,
sizeof(szVolumeName),
&dwSerialNumber,
&dwMaxFileNameLength,
&dwFileSystemFlags,
szFileSystemName,
sizeof(szFileSystemName)) == TRUE)
{
cout << "Volume name = " << szVolumeName << endl
<< "Serial number = " << dwSerialNumber << endl
<< "Max. filename length = " << dwMaxFileNameLength
<< endl
<< "File system flags = $" << hex << dwFileSystemFlags
<< endl
<< "File system name = " << szFileSystemName << endl;
}
Questions connexes
- 1. Comment déterminer les blocs alloués sur un disque NTFS
- 2. Comment puis-je connaître le volume d'un chemin NTFS donné lors de l'utilisation de points de montage?
- 3. outil de réallocation de fichiers pour ntfs
- 4. Comment enregistrer l'objet MailMessage sur le disque en tant que fichier * .eml ou * .msg
- 5. Norme bizarre pour les fichiers FAT32> 4gb
- 6. Comment écrire une image CGPath ou vectorielle complexe sur le disque?
- 7. Mise en forme des données varchar dans un certain format
- 8. Fichiers Jar très volumineux et FAT32
- 9. Comment puis-je enregistrer le processus ou l'activité du noyau utilisant le disque dans GNU/Linux?
- 10. dsofile C# Propriétés de fichier personnalisées API/NTFS
- 11. Comment déterminer par programme comment un DVD ou un disque dur est connecté - Maître ou Esclave?
- 12. Comment obtenir la taille réelle sur disque d'un fichier à partir de PowerShell?
- 13. Comment afficher un tableau de doubles sur le disque dur?
- 14. Comment puis-je connaître le type d'un fichier utilisant Boost.Filesystem?
- 15. Enregistrer NSMutableArray sur le disque
- 16. Monter le système de fichiers NTFS (capacité de lecture/écriture) sur RHEL 5 (2.6.8-18.el5)
- 17. comment valider le format datetime
- 18. Comment puis-je modifier les autorisations Windows NTFS en Perl?
- 19. Comment puis-je simuler un disque défectueux pendant le test?
- 20. Connaître la version asp.net pour le code?
- 21. Comment puis-je ajouter SqlParameters sans connaître le nom/type?
- 22. Comment WsDualHttpBinding fait pour connaître le canal de rappel?
- 23. comment l'indexation se produit sur un lecteur NTFS
- 24. connaître le nombre d'éléments d'un IQueryable
- 25. une question concernant le pilote de filtre NTFS
- 26. Disque dur PC virtuel couvrant plusieurs fichiers?
- 27. Comment puis-je connaître le type d'un élément NSDictionary?
- 28. Comment puis-je connaître le mot de passe nouvellement généré?
- 29. Drupal: Comment connaître le type d'un TID (ID de terme)?
- 30. Quelqu'un peut-il recommander un bon livre ou une autre ressource sur la sémantique NTFS?
GetVolumeInformation() peut vous dire si un volume prend en charge le cryptage/compression/etc Vous devez les liens physiques utiliser ces drapeaux, et non le nom du système de fichiers si vous devez vous assurer que le volume prend en charge une fonction spécifique. (Souvenez-vous que NTFS/FAT * ne sont pas les seuls systèmes de fichiers sur Windows, même s'ils sont les seuls supportés hors de la boîte) – Anders