更改更新完成键

问题描述 投票:0回答:1

ULONG_PTR CKey = 2; CreateIoCompletionPort(...Ckey...);

能否在调用函数后,以某种方式改变更新 CompletionKey?另外,在serverock和clientock上发生的操作(例如AcceptEx在一个同时接受和接收的模式下)只返回服务器的完成,我是否可以将其改为Client,或者更好的是同时返回?

windows winsock iocp completion
1个回答
0
投票

能否在调用函数后,以某种方式更改更新ContinueKey?

这是有可能的,从 Windows 8.1

您需要使用 NtSetInformationFileFileReplaceCompletionInformation

更改或删除指定文件句柄的IO完成端口。调用者提供一个指向一个 FILE_COMPLETION_INFORMATION 结构,它指定了一个端口句柄和一个完成键。如果端口句柄是非 NULL,则该句柄指定一个新的 IO 完成端口,以便与文件句柄关联。要删除与文件句柄相关联的 IO 完成端口, 请将该结构中的端口句柄设置为 NULL。要获得端口句柄,用户模式的调用者可以调用CreateIoCompletionPort函数。

注意,对于指定文件句柄的IO完成端口的初始设置,我们使用了 FileCompletionInformation

然而,即使这是可能的,我认为在大多数情况下将是错误的,不需要这样做。

© www.soinside.com 2019 - 2024. All rights reserved.