Framework Objects

Warning

UMDF 2 is the latest version of UMDF and supersedes UMDF 1. All new UMDF drivers should be written using UMDF 2. No new features are being added to UMDF 1 and there is limited support for UMDF 1 on newer versions of Windows 10. Universal Windows drivers must use UMDF 2.

The archived UMDF 1 samples can be found in the Windows 11, version 22H2 - May 2022 Driver Samples Update.

For more info, see Getting Started with UMDF.

The following table provides basic information about each framework object, links to the object's interface, and links to more information about the core framework objects.

Objectname ObjectInterface Purpose Defaultparent Can driver overridedefaultparent? Can driver own?

Driver object

IWDFDriver

Represents a driver

None

No

No

Device object

IWDFDevice

Represents a device

Driver object

No

No

File object

IWDFFile

Represents a file

Device object

No

No, if created by framework; Yes, if created by driver

Interrupt object

IWDFInterrupt

Represents an interrupt

Device object

No

Yes

Queue object

IWDFIoQueue

Represents an I/O queue that receives I/O requests

Device object

No

Yes

Request object

IWDFIoRequest

Represents an I/O request

Device object

No, if created by framework; Yes, if created by driver

No, if created by framework (for example, redirected requests); Yes, if created by driver

Target object

IWDFIoTarget

Represents a driver that another driver sends requests to

Device object

No

No, for the default target; Yes, for all other targets

USB device object

IWDFUsbTargetDevice

Represents a device that is connected to USB

Device object

No

Yes (see target object)

USB pipe object

IWDFUsbTargetPipe

Represents a USB device pipe

Device object

No

Yes (see target object)

USB interface object

IWDFUsbInterface

Represents a USB device interface

Device object

No

Yes (see target object)

Base object

IWDFObject

Represents a general base object

Driver object

Yes

Yes, if created by driver

Memory object

IWDFMemory

Represents a memory object

Driver object

Yes

No, if created by framework; Yes, if created by driver