Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

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
STATUS_INVALID_PARAMETER
The device object is invalid or if the Device, InterfaceType, or Interface parameter is NULL.
STATUS_INSUFFICIENT_RESOURCES
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)

See also

WdfIoTargetQueryForInterface


Feedback

Was this page helpful?

Additional resources