WdfFdoQueryForInterface function (wdffdo.h)
[Applies to KMDF only]
The WdfFdoQueryForInterface method obtains access to another driver's GUID-identified interface.
Syntax
NTSTATUS WdfFdoQueryForInterface(
[in] WDFDEVICE Fdo,
[in] LPCGUID InterfaceType,
[out] PINTERFACE Interface,
[in] USHORT Size,
[in] USHORT Version,
[in, optional] PVOID InterfaceSpecificData
);
Parameters
[in] Fdo
A handle to a framework device object.
[in] InterfaceType
A pointer to a GUID that identifies the interface.
[out] Interface
A pointer to a driver-allocated structure that receives the requested interface. This structure is defined by the driver that exports the requested interface and must begin with an INTERFACE structure.
[in] Size
The size, in bytes, of the driver-allocated structure that represents the requested interface.
[in] Version
The version number of the requested interface. The format of this value is defined by the driver that exports the requested interface.
[in, optional] InterfaceSpecificData
Additional interface-specific information. This parameter is optional and can be NULL.
Return value
If the operation succeeds, the method returns STATUS_SUCCESS. Additional return values include:
Return code | Description |
---|---|
|
The device object is invalid or if the Device, InterfaceType, or Interface parameter is NULL. |
|
The framework could not allocate a request to send to another driver. |
The method might also return other NTSTATUS values.
A system bug check occurs if the driver supplies an invalid object handle.
Remarks
Your driver can call WdfFdoQueryForInterface to obtain access to a driver-defined interface that was created by a driver that is in the same driver stack that your driver is in. To access a driver-defined interface that was created by a driver that is in a different driver stack, your driver must call WdfIoTargetQueryForInterface.
Framework-based drivers define interfaces by calling WdfDeviceAddQueryInterface.
For more information about WdfFdoQueryForInterface, see Using Driver-Defined Interfaces.
Examples
The following code example is from the Toaster sample function driver. This example obtains access to an interface that the toaster sample bus driver defines.
status = WdfFdoQueryForInterface(
Device,
&GUID_TOASTER_INTERFACE_STANDARD,
(PINTERFACE) &fdoData->BusInterface, // Object context space
sizeof(TOASTER_INTERFACE_STANDARD),
1,
NULL
);
Requirements
Requirement | Value |
---|---|
Target Platform | Universal |
Minimum KMDF version | 1.0 |
Header | wdffdo.h (include Wdf.h) |
Library | Wdf01000.sys (see Framework Library Versioning.) |
IRQL | PASSIVE_LEVEL |
DDI compliance rules | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |