PFN_WSK_SEND回调函数 (wsk.h)
WskSend 函数通过面向连接或流套接字的数据发送到远程传输地址。
语法
PFN_WSK_SEND PfnWskSend;
NTSTATUS PfnWskSend(
[in] PWSK_SOCKET Socket,
[in] PWSK_BUF Buffer,
[in] ULONG Flags,
[in, out] PIRP Irp
)
{...}
参数
[in] Socket
指向 WSK_SOCKET 结构的指针,该结构指定要在其中发送数据的套接字的套接字对象。
[in] Buffer
指向初始化 WSK_BUF 结构的指针,该结构描述包含通过套接字发送的数据的数据缓冲区。
[in] Flags
包含以下标志组合的按位 OR 的 ULONG 值:
WSK_FLAG_NODELAY
将基础传输定向到远程应用程序,以便立即将数据以及以前排队的任何数据发送到远程应用程序,而不会延迟。
Microsoft TCP/IP 传输协议支持此标志。 其他传输协议可能不支持此标志。
[in, out] Irp
指向 WSK 子系统用于异步完成发送作的调用方分配的 IRP 的指针。 有关将 IRP 与 WSK 函数配合使用的详细信息,请参阅 将 IRP 与 Winsock 内核函数配合使用。
返回值
WskSend 返回以下 NTSTATUS 代码之一:
返回代码 | 描述 |
---|---|
|
已成功通过套接字发送数据。 IRP 将以成功状态完成。 IRP IoStatus.Information 字段包含已发送的字节数。 |
|
WSK 子系统无法立即通过套接字发送数据。 WSK 子系统在通过套接字发送数据后将完成 IRP。 发送作的状态将在 IRP 的 IoStatus.Status 字段中返回。 如果作成功,则 IRP IoStatus.Information 字段将包含已发送的字节数。 |
|
套接字不再正常工作。 IRP 将以失败状态完成。 WSK 应用程序必须调用 WskCloseSocket 函数才能尽快关闭套接字。 |
|
基础网络传输不支持指定的标志。 |
|
发生错误。 IRP 将以失败状态完成。 |
言论
WSK 应用程序只能对以前连接到远程传输地址的连接套接字或流套接字调用 WskSend 函数。 面向连接的套接字通过以下方法之一连接到远程传输地址:
- WSK 应用程序通过调用 WskConnect 函数来连接套接字。
- WSK 应用程序通过调用 WskSocketConnect 函数来创建、绑定和连接套接字。
- 当 WSK 应用程序接受侦听套接字上的传入连接请求时,WSK 子系统会连接套接字。
当 WSK 子系统通过套接字发送数据时,不会对数据执行任何缓冲。 因此,在实际发送所有数据之前,WSK 子系统不会完成对 WskSend 函数的调用。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 在 Windows Vista 和更高版本的 Windows作系统中可用。 |
目标平台 | 普遍 |
标头 | wsk.h (包括 Wsk.h) |
IRQL | <= DISPATCH_LEVEL |