Функция WdfFdoQueryForInterface (wdffdo.h)

[Применяется только к KMDF]

Метод WdfFdoQueryForInterface получает доступ к интерфейсу другого драйвера с идентификатором GUID.

Синтаксис

NTSTATUS WdfFdoQueryForInterface(
  [in]           WDFDEVICE  Fdo,
  [in]           LPCGUID    InterfaceType,
  [out]          PINTERFACE Interface,
  [in]           USHORT     Size,
  [in]           USHORT     Version,
  [in, optional] PVOID      InterfaceSpecificData
);

Параметры

[in] Fdo

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

[in] InterfaceType

Указатель на GUID, который идентифицирует интерфейс.

[out] Interface

Указатель на структуру, выделенную драйвером, которая получает запрошенный интерфейс. Эта структура определяется драйвером, который экспортирует запрошенный интерфейс и должен начинаться со структуры INTERFACE .

[in] Size

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

[in] Version

Номер версии запрошенного интерфейса. Формат этого значения определяется драйвером, который экспортирует запрошенный интерфейс.

[in, optional] InterfaceSpecificData

Дополнительные сведения об интерфейсе. Этот параметр является необязательным и может иметь значение NULL.

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

Если операция выполнена успешно, метод возвращает STATUS_SUCCESS. К дополнительным возвращаемым значениям относятся:

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

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

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

Комментарии

Драйвер может вызвать WdfFdoQueryForInterface , чтобы получить доступ к интерфейсу, определенному драйвером, который был создан драйвером, который находится в том же стеке драйверов, что и драйвер. Чтобы получить доступ к интерфейсу, определенному драйвером, который был создан драйвером, который находится в другом стеке драйверов, драйвер должен вызвать WdfIoTargetQueryForInterface.

Драйверы на основе платформы определяют интерфейсы путем вызова WdfDeviceAddQueryInterface.

Дополнительные сведения о WdfFdoQueryForInterface см. в разделе Использование интерфейсов Driver-Defined.

Примеры

Следующий пример кода приведен в примере драйвера функции Тостера . Этот пример получает доступ к интерфейсу, который определяет драйвер автобуса с примером тостера.

status = WdfFdoQueryForInterface(
                                 Device,
                                 &GUID_TOASTER_INTERFACE_STANDARD,
                                 (PINTERFACE) &fdoData->BusInterface, // Object context space
                                 sizeof(TOASTER_INTERFACE_STANDARD),
                                 1,
                                 NULL
                                 );

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Верхняя часть wdffdo.h (включая Wdf.h)
Библиотека Wdf01000.sys (см. раздел Управление версиями библиотеки платформы).
IRQL PASSIVE_LEVEL
Правила соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

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

WdfIoTargetQueryForInterface