#include #include #include #define _WIN32_WINNT 0x0500 #include #ifndef FILE_READ_ONLY_VOLUME #define FILE_READ_ONLY_VOLUME 0x80000 #endif int main (int argc, char **argv) { char winpath[256]; char rootdir[256]; char volname[256]; char fsname[256]; DWORD sernum = 0; DWORD maxlen = 0; DWORD flags = 0; if (argc < 2) { fprintf (stderr, "usage: %s path\n", argv[0]); return 1; } cygwin_conv_to_full_win32_path (argv[1], winpath); if (!GetVolumePathName(winpath, rootdir, 256)) { fprintf (stderr, "GetVolumePathName: %d\n", GetLastError ()); return 1; } printf ("rootdir: %s\n", rootdir); if (!GetVolumeInformation (rootdir, volname, 256, &sernum, &maxlen, &flags, fsname, 256)) { fprintf (stderr, "GetVolumeInformation: %d\n", GetLastError ()); return 1; } printf ("Volume Name : <%s>\n", volname); printf ("Serial Number : %lu\n", sernum); printf ("Max Filenamelength : %lu\n", maxlen); printf ("Filesystemname : <%s>\n", fsname); printf ("Flags:\n"); printf (" FILE_CASE_SENSITIVE_SEARCH : %s\n", (flags & FILE_CASE_SENSITIVE_SEARCH) ? "TRUE" : "FALSE"); printf (" FILE_CASE_PRESERVED_NAMES : %s\n", (flags & FILE_CASE_PRESERVED_NAMES) ? "TRUE" : "FALSE"); printf (" FILE_UNICODE_ON_DISK : %s\n", (flags & FILE_UNICODE_ON_DISK) ? "TRUE" : "FALSE"); printf (" FILE_PERSISTENT_ACLS : %s\n", (flags & FILE_PERSISTENT_ACLS) ? "TRUE" : "FALSE"); printf (" FILE_FILE_COMPRESSION : %s\n", (flags & FILE_FILE_COMPRESSION) ? "TRUE" : "FALSE"); printf (" FILE_VOLUME_QUOTAS : %s\n", (flags & FILE_VOLUME_QUOTAS) ? "TRUE" : "FALSE"); printf (" FILE_SUPPORTS_SPARSE_FILES : %s\n", (flags & FILE_SUPPORTS_SPARSE_FILES) ? "TRUE" : "FALSE"); printf (" FILE_SUPPORTS_REPARSE_POINTS: %s\n", (flags & FILE_SUPPORTS_REPARSE_POINTS) ? "TRUE" : "FALSE"); printf (" FILE_SUPPORTS_REMOTE_STORAGE: %s\n", (flags & FILE_SUPPORTS_REMOTE_STORAGE) ? "TRUE" : "FALSE"); printf (" FILE_VOLUME_IS_COMPRESSED : %s\n", (flags & FILE_VOLUME_IS_COMPRESSED) ? "TRUE" : "FALSE"); printf (" FILE_SUPPORTS_OBJECT_IDS : %s\n", (flags & FILE_SUPPORTS_OBJECT_IDS) ? "TRUE" : "FALSE"); printf (" FILE_SUPPORTS_ENCRYPTION : %s\n", (flags & FILE_SUPPORTS_ENCRYPTION) ? "TRUE" : "FALSE"); printf (" FILE_NAMED_STREAMS : %s\n", (flags & FILE_NAMED_STREAMS) ? "TRUE" : "FALSE"); printf (" FILE_READ_ONLY_VOLUME : %s\n", (flags & FILE_READ_ONLY_VOLUME) ? "TRUE" : "FALSE"); return 0; }