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 se puede 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 de retorno | Descripción |
---|---|
|
El objeto de dispositivo no es válido o si el Device, InterfaceTypeo parámetro Interface es null. |
|
El marco no pudo asignar una solicitud para enviar a otro controlador. |
El método también puede devolver otros valores de NTSTATUS.
Se produce una comprobación de errores del sistema si el controlador proporciona un identificador de objeto no válido.
Observaciones
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 llamando a WdfDeviceAddQueryInterface.
Para obtener más información sobre WdfFdoQueryForInterface, vea Using Driver-Defined Interfaces.
Ejemplos
El ejemplo de código siguiente 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 | Valor |
---|---|
de la plataforma de destino de | Universal |
versión mínima de KMDF | 1.0 |
encabezado | wdffdo.h (incluya Wdf.h) |
Biblioteca | 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) |