Программирование устройства для операции ввода-вывода
Используйте следующие общие рекомендации по проектированию, написанию и вызову процедур SynchCritSection , программируя устройство для операций ввода-вывода.
Подпрограмма SynchCritSection, которая программы устройства для операций ввода-вывода, должна как можно быстрее возвращать управление.
По этой причине подпрограмма SynchCritSection должна выполнять только то, что необходимо для настройки устройства для ввода-вывода. Поэтому драйвер должен выполнить всю предварительную обработку IRP, инициализацию сведений о состоянии для других процедур драйвера и получение аппаратных ресурсов перед вызовом процедуры SynchCritSection .
Драйвер устройства может иметь несколько подпрограмм SynchCritSection для программирования устройства.
Например, драйвер устройства, для которого настройка запроса на чтение заметно отличается от настройки определенных запросов на управление устройством, может иметь отдельные подпрограммы SynchCritSection для программирования устройства для каждого типа запроса.
Каждая подпрограмма SynchCritSection должна возвращать управление как можно быстрее, так как выполнение любой подпрограммы SynchCritSection предотвращает выполнение ISR драйвера.
Не следует писать одну большую подпрограмму SynchCritSection общего назначения с оператором switch или несколькими вложенными if.. Затем.. операторы else , чтобы определить, какие операции будут выполняться или какие сведения о состоянии следует обновить. С другой стороны, следует избегать написания многочисленных подпрограмм SynchCritSection , которые программируют только один регистр устройства.