Функция WdfRequestIsCanceled (wdfrequest.h)
[Применимо к KMDF и UMDF]
Метод WdfRequestIsCanceled определяет, попытается ли диспетчер ввода-вывода отменить указанный запрос ввода-вывода.
Синтаксис
BOOLEAN WdfRequestIsCanceled(
[in] WDFREQUEST Request
);
Параметры
[in] Request
Дескриптор объекта запроса платформы.
Возвращаемое значение
WdfRequestIsCanceled возвращает TRUE, если менеджер ввода-вывода попытался отменить указанный запрос ввода-вывода. Этот метод может возвращать TRUE даже если вызывающий драйвер не владеет запросом. Если драйвер не владеет запросом, он не должен вызывать WdfRequestIsCanceled. Дополнительные сведения см. в примечаниях.
WdfRequestIsCanceled возвращает FALSE по одной из следующих причин:
- Диспетчер ввода-вывода не пытался отменить запрос.
- Вызывающий драйвер не владеет запросом.
- Вызывающий драйвер вызвал метод WdfRequestMarkCancelable или метод WdfRequestMarkCancelableEx.
Ошибка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Замечания
Если драйвер не вызвал WdfRequestMarkCancelable или WdfRequestMarkCancelableEx для регистрации функции обратного вызова EvtRequestCancel, но если вы хотите, чтобы ваш драйвер мог определить, пытается ли диспетчер ввода-вывода отменить запрос ввода-вывода, драйвер может вызвать WdfRequestIsCanceled.
Если драйвер вызвал WdfRequestMarkCancelable или WdfRequestMarkCancelableEx, он должен вызывать WdfRequestUnmarkCancelable перед вызовом WdfRequestIsCanceled.
Драйвер может вызывать WdfRequestIsCanceled для запроса, только если драйвер владеет запросе ввода-вывода.
Если WdfRequestIsCanceled возвращает TRUE, драйвер должен отменить запрос, вызвав WdfRequestComplete с параметр ом состояния 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) |