Compartir a través de


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
STATUS_INVALID_PARAMETER
El objeto de dispositivo no es válido o si el parámetro Device, InterfaceType o Interface es NULL.
STATUS_INSUFFICIENT_RESOURCES
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)

Consulte también

WdfIoTargetQueryForInterface