2012-05-22 3 views
0

Допустим, у меня есть дескриптор файла в результате использования WinAPI CreateFile. Он не был открыт с помощью FILE_FLAG_DELETE_ON_CLOSE.Удаление файла с помощью всего лишь дескриптора

Есть ли способ удалить файл, имеющий только дескриптор, без имени файла?

Благодаря

+0

Возможно, вы можете использовать информацию из [этого вопроса] (http://stackoverflow.com/questions/65170/how-to-get-name-associated-with-open-handle), чтобы получить имя файла для использования с Удалить файл – user786653

ответ

1

Я не знаю, если вы можете специально удалить файл, основываясь исключительно на ручке, но вы всегда можете использовать ручку, чтобы получить имя файла, как описано в this MSDN article, а затем вызвать DeleteFile ().

3

Если вы работаете в Windows Vista или более поздней версии, то SetFileInformationByHandle() позволит вам сделать это, установив информационный класс FileDispositionInfo.

Конечным результатом этой операции будет то, что теперь дескриптор будет отмечен для удаления при закрытии - когда последний дескриптор файла будет закрыт, файл будет удален.

Для старых версий Windows NTDLL экспортирует NtSetInformationFile(), который позволит вам сделать то же самое.