Функция 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 (include 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)

См. также

EvtIoQueueState

WdfIoQueueStart

WdfIoQueueStopSynchronously