ターミナル サービス/リモート デスクトップ サービス仮想チャネル API を介して通信するアプリケーションを用意します。ランダムかつ定期的に (約 20,000 メッセージごとに)、メッセージがクライアントによって送信されます (VirtualChannelWrite は 0 を返し、VirtualChannelOpenEvent は CHANNEL_EVENT_WRITE_COMPLETE で呼び出されます) が、メッセージは WTSVirtualChannelRead へのサーバー呼び出しによって読み取られることはありません。サーバーにエラー メッセージはありません。クライアント側の書き込みでタイミングの違いは示されません。
サーバー側では、仮想チャネルは読み取りと書き込みのために 1 つのスレッドからのみアクセスされるため、スレッドの問題ではありません (WTSVirtualChannelRead と WTSVirtualChannelWrite はスレッド セーフではありません)。
失われたメッセージの原因について洞察を持っている人はいますか?
この API は、高密度のクライアントからサーバーへのトラフィックに対応していないのでしょうか (サーバーからクライアントへのメッセージのドロップは見られませんでした)。MSDNによると、サーバー上のオーバーラップ I/O ソリューションのパフォーマンスが向上するかどうか疑問に思っています。