I've just stumbled upon Microsoft's HTTP Server API. The introduction states:
The HTTP Server API enables applications to communicate over HTTP without using Microsoft Internet Information Server (IIS). Applications can register to receive HTTP requests for particular URLs, receive HTTP requests, and send HTTP responses. The HTTP Server API includes SSL support so that applications can exchange data over secure HTTP connections without IIS. It is also designed to work with I/O completion ports.
Finding this cool, I took a long hard look at the list of functions for both versions of the API. Now, the only other part of the documentation that mentions I/O completion ports is the HttpReceiveHttpRequest
() function. The last parameter is an optional OVERLAPPED
structure with the following description:
For asynchronous calls, set
pOverlapped
to point to anOVERLAPPED
structure; for synchronous calls, set it toNULL
. A synchronous call blocks until a request has arrived in the specified queue and some or all of it has been retrieved, whereas an asynchronous call immediately returnsERROR_IO_PENDING
and the calling application then usesGetOverlappedResult()
or I/O completion ports to determine when the operation is completed. For more information about using OVERLAPPED structures for synchronization, see Synchronization and Overlapped Input and Output.
There is no other information, and all structures are opaque and deliberately hide connection information. Also notice that the Synchronization and Overlapped Input and Output subject makes no mention of the HTTP API.
Does anyone have any idea on how to connect the HTTP API's queue to an I/O completion port?