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


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