Поделиться через


Организация очередей DPC

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

Контроллеры домена, назначенные очереди конкретного процессора, выполняются на этом процессоре. По умолчанию, когда драйвер вызывает KeInsertQueueDpc или IoRequestDpc, DPC помещается в очередь на текущем активном процессоре. Драйверы могут указать очередь процессора, вызвав KeSetTargetProcessorDpc перед вызовом KeInsertQueueDpc или IoRequestDpc.

В Windows Vista и более поздних версиях Windows система также имеет одну очередь DPC с потоком для каждого процессора. Драйверы могут использовать KeSetTargetProcessorDpc для указания очереди процессора для потоковых DPC.

Подпрограмма KeSetImportanceDpc управляет размещением DPC в очереди. Как правило, DPC размещается в конце очереди; Но если драйвер сначала вызывает KeSetImportanceDpc с параметром Importance , равным HighImportance, DPC помещается в начало очереди.

Для обычных (непоточных) DPC KeSetImportanceDpc также определяет, будет ли KeInsertQueueDpc или IoRequestDpc немедленно начать обработку очереди DPC. В следующем списке описаны правила обработки очереди:

  • Обработка очереди DPC начинается немедленно, если DPC назначается текущему процессору, а важность не равна LowImportance или если важность равна LowImportance , а глубина очереди DPC текущего процессора превышает системное ограничение или частота запросов DPC упала ниже системного минимума. В противном случае обработка DPC откладывается до тех пор, пока не будут выполнены требования к соответствующей глубине очереди и скорости.

  • Обработка очереди DPC начинается немедленно на целевом процессоре, если DPC назначается процессору, который отличается от текущего процессора и важность равна MediumHighImportance или HighImportance, или если глубина очереди DPC целевого процессора превышает системное ограничение. В противном случае обработка DPC откладывается до тех пор, пока не будут выполнены требования к соответствующей глубине очереди и скорости.