В этой статье MSDN показано, как получить путь из дескриптора файла.
Вы используете OpenFileById , чтобы открыть файл по его идентификатору, но вам также нужен открытый файл в другом месте на том же томе, я предполагаю получить серийный номер тома.
Эта публикация в блоге поднимает интересную проблему, которую необходимо указать в 24 для размера структуры (разработано с помощью кода сборки).
Я оставляю это как интересное упражнение (я не смог найти простой ответ), как перейти от dwVolumeSerialNumber к открытию действительного другого дескриптора для этого тома или файла на этом томе, но, возможно, у вас уже достаточно информации для вашего случая. Одна возможность состоит в том, чтобы перебрать все подключенные тома, вызывая GetVolumeInformation , чтобы найти тот с соответствующим серийным номером.
Примечание. Если у вас нет открытого файла, вы, возможно, не сможете полагаться на комбо nFileIndexHigh / Low (идентификатор файла), как описано в примечаниях к структуре BY_HANDLE_FILE_INFORMATION , которая предупреждает его может измениться для систем FAT, но В файловой системе NTFS файл сохраняет тот же идентификатор файла, пока не будет удален.