В настоящее время я использую следующие функции, чтобы открыть файл, используя его идентификатор.
volHandle = CreateFile(pVolName, ...);
fileHandle = OpenFileById(volHandle, &id, ...)
Идентификатор (FILE_ID_DESCRIPTOR) получается из GetFinalPathNameByHandle ().
Это работает для локальных файлов, но когда я попробовал его для файла в общей папке (из windows или unix-машины), я получил неверный volHandle.
Есть ли способы открыть файл в общей папке, используя его идентификатор (FILE_ID_DESCRIPTOR)?
От документация для OpenFileById, Акцент мой:
В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.
Поддерживаемые технологии
Протокол Server Message Block (SMB) 3.0 — нет
Другими словами, вы не можете открыть файл по идентификационному номеру по сети, только в локальной файловой системе.
Других решений пока нет …