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


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

[Применимо к KMDF и UMDF]

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

Синтаксис

NTSTATUS WdfRequestChangeTarget(
  [in] WDFREQUEST  Request,
  [in] WDFIOTARGET IoTarget
);

Параметры

[in] Request

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

[in] IoTarget

Дескриптор целевого объекта ввода-вывода платформы.

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

WdfRequestChangeTarget возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае этот метод может вернуть одно из следующих значений:

Возвращаемый код Описание
STATUS_INVALID_PARAMETER
Недопустимый входной параметр.
STATUS_INSUFFICIENT_RESOURCES
Для завершения операции недостаточно системных ресурсов.
STATUS_REQUEST_NOT_ACCEPTED
Массив расположений стека ввода-вывода запроса недостаточно велик, чтобы разрешить драйверу отправлять запрос в целевой объект ввода-вывода.
 

Этот метод также может возвращать другие значения NTSTATUS.

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

Замечания

Драйвер должен вызвать метод WdfRequestChangeTarget перед вызовом WdfRequestSend, если драйвер отправляет один запрос ввода-вывода нескольким целевым объектам ввода-вывода. WdfRequestChangeTarget проверяет, что запрос можно отправить в указанный целевой объект ввода-вывода.

Большинство драйверов отправляют каждый запрос только одному устройству и таким образом только одному целевому объекту ввода-вывода. Драйвер либо получает запрос, либо создает новый запрос путем вызова WdfRequestCreate.

Если драйвер отправляет запрос на одно устройство, он вызывает WdfDeviceGetIoTarget, чтобы определить целевой объект ввода-вывода устройства, а затем вызывает WdfRequestSend отправить запрос в целевой объект.

Если драйвер отправляет запрос нескольким устройствам, он вызывает WdfDeviceGetIoTarget для каждого устройства, чтобы определить целевой объект ввода-вывода устройства. Перед вызовом WdfRequestSendдрайвер должен вызвать WdfRequestChangeTarget, чтобы обеспечить доступность каждого целевого объекта ввода-вывода.

Дополнительные сведения о WdfRequestChangeTargetсм. в запросов на пересылку операций ввода-вывода.

Примеры

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

NTSTATUS  status;

status = WdfRequestChangeTarget(
                                request,
                                WdfDeviceGetIoTarget(Device)
                                );

Требования

Требование Ценность
целевая платформа Всеобщий
минимальная версия KMDF 1.0
минимальная версия UMDF 2.0
заголовка wdfrequest.h (включая Wdf.h)
библиотеки Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
правил соответствия DDI DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

См. также

WdfDeviceGetIoTarget

WdfRequestCreate

WdfRequestSend