Функция WdfIoTargetQueryForInterface (wdfiotarget.h)
[Относится только к KMDF]
Метод WdfIoTargetQueryForInterface получает доступ к интерфейсу удаленного целевого объекта ввода-вывода с идентификатором GUID, определяемого драйвером.
Синтаксис
NTSTATUS WdfIoTargetQueryForInterface(
[in] WDFIOTARGET IoTarget,
[in] LPCGUID InterfaceType,
[out] PINTERFACE Interface,
[in] USHORT Size,
[in] USHORT Version,
[in, optional] PVOID InterfaceSpecificData
);
Параметры
[in] IoTarget
Дескриптор удаленного целевого объекта ввода-вывода, полученный при предыдущем вызове WdfIoTargetCreate.
[in] InterfaceType
Указатель на GUID, идентифицирующий интерфейс.
[out] Interface
Указатель на структуру, выделенную драйвером, которая получает запрошенный интерфейс. Эта структура определяется драйвером, который экспортирует запрошенный интерфейс и должен начинаться со структуры INTERFACE .
[in] Size
Размер в байтах структуры, выделенной драйвером, на которую указывает Интерфейс .
[in] Version
Номер версии запрошенного интерфейса. Драйвер, экспортируемый запрошенный интерфейс, определяет формат этого значения.
[in, optional] InterfaceSpecificData
Дополнительные сведения об интерфейсе. Этот параметр является необязательным и может иметь значение NULL.
Возвращаемое значение
WdfIoTargetQueryForInterface возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае этот метод может возвращать одно из следующих значений:
Код возврата | Описание |
---|---|
|
Параметр IoTarget, InterfaceType или Interface имеет значение NULL. |
|
платформе не удалось выделить запрос для отправки другому драйверу. |
Этот метод также может возвращать другие значения NTSTATUS.
Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Комментарии
Драйвер может вызвать WdfIoTargetQueryForInterface , чтобы получить доступ к интерфейсу, определенному драйвером, который был создан драйвером в другом стеке драйверов. Чтобы получить доступ к интерфейсу, определенному драйвером, который был создан драйвером, который находится в том же стеке драйверов, что и драйвер, драйвер должен вызвать WdfFdoQueryForInterface.
Драйверы на основе платформы определяют интерфейсы, вызывая WdfDeviceAddQueryInterface. Дополнительные сведения об интерфейсах, определяемых драйвером, см. в разделе Использование интерфейсов Driver-Defined.
Примеры
В следующем примере кода предпринимается попытка получить доступ к интерфейсу указанного удаленного целевого объекта ввода-вывода. GUID_RAWPDO_INTERFACE_STANDARD — это GUID, идентифицирующий интерфейс.
NTSTATUS status;
RAWPDO_INTERFACE_STANDARD busInterface;
status = WdfIoTargetQueryForInterface(
IoTarget,
&GUID_RAWPDO_INTERFACE_STANDARD,
(PINTERFACE) &busInterface,
sizeof(RAWPDO_INTERFACE_STANDARD),
1,
NULL
);
if (!NT_SUCCESS (status)){
return status;
}
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Верхняя часть | wdfiotarget.h (включая Wdf.h) |
Библиотека | Wdf01000.sys (см. раздел Управление версиями библиотеки Платформы). |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |