From: "Erich E. Hoover" Subject: [PATCH 1/2] server: STATUS_MORE_PROCESSING_REQUIRED indicates that an async operation should not send a completion (try 5, resend). Message-Id: Date: Wed, 6 Jun 2012 18:23:41 -0600 Real Name: Erich Hoover Description: Several MSDN articles indicate that kernel drivers can respond with STATUS_MORE_PROCESSING_REQUIRED to indicate that an IRP is incomplete and that the I/O manager should not produce a completion notification. Handling the return value of our async operations in this way permits us to handle completions for closed AcceptEx socket handles (part 2). This version has been modified to no-longer change the internal status, a second read of the MSDN article on this topic did not support that behavior. Also, this version sees the code move over to the add_async_completion() routine and adds a small comment describing the intended behavior. This patch was resent since it did not appear on the patches list even though the other patch did, if it ends up being a double post then I sincerely apologize. Changelog: server: STATUS_MORE_PROCESSING_REQUIRED indicates that an async operation should not send a completion. From c0dd9a6bad1b88b27bec80fa752f5af527a5d889 Mon Sep 17 00:00:00 2001 From: Erich Hoover Date: Wed, 6 Jun 2012 17:35:08 -0600 Subject: server: STATUS_MORE_PROCESSING_REQUIRED indicates that an async operation should not send a completion. --- server/async.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/server/async.c b/server/async.c index 843a02b..e110e0e 100644 --- a/server/async.c +++ b/server/async.c @@ -243,6 +243,8 @@ void async_set_timeout( struct async *async, timeout_t timeout, unsigned int sta static void add_async_completion( struct async_queue *queue, apc_param_t cvalue, unsigned int status, unsigned int information ) { + if (status == STATUS_MORE_PROCESSING_REQUIRED) + return; /* The async callback has successfully finished but no completion should be reported */ if (queue->fd) { apc_param_t ckey; -- 1.7.5.4