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

StackOverflow https://stackoverflow.com/questions/1724260

  •  19-09-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top