Расширенные атрибуты файла. 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 считает, что расширенные атрибуты поддерживаются.


Ответы (0 шт):