Как найти и закрыть все открытые дескрипторы файлов на съемном диске (перед извлечением) - PullRequest
0 голосов
/ 07 декабря 2009

Я пытаюсь извлечь (виртуальный) съемный диск, и он не работает, потому что открыты некоторые файловые дескрипторы, возможно, окна обозревателя. Каков наилучший способ получить все открытые маркеры для файлов на этом диске и закрыть их?

Возможно ли (в пользовательском режиме) найти какие-либо процессы, запущенные на этом диске, чтобы я мог предупредить пользователя с помощью имени процесса?

В идеале я хотел бы сделать это в приложении в пользовательском режиме, а не требовать прав администратора.

Я использую VC ++ в Visual Studio 2005, в приложении MFC, но примеры на любом языке приветствуются!

1 Ответ

1 голос
/ 07 декабря 2009

Утилита Process Explorer может искать открытые дескрипторы, но я не знаю, сможет ли она сделать это без повышенных привилегий. Из того, что я смог собрать, он делает это с помощью API «Счетчики производительности».

Я думаю, что эта статья делает то, что вам нужно, перечисляет запущенные процессы, перечисляет дескрипторы для каждого, ищет дескриптор файла, ссылающийся на путь на рассматриваемом диске:

Как перечислить дескрипторы процесса?

...