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
指向结构的指针,该结构指定要将套接字连接到的远程传输地址。 此指针必须是指向特定 SOCKADDR 结构类型的指针,该类型对应于 WSK 应用程序在创建套接字时指定的地址系列。
[in, optional] Buffer
指向 WSK_BUF 结构的指针,该结构包含连接同步期间或之后要发送的数据。 允许的最大大小(以字节为单位)为 65,535。
Flags
此参数保留供系统使用。 WSK 应用程序必须将此参数设置为零。
[in, out] Irp
指向调用方分配的 IRP 的指针,WSK 子系统使用该 IRP 异步完成连接操作。 有关将 IRP 与 WSK 函数配合使用的详细信息,请参阅 将 IRP 与 Winsock 内核函数配合使用。
返回值
WskConnectEx 返回以下 NTSTATUS 代码之一:
返回代码 | 说明 |
---|---|
|
套接字已成功连接到远程传输地址。 IRP 将以成功状态完成。 |
|
WSK 子系统无法立即连接套接字。 WSK 子系统将在将套接字连接到远程传输地址后完成 IRP。 连接操作的状态将在 IRP 的 IoStatus.Status 字段中返回。 |
|
套接字不再正常工作。 IRP 将以失败状态完成。 WSK 应用程序必须调用 WskCloseSocket 函数以尽快关闭套接字。 |
|
WSK 应用程序尝试将标志传递到 Flags 参数 (,因为当前没有为 WskConnectEx 定义有效标志,这是不允许) 。 |
|
WSK 应用程序尝试将大于 65,535 字节的缓冲区传递给 Buffer 参数。 |
|
出现了错误。 IRP 将以失败状态完成。 |
注解
WSK 应用程序可以通过调用 WskSocketConnect 函数(而不是调用 WskSocket 函数、WskBind 函数和 WskConnectEx 函数)在单个函数调用中创建、绑定和连接面向连接的套接字。 建议调用 WskSocketConnect 函数,除非 WSK 应用程序需要在绑定或连接套接字之前设置套接字选项或发出 I/O 控件操作。
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 |