ULONG_PTR CKey = 2; CreateIoCompletionPort(...Ckey...);
能否在调用函数后,以某种方式改变更新 CompletionKey?另外,在serverock和clientock上发生的操作(例如AcceptEx在一个同时接受和接收的模式下)只返回服务器的完成,我是否可以将其改为Client,或者更好的是同时返回?
能否在调用函数后,以某种方式更改更新ContinueKey?
这是有可能的,从 Windows 8.1
您需要使用 NtSetInformationFile
与 FileReplaceCompletionInformation
更改或删除指定文件句柄的IO完成端口。调用者提供一个指向一个
FILE_COMPLETION_INFORMATION
结构,它指定了一个端口句柄和一个完成键。如果端口句柄是非 NULL,则该句柄指定一个新的 IO 完成端口,以便与文件句柄关联。要删除与文件句柄相关联的 IO 完成端口, 请将该结构中的端口句柄设置为 NULL。要获得端口句柄,用户模式的调用者可以调用CreateIoCompletionPort函数。
注意,对于指定文件句柄的IO完成端口的初始设置,我们使用了 FileCompletionInformation
然而,即使这是可能的,我认为在大多数情况下将是错误的,不需要这样做。