Tôi vừa tình cờ gặp HTTP Server API của Microsoft. Trạng thái giới thiệu:Sử dụng HttpApi với Cổng Hoàn tất I/O
API máy chủ HTTP cho phép ứng dụng giao tiếp qua HTTP mà không cần sử dụng Microsoft Internet Information Server (IIS). Ứng dụng có thể đăng ký để nhận yêu cầu HTTP cho các URL cụ thể, nhận yêu cầu HTTP và gửi phản hồi HTTP. API máy chủ HTTP bao gồm hỗ trợ SSL để các ứng dụng có thể trao đổi dữ liệu qua các kết nối HTTP an toàn mà không cần IIS. Nó cũng được thiết kế để hoạt động với các cổng hoàn thành I/O.
Tìm điều này thật tuyệt, tôi đã xem xét danh sách các chức năng cho cả hai phiên bản API. Bây giờ, phần khác của tài liệu đề cập đến các cổng hoàn thành I/O là hàm HttpReceiveHttpRequest
(). Tham số cuối cùng là một tùy chọn OVERLAPPED
cấu trúc với các mô tả sau đây:
Đối với các cuộc gọi không đồng bộ, thiết lập
pOverlapped
để trỏ đến một cấu trúcOVERLAPPED
; cho các cuộc gọi đồng bộ, đặt nó thànhNULL
. Một khối gọi đồng bộ cho đến khi một yêu cầu đến hàng đợi đã chỉ định và một số hoặc tất cả đã được truy xuất, trong khi cuộc gọi không đồng bộ ngay lập tức trả vềERROR_IO_PENDING
và ứng dụng gọi điện sau đó sử dụng các cổng hoàn thànhGetOverlappedResult()
hoặc I/O để xác định thời điểm hoạt động hoàn thành. Để biết thêm thông tin về cách sử dụng cấu trúc OVERLAPPED để đồng bộ hóa, hãy xem Synchronization and Overlapped Input and Output.
Không có thông tin nào khác và tất cả các cấu trúc đều mờ đục và cố ý ẩn thông tin kết nối. Cũng cần lưu ý rằng đối tượng đầu vào và đồng bộ hóa và đầu vào được chồng chéo không đề cập đến API HTTP.
Có ai có ý tưởng về cách kết nối hàng đợi API HTTP với cổng hoàn thành I/O không?
Bạn có bất kỳ lý do gì để tin rằng bạn sẽ không chỉ truyền tay cầm vào hàng đợi làm tham số đầu tiên cho CreateIoCompletionPort không? – Gabe
Không. Tôi không có lý do để tin rằng đó là điều đúng để làm một trong hai. –