KeInitializeDpc

VOID
    KeInitializeDpc(

        IN PKDPC  Dpc,
        IN PKDEFERRED_ROUTINE  DeferredRoutine,
        IN PVOID  DeferredContext
        );

KeInitializeDpc initializes a DPC object, setting up a deferred procedure that can be called with a given context.

Parameters

Dpc
Points to a DPC object for which the caller provides the storage.
DeferredRoutine
Specifies the entry point for a routine to be called when the DPC object is removed from the DPC queue. A DeferredRoutine is declared as follows:
VOID
(*PKDEFERRED_ROUTINE)(
    IN PKDPC Dpc;
    IN PVOID DeferredContext;
    IN PVOID SystemArgument1;
    IN PVOID SystemArgument2;
    );
DeferredContext
Points to a caller-supplied context to be passed to the DeferredRoutine when it is called.

Comments

The caller can queue an initialized DPC with KeInsertQueueDpc. The caller also can set up a timer object associated with the initialized DPC object and queue the DPC with KeSetTimer.

Storage for the DPC object must be resident: in the device extension of a driver-created device object, in the controller extension of a driver-created controller object, or in nonpaged pool allocated by the caller.

Callers of this routine must be running at IRQL PASSIVE_LEVEL.

See Also

KeInsertQueueDpc, KeRemoveQueueDpc, KeSetTimer