Расширенные атрибуты файла. WinAPI
Ситуация следующая: есть папка на диске, которая расшаривается для доступа на другой машине.
Если подключать папку средствами Windows (net use, например), то проблем не возникает. Но если подключиться к папке средствами VMWare (через свойства виртуальной машины), то VMWare "подсовывает" свою файловую систему HGFS.
Сама папка лежит на хосте, а доступ к ней получаю на виртуалке.
Так вот, как в обоих случаях можно узнать, поддерживает ли файловая система на хосте (естественно на диске с расшаренной папкой) расширенные файловые атрибуты?
Что пробовал:
// На шаре, подключенной через net use
// всё в порядке, но не на шаре,
// подключенной через VMWare
DWORD dwFsFlags = 0;
GetVolumeInformation(
...
&dwFsFlags,
...
);
if ((dwFsFlags & FILE_SUPPORTS_EXTENDED_ATTRIBUTES) == FILE_SUPPORTS_EXTENDED_ATTRIBUTES) {
...
}
// На шаре, подключенной через net use
// всё в порядке, но не на шаре,
// подключенной через VMWare
NTSTATUS status = NtQueryEaFile(
hFile, // хэндл файла в расшаренной папке
...
);
if (status != STATUS_EAS_NOT_SUPPORTED) {
...
}
В чем проблема:
На расшаренной через VMWare папке в первом случае условие никогда не выполняется, указанный флаг не выставлен. Во втором случае для дисков, например, с NTFS всё в порядке, а вот для того же FAT32 все ломается - NtQueryEaFile считает, что расширенные атрибуты поддерживаются.