Функция WdfRequestIsCanceled (wdfrequest.h)

[Относится к KMDF и UMDF]

Метод WdfRequestIsCanceled определяет, пытался ли диспетчер операций ввода-вывода отменить указанный запрос ввода-вывода.

Синтаксис

BOOLEAN WdfRequestIsCanceled(
  [in] WDFREQUEST Request
);

Параметры

[in] Request

Дескриптор объекта запроса платформы.

Возвращаемое значение

WdfRequestIsCanceled возвращает значение TRUE , если диспетчер операций ввода-вывода пытался отменить указанный запрос ввода-вывода. Этот метод может возвращать значение TRUE , даже если вызывающий драйвер не является владельцем запроса. Если драйвер не владеет запросом, он не должен вызывать WdfRequestIsCanceled. Дополнительные сведения см. в разделе Примечания.

WdfRequestIsCanceled возвращает значение FALSE по одной из следующих причин:

  • Диспетчер операций ввода-вывода не пытался отменить запрос.
  • Вызывающий драйвер не владеет запросом.
  • Вызывающий драйвер вызвал метод WdfRequestMarkCancelable или WdfRequestMarkCancelableEx .

Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Комментарии

Если драйвер не вызывал функцию обратного вызова EvtRequestCancelable или WdfRequestMarkCancelableEx для регистрации функции обратного вызова EvtRequestCancel , но если вы хотите, чтобы драйвер определил, попытался ли диспетчер операций ввода-вывода отменить запрос ввода-вывода, драйвер может вызвать WdfRequestIsCanceled.

Если драйвер вызвал WdfRequestMarkCancelable или WdfRequestMarkCancelableEx, он должен вызвать WdfRequestUnmarkCancelable перед вызовомWdfRequestIsCanceled.

Драйвер может вызывать WdfRequestIsCanceled для запроса, только если драйвер владеет запросом ввода-вывода.

Если WdfRequestIsCanceled возвращает значение TRUE, драйвер должен отменить запрос, вызвав WdfRequestComplete с параметром Status STATUS_CANCELLED. Если драйвер пытается выполнить запрос, который ему не принадлежит, драйвер может вызвать сбой системы.

Дополнительные сведения о WdfRequestIsCanceled см. в разделе Отмена запросов ввода-вывода.

Примеры

В следующем примере кода вызывается WdfRequestComplete, если WdfRequestIsCanceled возвращает значение TRUE.

if (WdfRequestIsCanceled(request)) {
    WdfRequestComplete(
                       request,
                       STATUS_CANCELLED
                       );
}

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть wdfrequest.h (включая Wdf.h)
Библиотека Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Правила соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), ReqIsCancOnCancReq(kmdf)

См. также раздел

EvtRequestCancel

WdfRequestComplete

WdfRequestMarkCancelable

WdfRequestMarkCancelableEx

WdfRequestUnmarkCancelable