Функция 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, если операция выполнена успешно. В противном случае этот метод может возвращать одно из следующих значений:

Код возврата Описание
STATUS_INVALID_PARAMETER
Параметр IoTarget, InterfaceType или Interface имеет значение NULL.
STATUS_INSUFFICIENT_RESOURCES
платформе не удалось выделить запрос для отправки другому драйверу.
 

Этот метод также может возвращать другие значения 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)

См. также раздел

ИНТЕРФЕЙС

WdfDeviceAddQueryInterface

WdfFdoQueryForInterface

WdfIoTargetCreate