None of the have to run in a DPC/worker thread.
If you are doing injection at any of the transport layers (IN/OUTBOUND_TRANSPORT, STREAM_PACKET, etc.) and the protocol is TCP, then you need to use a worker thread at PASSIVE_LEVEL. This is due to TCP's locking mechanisms.
Hope this helps,
Dusty Harper [MSFT]
Microsoft Corporation
------------------------------------------------------------
This posting is provided "AS IS", with NO warranties and confers NO rights
------------------------------------------------------------