ソケット ハンドル
必要に応じて、ソケット ハンドルを Windows ソケット 2 のファイル ハンドルにすることができます。 Winsock プロバイダーのソケット ハンドルは、ReadFile、WriteFile、ReadFileEx、WriteFileExなど、他の Winsock 以外の関数と共に使用できます。
プロバイダーのプロトコル情報構造の XP1_IFS_HANDLES メンバーは、プロバイダーからのソケット ハンドルがインストール可能なファイル システム (IFS) ハンドルであるかどうかを判断します。 IFS ハンドルであるソケット ハンドルは、他の Winsock 以外の関数 (ReadFile や WriteFileなど) でパフォーマンスを低下させることなく使用できます。 Winsock 以外の関数 (たとえば、ReadFileWriteFileなど) と共に使用する場合、IFS 以外のソケット ハンドルは、プロバイダーとファイル システム間の相互作用を引き起し、追加の処理オーバーヘッドが発生し、パフォーマンスが大幅に低下する可能性があります。 Winsock 以外の関数でソケット ハンドルを使用する場合、基本ファイル システムから伝達されるエラー コードは、必ずしも Winsock エラー コードにマップされるとは限りません。 そのため、ソケット ハンドルは Winsock 関数でのみ使用することをお勧めします。
DuplicateHandle 関数では、ソケット ハンドルを使用しないでください。 階層化サービス プロバイダー (LSP) が存在すると、これが失敗する可能性があり、宛先プロセスでソケット ハンドルをインポートする方法はありません。
Windows ソケット 2 では、ハンドルを使用してソケット間でデータを転送する特定の機能が拡張されています。 この関数は、データ転送用のソケットに固有の利点を提供し、WSARecv、WSASend、WSADuplicateSocket含まれます。