Привет чуваки! Не могу понять - в чем смысл вообще? Есть драйвер который ставит в очередь ExQueueWorkItem почти все приходящие ирп пакеты. Почему бы сразу не обрабатывать пакеты, к тому же процедуры обработки достаточно маленькие. Что это дает?
смысл в том что ф-я (Routine) заданная в ExQueueWorkItem или IoQueueWorkItem выполняется на IRQL == PASSIVE_LEVEL.
Часто бывают случаи, когда находясь в контексте пользовательского процесса нужно выполнить что-то в контексте System. Например, надо выполнить действия ПОСЛЕ завершения какого-либо процесса, калбэк установленный по PsSetCreateProcessNotifyRoutine выполняется в контексте завершаемого процесса, поэтому IoQueueWorkItem будет самым лучшим выходом в такой ситуации.