Expand Minimize

EvtDeviceEject function

[Applies to KMDF only]

A driver's EvtDeviceEject event callback function handles operations that are necessary to eject a device from its docking station.

Syntax


EVT_WDF_DEVICE_EJECT EvtDeviceEject;

NTSTATUS EvtDeviceEject(
  _In_  WDFDEVICE Device
)
{ ... }

Parameters

Device [in]

A handle to a framework device object.

Return value

If the operation succeeds, the driver must return STATUS_SUCCESS. Otherwise it must return an NTSTATUS value that NT_SUCCESS evaluates as FALSE. Do not return STATUS_NOT_SUPPORTED.

For more information about return values, see Reporting Device Failures.

Remarks

Framework-based bus drivers can provide an EvtDeviceEject callback function. A bus driver must provide an EvtDeviceEject callback function if the driver must perform operations that physically eject one of its enumerated child devices from the device's docking station. To register this callback function, the bus driver must call WdfPdoInitSetEventCallbacks.

Before calling the EvtDeviceEject callback function, the framework calls the driver's EvtDeviceD0Exit and EvtDeviceReleaseHardware callback functions.

If a driver's EvtDeviceEject callback function returns STATUS_SUCCESS, the framework updates the driver's child list to indicate that the ejected device is no longer available. Therefore the driver does not have to call WdfPdoMarkMissing or WdfChildListUpdateChildDescriptionAsMissing.

For more information about device ejection, see Supporting Ejectable Devices.

Examples

To define an EvtDeviceEject callback function, you must first provide a function declaration that identifies the type of callback function you’re defining. Windows provides a set of callback function types for drivers. Declaring a function using the callback function types helps Code Analysis for Drivers, Static Driver Verifier (SDV), and other verification tools find errors, and it’s a requirement for writing drivers for the Windows operating system.

For example, to define an EvtDeviceEject callback function that is named MyDeviceEject, use the EVT_WDF_DEVICE_EJECT type as shown in this code example:


EVT_WDF_DEVICE_EJECT  MyDeviceEject;

Then, implement your callback function as follows:


_Use_decl_annotations_
NTSTATUS
 MyDeviceEject (
    WDFDEVICE  Device
    )
  {...}

The EVT_WDF_DEVICE_EJECT function type is defined in the Wdfpdo.h header file. To more accurately identify errors when you run the code analysis tools, be sure to add the _Use_decl_annotations_ annotation to your function definition. The _Use_decl_annotations_ annotation ensures that the annotations that are applied to the EVT_WDF_DEVICE_EJECT function type in the header file are used. For more information about the requirements for function declarations, see Declaring Functions by Using Function Role Types for KMDF Drivers. For information about _Use_decl_annotations_, see Annotating Function Behavior.

Requirements

Minimum KMDF version

1.0

Header

Wdfpdo.h (include Wdf.h)

IRQL

PASSIVE_LEVEL

See also

EvtDeviceSetLock

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft. All rights reserved.