“A kernel-mode APC is required because the thread in question is not in an alertable wait state. A special APC is required because the thread is actually ineligible to run at the time we need to deliver the APC. In fact, the APC routine is the mechanism for awakening the thread.”
Programming the Microsoft Windows Driver Model
I know, User-mode APCs also make threads run. (Waitforxxx returns WAIT_IO_COMPLETION.)
So does
“special APC is required because the thread is actually ineligible to run at the time we need to deliver the APC”
mean (when IRQL= APC_LEVEL) special kernel mode APCs cause thread switching to be able to run in a particular thread context? If not why is it special?