DPC & scheduler

Hi all,
I have several basic questions here.
Who would like to help me?

I know that the Dispatch Level software interrupt is issued by
HalRequestSoftwareInterrupt.

  1. But Who will issue the interrupt request? When does the Dispatch Level
    software interrupt request occur?"

2.Does the InsertQueueDpc() or the timer interrupt handler
raises a dispatch level interrupt when the time slice counter becomes 0 ?

  1. What on earth does the Dispatch Level Interrupt Handler do?

4.What’s the relation of the Dispatch Level Interrupt and the thread
scheduler? Thread scheduling?
Thanks a million.

Best regards,
Andy