User`s manual
11.5 The Kernel PlugIn Architecture
120
11.5.4.2 Handling User-Mode Requests from the Kernel PlugIn
Event/Callback Notes
Event: Your application calls
WDC_CallKerPlug()
[B.3.17], or the low-level
WD_KernelPlugInCall()
function (see the
WinDriver PCI Low-Level API Reference).
Your application calls
WDC_CallKerPlug()
/
WD_KernelPlugInCall()
to execute code in the kernel
mode (in the Kernel PlugIn driver). The application
passes a message to the Kernel PlugIn driver. The
Kernel PlugIn driver will select the code to execute
according to the message sent.
Callback: Your
KP_Call()
Kernel PlugIn
routine [B.6.4] is called.
KP_Call()
[B.6.4] executes code according to the
message passed to it from the user mode.
11.5.4.3 Interrupt Handling – Enable/Disable and High Interrupt Request
Level Processing
Event/Callback Notes
Event: Your application calls
WDC_IntEnable()
[B.3.43] with the
fUseKP
parameter set to
TRUE
(after having opened
the device with a Kernel PlugIn), or calls
the low-level
InterruptEnable()
or
WD_IntEnable()
functions (see the WinDriver
PCI Low-Level API Reference) with a
handle to a Kernel PlugIn driver (set in the
hKernelPlugIn
field of the
WD_INTERRUPT
structure passed to the function).
Callback: Your
KP_IntEnable()
Kernel PlugIn
routine [
B.6.6] is called
This function should contain any initialization required
for your Kernel PlugIn interrupt handling.
Event: Your hardware creates an interrupt.
Callback: Your
KP_IntAtIrql()
Kernel PlugIn
routine [B.6.8] is called.
KP_IntAtIrql()
runs at a high priority, and therefore
should perform only the basic interrupt handling (such
as lowering the HW interrupt signal of level sensitive
interrupts in order to acknowledge the interrupt).
If more interrupt processing is needed,
KP_IntAtIrql()
can return
TRUE
in order to
defer additional processing to the
KP_IntAtDpc()
function [B.6.9].










