WdfIoTargetCreate function (wdfiotarget.h)

[Applies to KMDF and UMDF]

The WdfIoTargetCreate method creates a remote I/O target for a specified device.


NTSTATUS WdfIoTargetCreate(
  [in]           WDFDEVICE              Device,
  [in, optional] PWDF_OBJECT_ATTRIBUTES IoTargetAttributes,
  [out]          WDFIOTARGET            *IoTarget


[in] Device

A handle to a framework device object.

[in, optional] IoTargetAttributes

A pointer to a caller-allocated WDF_OBJECT_ATTRIBUTES structure that specifies object attributes for the I/O target object. This parameter is optional and can be WDF_NO_OBJECT_ATTRIBUTES.

[out] IoTarget

A pointer to a location that receives a handle to an I/O target object.

Return value

WdfIoTargetCreate returns STATUS_SUCCESS if the operation succeeds. Otherwise, this method might return one of the following values:

Return code Description
An invalid parameter was detected.
There was insufficient memory to create a new I/O target object.
The ParentObject member of the WDF_OBJECT_ATTRIBUTES structure that IoTargetAttributes specified did not specify the framework device object that Device specified, or an object whose chain of parents leads to that object.

For a list of other return values that WdfIoTargetCreate can return, see Framework Object Creation Errors.

This method also might return other NTSTATUS values.

A bug check occurs if the driver supplies an invalid object handle.


After a driver calls WdfIoTargetCreate, the driver must call WdfIoTargetOpen before it can send requests to the remote I/O target.

If the driver specifies a parent object in the WDF_OBJECT_ATTRIBUTES structure's ParentObject member, the parent object can be a framework device object or any object whose chain of parents leads to a framework device object. The framework will delete the I/O target object when it (or the driver) deletes the device object.

For more information about WdfIoTargetCreate, see Initializing a General I/O Target.

If your driver provides EvtCleanupCallback or EvtDestroyCallback callback functions for the I/O target object, note that the framework calls these callback functions at IRQL = PASSIVE_LEVEL.

For more information about I/O targets, see Using I/O Targets.


For a code example that uses WdfIoTargetCreate, see WdfIoTargetOpen.


Requirement Value
Target Platform Universal
Minimum KMDF version 1.0
Minimum UMDF version 2.0
Header wdfiotarget.h (include Wdf.h)
Library Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
DDI compliance rules DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

See also