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.
VOID (*PKDEFERRED_ROUTINE)( IN PKDPC Dpc; IN PVOID DeferredContext; IN PVOID SystemArgument1; IN PVOID SystemArgument2; );
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.