Función WdfFdoQueryForInterface (wdffdo.h)
[Solo se aplica a KMDF]
El método WdfFdoQueryForInterface obtiene acceso a la interfaz identificada por GUID de otro controlador.
Sintaxis
NTSTATUS WdfFdoQueryForInterface(
[in] WDFDEVICE Fdo,
[in] LPCGUID InterfaceType,
[out] PINTERFACE Interface,
[in] USHORT Size,
[in] USHORT Version,
[in, optional] PVOID InterfaceSpecificData
);
Parámetros
[in] Fdo
Identificador de un objeto de dispositivo de marco.
[in] InterfaceType
Puntero a un GUID que identifica la interfaz.
[out] Interface
Puntero a una estructura asignada por el controlador que recibe la interfaz solicitada. Esta estructura se define mediante el controlador que exporta la interfaz solicitada y debe comenzar con una estructura INTERFACE .
[in] Size
Tamaño, en bytes, de la estructura asignada por el controlador que representa la interfaz solicitada.
[in] Version
Número de versión de la interfaz solicitada. El formato de este valor se define mediante el controlador que exporta la interfaz solicitada.
[in, optional] InterfaceSpecificData
Información adicional específica de la interfaz. Este parámetro es opcional y puede ser NULL.
Valor devuelto
Si la operación se realiza correctamente, el método devuelve STATUS_SUCCESS. Entre los valores devueltos adicionales se incluyen:
Código devuelto | Descripción |
---|---|
|
El objeto de dispositivo no es válido o si el parámetro Device, InterfaceType o Interface es NULL. |
|
El marco no pudo asignar una solicitud para enviar a otro controlador. |
El método también podría devolver otros valores NTSTATUS.
Se produce una comprobación de errores del sistema si el controlador proporciona un identificador de objeto no válido.
Comentarios
El controlador puede llamar a WdfFdoQueryForInterface para obtener acceso a una interfaz definida por el controlador creada por un controlador que se encuentra en la misma pila de controladores en la que se encuentra el controlador. Para acceder a una interfaz definida por el controlador creada por un controlador que se encuentra en una pila de controladores diferente, el controlador debe llamar a WdfIoTargetQueryForInterface.
Los controladores basados en marcos definen interfaces mediante una llamada a WdfDeviceAddQueryInterface.
Para obtener más información sobre WdfFdoQueryForInterface, vea Uso de interfaces Driver-Defined.
Ejemplos
El siguiente ejemplo de código procede del controlador de función de ejemplo toaster . En este ejemplo se obtiene acceso a una interfaz que define el controlador de bus de ejemplo del tostador.
status = WdfFdoQueryForInterface(
Device,
&GUID_TOASTER_INTERFACE_STANDARD,
(PINTERFACE) &fdoData->BusInterface, // Object context space
sizeof(TOASTER_INTERFACE_STANDARD),
1,
NULL
);
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Encabezado | wdffdo.h (incluir Wdf.h) |
Library | Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos). |
IRQL | PASSIVE_LEVEL |
Reglas de cumplimiento de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |