Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Драйвер устройства должен избегать опроса своего устройства, если это не обязательно, и никогда не следует использовать весь срез времени для опроса. Опрос устройства — это дорогостоящая операция, которая приводит к тому, что операционная система становится зависимой от драйвера опроса для выполнения вычислений. Драйвер устройства, который делает много опросов, вмешивается в операции ввода-вывода на других устройствах и может сделать систему медленной и неответственной для пользователей.
Недавно разработанные устройства, которые являются столь же технологически продвинутыми, как и процессоры, на которых Windows предназначена для работы, редко требуют драйвера для опроса устройств, чтобы убедиться в готовности устройства к началу операции ввода-вывода или в завершенности такой операции.
Тем не менее, некоторые устройства по-прежнему используются для работы со старыми процессорами, с узкими шинами данных, низкими тактовыми частотами и однопользовательскими, однозадачными операционными системами, которые осуществляли синхронный ввод-вывод. Для таких устройств может потребоваться опрос или другие средства ожидания обновления регистров устройства.
Хотя это может показаться логичным решением проблемы медленного устройства путём кодирования простого цикла, который увеличивает счётчик, тем самым "затрачивая" минимальный интервал при обновлении регистров устройства, такой драйвер вряд ли будет совместим с различными платформами Windows. Максимальное значение счетчика цикла требует настройки для каждой платформы. Кроме того, если драйвер компилируется с хорошим оптимизатором, компилятор может удалить переменную счетчика драйвера и циклы, в которых он увеличивается.
Заметка Следуйте этому руководству по реализации, если драйвер должен приостановить выполнение, пока оборудование устройства обновляет своё состояние: драйвер может вызвать KeStallExecutionProcessor, прежде чем он считывает регистры устройства. Драйвер должен минимизировать интервал остановки и, в общем, указывать интервал не более 50 микросекунд.
Степень детализации интервала KeStallExecutionProcessor составляет один микросекунд.
Если для обновления состояния устройства часто требуется более 50 микросекунд, рекомендуется настроить поток, выделенный для устройства в драйвере.