Вызов CreateFile по пути физического устройства в цикле - PullRequest
1 голос
/ 12 ноября 2009

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

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

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

1 Ответ

3 голосов
/ 12 ноября 2009

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

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

...