Функция WdfRequestChangeTarget (wdfrequest.h)
[Относится к KMDF и UMDF]
Метод WdfRequestChangeTarget проверяет, можно ли отправить указанный запрос ввода-вывода в указанный целевой объект ввода-вывода.
Синтаксис
NTSTATUS WdfRequestChangeTarget(
[in] WDFREQUEST Request,
[in] WDFIOTARGET IoTarget
);
Параметры
[in] Request
Дескриптор объекта запроса платформы.
[in] IoTarget
Дескриптор целевого объекта ввода-вывода платформы.
Возвращаемое значение
WdfRequestChangeTarget возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае этот метод может вернуть одно из следующих значений:
Код возврата | Описание |
---|---|
|
Входной параметр недопустим. |
|
Для завершения операции недостаточно системных ресурсов. |
|
Массив расположений стека ввода-вывода запроса недостаточно велик, чтобы позволить драйверу отправить запрос в целевой объект ввода-вывода. |
Этот метод также может возвращать другие значения 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) |