I have a mini filter with CommunicationPort. It has been stable for
a year and loosely based on the scanner sample.
However, i am now getting a rare “general application error” in
user mode when calling FilterGetMessage() under high loads.
Usermode recovers from the error and continues to run normally.
I am now wondering if my initial usermode “design” is at all correct.
Currently, i have
a single FilterConnectCommunicationPort handle,
a single (!) CreateIoCompletionPort,
and multiple threads with separate IO_OVERLAPPED structures.
I am able to serve multiple concurrent send-block-reply requests.
Is this at all correct ?
I had to manually set some fields such as Message.ReplyHeader.MessageId but overall the code
is stable and never bsod.
I want to keep my server port open with exclusive flag.
But i wonder if i should be using multiple completion ports?!
TIA,
Y.