I/O Packets from Kernel to User mode

Hi,

is it possible to send I/O packets on a completion port from a driver?

basically i have thread pool waiting on a completion port in user mode is it possible to send jobs on this completion port from kernel mode? if not is there a similar mechanism(i.e not completion ports) how this can be accomplished?

Thanks!

Yes you can do this, this is the “inverted call model”. What you need
to do is have a number of requests with buffers waiting in the driver,
then complete them for the IOCP to process when the thread is done
processing it issues a request back to the driver so the buffer is
available again. See http://www.osronline.com/article.cfm?id=94

Don Burn (MVP, Windows DKD)
Windows Filesystem and Driver Consulting
Website: http://www.windrvr.com
Blog: http://msmvps.com/blogs/WinDrvr

xxxxx@yahoo.com” wrote in message
news:xxxxx@ntdev:

> Hi,
>
> is it possible to send I/O packets on a completion port from a driver?
>
> basically i have thread pool waiting on a completion port in user mode is it possible to send jobs on this completion port from kernel mode? if not is there a similar mechanism(i.e not completion ports) how this can be accomplished?
>
> Thanks!

Okay, Thanks for your response!

> basically i have thread pool waiting on a completion port in user mode

Let the pool wait on completion of some IOCTLs instead.

Pend IOCTLs in the driver.

To submit the work item, fill the buffer of 1 IOCTL and complete it.


Maxim S. Shatskih
Windows DDK MVP
xxxxx@storagecraft.com
http://www.storagecraft.com