次の方法で共有


PFN_WSK_CONNECT_EX コールバック関数 (wsk.h)

WskConnectEx 関数は、接続指向またはストリーム ソケットをリモート トランスポート アドレスに接続します。

WskConnectEx は、接続同期中または接続後に必要に応じてデータバッファーを送信できる点を除き、WskConnect に似ています。

構文

PFN_WSK_CONNECT_EX PfnWskConnectEx;

NTSTATUS PfnWskConnectEx(
  [in]           PWSK_SOCKET Socket,
  [in]           PSOCKADDR RemoteAddress,
  [in, optional] PWSK_BUF Buffer,
                 ULONG Flags,
  [in, out]      PIRP Irp
)
{...}

パラメーター

[in] Socket

リモート トランスポート アドレスに接続されているソケットのソケット オブジェクトを指定する WSK_SOCKET 構造体へのポインター。

[in] RemoteAddress

ソケットを接続するリモート トランスポート アドレスを指定する構造体へのポインター。 このポインターは、ソケットの作成時に WSK アプリケーションが指定したアドレス ファミリに対応する特定の SOCKADDR 構造体型へのポインターである必要があります。

[in, optional] Buffer

WSK_BUF 構造体へのポインター。接続同期中または接続後に送信するデータを格納します。 許容される最大サイズ (バイト単位) は 65,535 です。

Flags

このパラメーターは、システム用に予約されています。 WSK アプリケーションでは、このパラメーターを 0 に設定する必要があります。

[in, out] Irp

WSK サブシステムが非同期的に接続操作を完了するために使用する呼び出し元によって割り当てられた IRP へのポインター。 WSK 関数で IRP を使用する方法の詳細については、「Winsock カーネル関数での IRP の使用」を参照してください。

戻り値

wskConnectEx は、次のいずれかの NTSTATUS コードを返します。

リターン コード 形容
STATUS_SUCCESS
ソケットがリモート トランスポート アドレスに正常に接続されました。 IRP は成功状態で完了します。
STATUS_PENDING
WSK サブシステムがソケットをすぐに接続できませんでした。 WSK サブシステムは、ソケットをリモート トランスポート アドレスに接続した後、IRP を完了します。 接続操作の状態は、IRP の IoStatus.Status フィールドに返されます。
STATUS_FILE_FORCED_CLOSED
ソケットは機能しなくなりました。 IRP は失敗状態で完了します。 WSK アプリケーションは、WskCloseSocket 関数を呼び出して、できるだけ早くソケットを閉じる必要があります。
STATUS_INVALID_PARAMETER
WSK アプリケーションは、Flags パラメーターにフラグを渡そうとしました (現在、wskConnectEx に対して有効なフラグ定義されていないため、これは許可されていません)。
STATUS_BUFFER_OVERFLOW
WSK アプリケーションは、65,535 バイトを超えるバッファーを Buffer パラメーターに渡そうとしました。
その他の状態コードの
エラーが発生しました。 IRP は失敗状態で完了します。

備考

WSK アプリケーションは、WskSocket 関数、WskBind 関数、WskConnectEx 関数を呼び出すのではなく、WskSocketConnect 関数を呼び出すことによって、単一の関数呼び出しで接続指向ソケットを作成、バインド、接続できます。 WSK アプリケーションでソケット オプションを設定するか、ソケットをバインドまたは接続する前に I/O 制御操作を発行する必要がない限り、wskSocketConnect 関数 呼び出することをお勧めします。

WSK アプリケーションは、WskBind 関数を呼び出すことによって、アプリケーションが以前にローカル トランスポート アドレスにバインドした接続指向またはストリーム ソケットでのみ、WskConnectEx 関数を呼び出すことができます。

ストリーム ソケットの場合、WskConnectEx ストリーム ソケットで正常に呼び出されると、ソケットは接続指向フローにコミットされ、リッスン ソケット関数を呼び出さなくなります。

Buffer パラメーターが使用されている場合、呼び出し元は、接続要求が完了するとすぐに、WSK_BUF 構造体の MDL を解放できます。

wskConnectEx を指定された送信バッファー 呼び出す前に、WSK アプリケーションが WskControlSocket 関数を介して WSK ソケットに TCP_FASTOPEN オプションを設定した場合、システムは必要に応じて SYN パケット内のデータの一部またはすべてを送信します。 詳細については、「IPPROTO_TCP ソケットオプションTCP Fastopen オプションを参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 10 バージョン 1703
ターゲット プラットフォーム 万国
ヘッダー wsk.h (Wsk.h を含む)
IRQL <= DISPATCH_LEVEL

関連項目

SOCKADDR

WSK_PROVIDER_CONNECTION_DISPATCH WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskBind

WskCloseSocket

WskControlSocket

WskDisconnect

WskDisconnectEvent

WskSocket

WskSocketConnect