Вызов CreateFile по пути физического устройства в цикле

У меня есть некоторый код C#, который вызывает CreateFile на другом пути физического устройства каждый раз через цикл (т.е. \.\PhysicalDrive1, затем \.\PhysicalDrive2,...) через pInvoke, а затем с помощью возвращенного дескриптора выполняет другой низкоуровневый окна вещи. В конце цикла он вызывает CloseHandle для дескриптора.

Во время отладки я заметил, что значение int дескриптора было одинаковым при каждом проходе цикла. Я вижу, что это либо ожидаемо (Windows просто повторно использует дескриптор), либо неожиданно (дескриптор не был выпущен на последнем проходе).

Поэтому я просто хочу проверить, является ли это ожидаемым (или, по крайней мере, неправильным) поведением.


person µBio    schedule 12.11.2009    source источник


Ответы (1)


Дескриптор — это просто индекс для некоторой записи в некоторой таблице ядра. Если вы неоднократно открываете и закрываете дескриптор, вполне возможно, что он получит одну и ту же запись в таблице и, следовательно, один и тот же индекс.

Имейте в виду, что это зависит от конкретной реализации и может измениться в любом новом выпуске, пакете обновлений или QFE.

person Michael    schedule 12.11.2009
comment
Спасибо, так говорила моя интуиция, но нужно было подтверждение. - person µBio; 12.11.2009