Я встречал те же случаи, что вы упомянули.
Поскольку TerminateProcess
является асинхронным и The terminated process cannot exit until all pending I/O has been completed or canceled. When a process terminates, its kernel object is not destroyed until all processes that have open handles to the process have released those handles.
Цитирование из MSDN.
Также возможен ввод / вывод в обычном случае, есть два способа отменить ввод / вывод.
- вызов
CancelIo
для отмены ввода-вывода вручную. - уменьшение значения времени ожидания записи из реестра
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Disk\TimeOutValue