1

GetQueuedCompletionStatus()完了通知をデキューしますが、それがどのタイプの通知であるかは返しません (例: 読み取り通知、書き込み通知)。

どの操作を開始したかを追跡するのは私の責任です。たとえば、 を使用する場合、これがどの操作であるかを示すWSARecv()フラグを構造体に追加しOVERLAPPED(この場合は読み取り)、通知をデキューするときにこのフラグを読み取ります。 . GetQueuedCompletionStatus()操作の種類を返さない理由を知っている人はいますか?

4

1 に答える 1

1

なぜ気にする必要があるのですか?API を介してユーザー データを渡すことができます。その結果、完了が抽出されGetQueuedCompletionStatus()ます。なぜ他に何かが必要なのですか? PostQueuedCompletionStatus()完了することができる無限の数の「操作」を使用して独自の完了を投稿できるため、それを「拡張OVERLAPPED構造体」に渡すと、何でも渡すことができます...

独自の個別のフラグを渡すことができたとしても、実際には追加の余分なものを拡張構造体として渡す必要がなくなるわけではありませんOVERLAPPED。データ バッファーやその他の情報を操作と一緒に渡すことができると非常に便利だからです。フラグは持つ価値があるとは思えません... 私のデザインにはあなたのデザインが必要とする以上のものを必要とするので、API デザイナーが私たちに与えてくれたメソッドに取り掛かりましょう...

于 2015-02-25T22:16:48.460 に答える