Функция WdfIoQueueStop (wdfio.h)
[Применимо к KMDF и UMDF]
Метод WdfIoQueueStop предотвращает доставку запросов ввода-вывода в очередь ввода-вывода, но очередь получает и сохраняет новые запросы.
Синтаксис
void WdfIoQueueStop(
[in] WDFQUEUE Queue,
[in, optional] PFN_WDF_IO_QUEUE_STATE StopComplete,
[in, optional] WDFCONTEXT Context
);
Параметры
[in] Queue
Дескриптор объекта очереди платформы.
[in, optional] StopComplete
Указатель на предоставленную драйвером функцию обратного вызова EvtIoQueueState . Этот параметр является необязательным и может иметь значение NULL.
[in, optional] Context
Нетипизированный указатель на предоставленные драйвером сведения о контексте, которые платформа передает функции обратного вызова EvtIoQueueState . Этот параметр является необязательным и может иметь значение NULL.
Возвращаемое значение
None
Remarks
Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Если драйвер предоставляет функцию обратного вызова EvtIoQueueState , платформа вызывает ее после завершения или отмены всех запросов, доставленных драйверу. Вы можете изменить IRQL, в котором выполняется обратный вызов, указав ExecutionLevel в WDF_OBJECT_ATTRIBUTES во время создания очереди. Дополнительные сведения см. в разделе ПримечанияEVT_WDF_IO_QUEUE_STATE.
Метод WdfIoQueueStop позволяет очереди получать новые запросы, даже если очередь не получала новые запросы до драйвера WdfIoQueueStop. Например, перед вызовом WdfIoQueueStop драйвер может вызвать WdfIoQueueDrain, что приводит к прекращению добавления новых запросов ввода-вывода в очередь. Последующий вызов драйвера WdfIoQueueStop заставляет платформу возобновить добавление запросов в очередь.
Драйвер не должен вызывать WdfIoQueueDrain после вызова WdfIoQueueStop , пока он не перезапустит очередь, вызвав WdfIoQueueStart.
Дополнительные сведения о методе WdfIoQueueStop см. в разделе Управление очередями ввода-вывода.
Примеры
В следующем примере кода останавливается указанная очередь ввода-вывода. Когда все запросы, доставленные драйверу, были завершены или отменены, он вызывает функцию EvtIoQueueStateStop драйвера.
WDFCONTEXT stopContext;
stopContext = &myContext;
WdfIoQueueStop(
queue,
EvtIoQueueStateStop,
stopContext
);
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Минимальная версия UMDF | 2,0 |
Верхняя часть | wdfio.h (включая Wdf.h) |
Библиотека | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
Правила соответствия DDI | ChangeQueueState(kmdf), DriverCreate(kmdf), EvtSurpriseRemoveNoSuspendQueue(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NoCancelFromEvtSurpriseRemove(kmdf) |