Функция 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. К дополнительным возвращаемым значениям относятся:
Код возврата | Описание |
---|---|
|
Недопустимый объект устройства, если параметр Device, InterfaceType или Interface имеет значение NULL. |
|
Платформе не удалось выделить запрос для отправки другому драйверу. |
Метод также может возвращать другие значения 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) |