次の方法で共有


Provider-Specific拡張メカニズム

WSAIoctl 関数を使用すると、サービス プロバイダーはプロバイダー固有の機能拡張を提供できます。 このメカニズムは、もちろん、アプリケーションが特定の拡張機能を認識し、関連するセマンティクスと構文の両方を理解していることを前提としています。 このような情報は、通常、サービス プロバイダー ベンダーによって提供されます。

拡張関数を呼び出すには、アプリケーションが最初に目的の関数へのポインターを要求する必要があります。 これは、SIO_GET_EXTENSION_FUNCTION_POINTER コマンド コードを使用して WSAIoctl 関数を使用して行われます。 WSAIoctl への入力バッファーには目的の拡張関数の識別子が含まれますが、出力バッファーには関数ポインター自体が含まれています。 その後、アプリケーションは、Ws2_32.dllを渡さずに拡張機能を直接呼び出すことができます。

拡張関数に割り当てられる識別子は、サービス プロバイダー ベンダーによって割り当てられるグローバル一意識別子 (GUID) です。 拡張関数を作成するベンダーは、関数プロトタイプの構文を含む関数に関する完全な詳細を公開するように求めます。 これにより、一般的で一般的な拡張機能を複数のサービス プロバイダー ベンダーが提供できるようになります。 アプリケーションは、関数ポインターを取得し、関数を実装する特定のサービス プロバイダーについて何も知らなくても、 関数を使用できます。

Windows Vista 以降では、新しい Winsock システム拡張機能が Winsock DLL から直接エクスポートされるため、これらの拡張機能を読み込むには WSAIoctl 関数は必要ありません。 Windows Vista 以降で使用できる新しい拡張機能には、 からエクスポートされる WSAPoll 関数と WSASendMsg 関数 Ws2_32.dll含まれます。