Ну, вы знаете, что это возможно, Handle утилита Sysinternals' это делает. NtQueryInformation не будет отменена, это важный низкоуровневый интерфейс между Win32 и «реальной» операционной системой.
Что никогда не произойдет, так это то, что аргументы NtQueryInformation, которые позволяют выполнять итерационные дескрипторы, будут задокументированы. Поскольку это не останавливается, некоторые muppet будет использовать его для вызова CloseHandle() в файле, который он/она не хочет блокировать. Который очень хороший способ уничтожить содержимое вашего жесткого диска.
Процесс, которому принадлежит ручка, не знает, что ручка закрыта. Он просто будет писать на него, возможно, полностью игнорируя код возврата «не работает» от WriteFile(). Это безобидно, пока программа не откроет другой дескриптор, получив то же значение, что и ранее закрытое. Теперь он начинает писать смесь мусора (предназначенного для предыдущего дескриптора) и новые данные для дескриптора. Совершенно уничтожая содержание того, что он пишет. Скопируйте резервные ленты, если это что-то вроде критически важной базы данных.
Возможный дубликат http://stackoverflow.com/questions/231547/tracing-which-process-that-has-opened-a-particular-file –