1. Windows Kernel all Entries


Dispatch entry points

ISR and DpcForISR


Complete routine





fast I/O

adaptercontrol for MDA

synchronize function


2. IRQL and Context

DriverEntry : system thread context

Dispatch entry: arbitrary thread context as calling context from user or queued by high level driver changed to system context.  



3. Works in DriverEntry

1. Determining Device Configuration



2. Create device objects.

3. Claiming the hardware resources

4. Translating Bus Address

5. Exporting entry points

6. Connecting to interrupts and registering DpcForIsr

7. Getting an adapt object for DMA

8. Performing device initialization

9. Other DriverEntry operations

10. Dynamic driver Unload.


4. Works in Dispatch entry

1. Validating requests

     User buffer check  <= MM_USER_PROBE_ADDRESS

2. Completing  requests

a. call complete routine.

b. whether it is associate IRP, if it is check whether it is the last associate IRP

c. if the IRP has MDL, unlock the pages in MDL.

d. Before kernel APC process, boost the thread priority.

3. Pending and queuing requests

System queuing : IoStartPacket() in DriverEntry. Then in startio() dispatch entry make the request active. Through ISR and in DpcForIsr(), complete request and call IostartNextPacket()

Driver queuing: use a queue and process in DpcForIsr()

4. Request processing

5. Shutdown notification

 Call a driver to process register for shutdown processing for each device object.

6. Cancel processing

 Call cancel routine, if cancelable, remove from list and release spin lock. KeRemoveentryDeviceQueue()

 Else, just release spin lock.