DMA Enabler
WDFDMAENABLER
Enables DMA on a given channel for a driver.
DMA Transaction
WDFDMATRANSACTION
Instance of a DMA transaction.
Driver
WDFDRIVER
Root object for the driver; represents the driver, its parameters, and its callbacks, among other items.
File
WDFFILEOBJECT
Instance of a file object that can be used as a channel for communication between an application and the driver.
Generic Object
WDFOBJECT
Allows driver-defined custom data to be wrapped inside the framework’s object data model as an object.
Interrupt
WDFINTERRUPT
Instance of an interrupt that the driver must handle.
I/O Queue
WDFQUEUE
Represents a given I/O queue.
I/O Request
WDFREQUEST
Represents a given request on a WDFQUEUE.
I/O Target
WDFIOTARGET
Represents the device stack being targeted by a given WDFREQUEST.
Look-Aside List
WDFLOOKASIDE
Describes an executive look-aside list.
Memory
WDFMEMORY
Describes a region of paged or nonpaged pool.
Registry Key
WDFKEY
Describes a registry key.
Resource List
WDFCMRESLIST
Identifies the hardware resources assigned to a WDFDEVICE.
Resource Range List
WDFIORESLIST
Identifies a given possible hardware resource range for a WDFDEVICE.
Resource Requirements List
WDFIORESREQLIST
Contains an array of WDFIORESLIST objects describing all possible resource ranges for a WDFDEVICE.
Spinlock
WDFSPINLOCK
Describes a spinlock (see Chapter 3 in Part 1 for more information).
String
WDFSTRING
Describes a Unicode string structure.
Timer
WDFTIMER
Describes an executive timer (see Chapter 3 in Part 1 for more information).
USB Device
WDFUSBDEVICE
Identifies the one instance of a USB device.
USB Interface
WDFUSBINTERFACE
Identifies one interface on the given WDFUSBDEVICE.
USB Pipe
WDFUSBPIPE
Identifies a pipe to an endpoint on a given WDFUSBINTERFACE.
Wait Lock
WDFWAITLOCK
Represents a kernel dispatcher event object.
WMI Instance
WDFWMIINSTANCE
Represents a WMI data block for a given WDFWMIPROVIDER.
WMI Provider
WDFWMIPROVIDER
Describes the WMI schema for all the WDFWMIINSTANCE objects supported by the driver.
Work Item
WDFWORKITEM
Describes an executive work item.
For each of these objects, other KMDF objects can be attached as children—some objects have only one or two valid parents, while other objects can be attached to any parent. For example, a WDFINTERRUPT object must be associated with a given WDFDEVICE, but a WDFSPINLOCK or WDFSTRING can have any object as a parent, allowing fine-grained control over their validity and usage and reducing global state variables. Figure 8-30 shows the entire KMDF object hierarchy.
Note that the associations mentioned earlier and shown in the figure are not necessarily immediate. The parent must simply be on the
Closely related to the concept hierarchy is KMDF’s notion of
Object contexts allow all KMDF objects to contain such information, and they additionally allow multiple
Finally, KMDF objects are also associated with a set of attributes that are shown in Table 8-6. These attributes are usually configured to their defaults, but the values can be overridden by the driver when creating the object by specifying a WDF_OBJECT_ATTRIBUTES structure (similar to the object manager’s OBJECT_ATTRIBUTES structure that’s used when creating a kernel object).
Attribute
Description
ContextSizeOverride
Size of the object context area.
ContextTypeInfo
Type of the object context area.
EvtCleanupCallback