INTERFACE structure (wdm.h)
The INTERFACE structure describes an interface that is exported by a driver for use by other drivers.
Syntax
typedef struct _INTERFACE {
USHORT Size;
USHORT Version;
PVOID Context;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
} INTERFACE, *PINTERFACE;
Members
Size
Size, in bytes, of a structure defining a driver interface, including this structure and interface-specific members.
Version
Driver-defined interface version.
Context
Pointer to interface-specific context information.
InterfaceReference
Pointer to a driver-supplied InterfaceReference routine that increments the interface's reference count.
InterfaceDereference
Pointer to a driver-supplied InterfaceDereference routine that decrements the interface's reference count.
Remarks
The INTERFACE structure must be included as the first member of all structures that describe interfaces returned by drivers in response to an IRP_MN_QUERY_INTERFACE request.
The InterfaceReference routine must be called by the driver that exports the interface, each time the driver supplies that interface in response to IRP_MN_QUERY_INTERFACE. Likewise, if the driver that requests the interface subsequently passes it to another driver, the driver that passes the interface must call InterfaceReference on behalf of the driver that receives it.
Each driver that imports the interface (whether by sending IRP_MN_QUERY_INTERFACE or by receiving the interface from another driver) must call the InterfaceDereference routine after it has finished using the interface. After calling the InterfaceDereference routine, a driver cannot use the interface again without first reobtaining it.
When introducing a new version of an existing interface, create a new GUID instead of revising the Size or Version fields of this structure. For more info, see Using Driver-Defined Interfaces.
Requirements
Requirement | Value |
---|---|
Header | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h) |