Winsock 网络事件跟踪详细信息
下面详细介绍了可跟踪的每个 Winsock 网络事件,并描述了记录的参数和信息。
套接字创建
事件 ID = 1
级别 = 4 (信息)
跟踪以下 Winsock 事件以创建套接字:
- 通过调用套接字或 WSASocket 函数创建的套接字句柄。
- 侦听套接字上接受的套接字句柄。
- 通过调用 WSAJoinLeaf 函数创建的套接字句柄。
- 套接字句柄由调用 AcceptEx 或 ConnectEx 函数重用。
为套接字创建事件记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
SocketType |
套接字的类型。 |
协议 |
套接字的协议。 |
UserModePid |
创建套接字的用户模式进程 ID。 |
套接字绑定
事件 ID = 2 (IPv4) ,事件 ID = 3 (IPv6)
级别 = 4 (信息)
为绑定操作跟踪以下 Winsock 事件:
- 套接字句柄的隐式或显式绑定。
为绑定事件记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
地址 |
本地 IP 地址。 |
港口 |
本地 IP 端口号。 |
地位 |
为绑定操作返回的状态或错误代码。 |
绑定失败
事件 ID = 40
级别 = 4 (信息)
针对失败的绑定操作跟踪以下 Winsock 事件:
- 失败的套接字句柄的隐式或显式绑定。
为失败的绑定事件记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
Error |
为失败的绑定操作返回的错误代码。 |
套接字连接
事件 ID = 4 (IPv4) ,事件 ID = 5 (IPv6)
级别 = 4 (信息)
(调用 connect、ConnectEx、WSAConnect、WSAConnectByList 或 WSAConnectByName 函数) ,为连接操作请求跟踪以下 Winsock 事件:
- 将套接字连接到面向连接的套接字或无连接套接字的目标。
为连接事件记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
地址 |
远程 IP 地址。 |
港口 |
远程 IP 端口号。 |
连接已完成
事件 ID = 6
级别 = 4 (信息)
跟踪已完成的连接的以下 Winsock 事件:
- 连接操作已完成。
为连接已完成事件记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
Error |
为连接操作返回的错误代码。 |
AFD-Initiated中止
事件 ID = 7
级别 = 4 (信息)
针对 Winsock 发起的中止或取消操作跟踪以下 Winsock 事件:
- 由于关闭后缓冲的未读接收数据而中止。
- 调用 关闭 函数后中止,其中 how 参数设置为 SD_RECEIVE,对 closesocket 函数的调用(接收数据挂起)。
- 尝试刷新终结点失败后中止。
- 发生内部 Winsock 错误后中止。
- 由于连接出错而中止,并且应用程序之前要求在某些情况下中止连接。 这种情况的一个示例是应用程序将SO_LINGER设置为零超时,并且连接上仍有未确认的数据。
- 未与接受终结点完全关联的连接中止。
- 对 accept 或 AcceptEx 函数的失败调用时中止。
- 由于接收操作失败而中止。
- 由于即插即用事件而中止。
- 由于刷新请求失败而中止。
- 由于加速数据接收请求失败而中止。
- 由于发送请求失败而中止。
- 由于已取消发送请求而中止。
- 由于对 TransmitPackets 函数调用的已取消而中止。
为 Winsock 发起的中止或取消操作记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
原因 |
中止或取消操作的原因。 |
Transport-Initiated中止
事件 ID = 8
级别 = 4 (信息)
针对传输启动的中止或取消操作跟踪以下 Winsock 事件:
- 传输指示的重置。
为 Winsock 发起的中止或取消操作记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
原因 |
中止或取消操作的原因。 |
发送请求失败
事件 ID = 9
级别 = 4 (信息)
跟踪以下 Winsock 事件以查找 发送 或 WSASend 请求中的错误:
为导致错误的发送请求记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
Error |
为操作返回的错误代码。 |
失败的 WsaSendMsg 请求
事件 ID = 10
级别 = 4 (信息)
跟踪以下 Winsock 事件以查找 WSASendMsg 请求中的错误:
- WSASendMsg 请求失败时返回的错误。
为导致错误的发送请求记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
Error |
为操作返回的错误代码。 |
失败的 Recv 请求
事件 ID = 11
级别 = 4 (信息)
跟踪以下 Winsock 事件以查找 recv、 WSARecv 或 WSARecvEx 请求中的错误:
- 失败的接收请求返回的错误。
为导致错误的发送请求记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
Error |
为操作返回的错误代码。 |
失败的 Recvfrom 请求
事件 ID = 12
级别 = 4 (信息)
跟踪以下 Winsock 事件以查找 recvfrom 或 WSARecvFrom 请求中的错误:
- 失败的 recvfrom 或 WSARecvFrom 请求时返回的错误。
为导致错误的 recvfrom 或 WSARecvFrom 请求记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
Error |
为操作返回的错误代码。 |
套接字关闭
事件 ID = 13
级别 = 4 (信息)
跟踪以下 Winsock 事件以执行套接字关闭操作:
- 套接字句柄已关闭。
为套接字关闭事件记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
Error |
套接字关闭操作的返回值。 |
套接字清理
事件 ID = 14
级别 = 4 (信息)
跟踪以下 Winsock 事件,以便清除套接字 (关闭) 操作:
- 关闭函数在套接字上调用。
- 传输指示正常断开连接失败。
为套接字清理记录以下参数, (关闭) 或套接字关闭事件:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
Error |
套接字清理的返回值 (关闭) 操作。 |
套接字接受
事件 ID = 15 (IPv4) ,事件 ID = 16 (IPv6)
级别 = 4 (信息)
以下 Winsock 事件针对 accept、 AcceptEx 或 WSAAccept 函数请求进行跟踪:
为 accept 事件记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
地址 |
远程 IP 地址。 |
港口 |
远程 IP 端口号。 |
地位 |
为接受操作返回的状态或错误代码。 |
接受失败
事件 ID = 17
级别 = 4 (信息)
针对失败的接受操作跟踪以下 Winsock 事件:
为失败的接受事件记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
Error |
为失败的接受操作返回的错误代码。 |
发送已发布
事件 ID = 18
级别 = 5 (详细)
例如,为了诊断用户缓冲区损坏 (,当应用程序在另一个发送或接收调用中重新使用同一个缓冲区时,当它仍在使用) 时,数据缓冲区会在发布到 Winsock 时记录,并在基础传输完成后记录数据缓冲区。 以下 Winsock 事件针对套接字发送和接收缓冲区后操作进行跟踪:
- 应用程序发布发送。
- 向 Winsock 发送操作完成。
为套接字发送操作记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
FastPath |
一个布尔值,指示是否使用了快速路径 I/O。 |
BufferCount |
缓冲区计数。 |
缓冲区 |
缓冲区的虚拟地址。 对于链接缓冲区,此参数是链中第一个缓冲区的虚拟地址。 |
BufferLength |
缓冲区的长度。 对于链接缓冲区,此参数是链中所有缓冲区中的字节总数。 |
如果 FastPath 为 true,则会在 Buffer 参数中记录缓冲区数组中第一个缓冲区的用户模式地址。 当 FastPath 为 false 时,Winsock 内核缓冲区地址将记录在 Buffer 参数中。
接收发布
事件 ID = 19
级别 = 5 (详细)
例如,为了诊断用户缓冲区损坏 (,当应用程序在另一个发送或接收调用中重新使用同一个缓冲区时,当它仍在使用) 时,数据缓冲区会在发布到 Winsock 时记录,并在基础传输完成后记录数据缓冲区。 以下 Winsock 事件针对套接字接收缓冲区后操作进行跟踪:
- 应用程序发布接收。
- 对 Winsock 完成接收操作。
为套接字接收操作记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
FastPath |
一个布尔值,指示是否使用了快速路径 I/O。 |
BufferCount |
缓冲区计数。 |
缓冲区 |
缓冲区的虚拟地址。 对于链接缓冲区,此参数是链中第一个缓冲区的虚拟地址。 |
BufferLength |
缓冲区的长度。 对于链接缓冲区,此参数是链中所有缓冲区中的字节总数。 |
如果 FastPath 为 true,则会在 Buffer 参数中记录缓冲区数组中第一个缓冲区的用户模式地址。 当 FastPath 为 false 时,Winsock 内核缓冲区地址将记录在 Buffer 参数中。
RecvFrom Posted
事件 ID = 20
级别 = 5 (详细)
例如,为了诊断用户缓冲区损坏 (,当应用程序在另一个发送或接收调用中重新使用同一个缓冲区时,当它仍在使用) 时,数据缓冲区会在发布到 Winsock 时记录,并在基础传输完成后记录数据缓冲区。 以下 Winsock 事件针对套接字上的 recvfrom 缓冲区后操作进行跟踪:
- 应用程序发布来自操作的接收。
为 recvfrom 操作记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
FastPath |
一个布尔值,指示是否使用了快速路径 I/O。 |
BufferCount |
缓冲区计数。 |
缓冲区 |
缓冲区的虚拟地址。 对于链接缓冲区,此参数是链中第一个缓冲区的虚拟地址。 |
BufferLength |
缓冲区的长度。 对于链接缓冲区,此参数是链中所有缓冲区中的字节总数。 |
如果 FastPath 为 true,则会在 Buffer 参数中记录缓冲区数组中第一个缓冲区的用户模式地址。 当 FastPath 为 false 时,Winsock 内核缓冲区地址将记录在 Buffer 参数中。
SendTo 已发布
事件 ID = 21 (IPv4) ,事件 ID = 22 (IPv6)
级别 = 5 (详细)
例如,为了诊断用户缓冲区损坏 (,当应用程序在另一个发送或接收调用中重新使用同一个缓冲区时,当它仍在使用) 时,数据缓冲区会在发布到 Winsock 时记录,并在基础传输完成后记录数据缓冲区。 以下 Winsock 事件针对套接字上的 sendto 缓冲区后操作进行跟踪:
- 应用程序从中发布发送。
为 sendto 操作记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
FastPath |
一个布尔值,指示是否使用了快速路径 I/O。 |
BufferCount |
缓冲区计数。 |
缓冲区 |
缓冲区的虚拟地址。 对于链接缓冲区,此参数是链中第一个缓冲区的虚拟地址。 |
BufferLength |
缓冲区的长度。 对于链接缓冲区,此参数是链中所有缓冲区中的字节总数。 |
地址 |
套接字的远程 IP 地址。 |
港口 |
套接字的远程 IP 端口号。 |
如果 FastPath 为 true,则会在 Buffer 参数中记录缓冲区数组中第一个缓冲区的用户模式地址。 当 FastPath 为 false 时,Winsock 内核缓冲区地址将记录在 Buffer 参数中。
Recv Completed
事件 ID = 23
级别 = 5 (详细)
例如,为了诊断用户缓冲区损坏 (,当应用程序在另一个发送或接收调用中重新使用同一个缓冲区时,当它仍在使用) 时,数据缓冲区会在发布到 Winsock 时记录,并在基础传输完成后记录数据缓冲区。 跟踪以下 Winsock 事件以执行套接字接收完成的操作:
- 发送操作完成到传输。
- 接收操作完成到传输。
为发送已完成或接收已完成记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
缓冲区 |
缓冲区的虚拟地址。 对于链接缓冲区,此参数是链中第一个缓冲区的虚拟地址。 |
BufferLength |
接收的字节缓冲区的长度。 对于链接缓冲区,此参数是在链中的所有缓冲区中接收的总字节数。 |
发送已完成
事件 ID = 24
级别 = 5 (详细)
例如,为了诊断用户缓冲区损坏 (,当应用程序在另一个发送或接收调用中重新使用同一个缓冲区时,当它仍在使用) 时,数据缓冲区会在发布到 Winsock 时记录,并在基础传输完成后记录数据缓冲区。 跟踪以下 Winsock 事件以执行套接字发送完成的操作:
- 发送操作完成到传输。
为已完成的发送记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
缓冲区 |
缓冲区的虚拟地址。 对于链接缓冲区,此参数是链中第一个缓冲区的虚拟地址。 |
BufferLength |
发送的字节缓冲区的长度。 对于链接缓冲区,此参数是从链中的所有缓冲区发送的总字节数。 |
SendMsg Completed
事件 ID = 25
级别 = 5 (详细)
例如,为了诊断用户缓冲区损坏 (,当应用程序在另一个发送或接收调用中重新使用同一个缓冲区时,当它仍在使用) 时,数据缓冲区会在发布到 Winsock 时记录,并在基础传输完成后记录数据缓冲区。 当 WSASendMsg 缓冲区后操作在套接字上完成时,将跟踪以下 Winsock 事件:
- 应用程序完成 WSASendMsg 操作。
为 WSASendMsg 完成记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
BufferCount |
缓冲区计数。 |
缓冲区 |
缓冲区的虚拟地址。 对于链接缓冲区,此参数是链中第一个缓冲区的虚拟地址。 |
BufferLength |
发送的字节缓冲区的长度。 对于链式缓冲区,此参数是从链中的所有缓冲区发送的总字节数。 |
地址 |
套接字的远程 IP 地址。 |
港口 |
套接字的远程 IP 端口号。 |
RecvFrom Completed
事件 ID = 26 (IPv4) ,事件 ID = 27 (IPv6)
级别 = 5 (详细)
为了诊断用户缓冲区损坏 (例如,当应用程序在另一个发送或接收调用中重复使用同一个缓冲区时,当它仍在使用) 时,数据缓冲区会在发布到 Winsock 时记录,并在基础传输完成后记录数据缓冲区。 在套接字上完成 recvfrom 缓冲区后操作时,将跟踪以下 Winsock 事件:
- 应用程序完成 recvfrom 操作。
记录以下参数,以便 从完成时间 开始:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
BufferCount |
缓冲区计数。 |
缓冲区 |
缓冲区的虚拟地址。 对于链接缓冲区,此参数是链中第一个缓冲区的虚拟地址。 |
BufferLength |
接收的字节缓冲区的长度。 对于链接缓冲区,此参数是链中所有缓冲区中接收的总字节数。 |
地址 |
套接字的远程 IP 地址。 |
港口 |
套接字的远程 IP 端口号。 |
SendTo Completed
事件 ID = 28
级别 = 5 (详细)
为了诊断用户缓冲区损坏 (例如,当应用程序在另一个发送或接收调用中重复使用同一个缓冲区时,当它仍在使用) 时,数据缓冲区会在发布到 Winsock 时记录,并在基础传输完成后记录数据缓冲区。 当 sendto buffer post 操作在套接字上完成时,将跟踪以下 Winsock 事件:
- 应用程序完成 sendto 操作。
为 sendto 完成记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
BufferCount |
缓冲区计数。 |
缓冲区 |
缓冲区的虚拟地址。 对于链接缓冲区,此参数是链中第一个缓冲区的虚拟地址。 |
BufferLength |
发送的字节缓冲区的长度。 对于链式缓冲区,此参数是从链中的所有缓冲区发送的总字节数。 |
地址 |
套接字的远程 IP 地址。 |
港口 |
套接字的远程 IP 端口号。 |
套接字选项集
事件 ID = 29
级别 = 5 (详细)
每当应用程序更改某些套接字选项值和 Ioctls 时,都会记录新值。 记录的选项可用于诊断应用程序中性能不佳或异常行为。 针对某些套接字选项和 Ioctls 跟踪以下 Winsock 事件:
- SO_SNDBUF更改。
- SO_RCVBUF更改。
- FIONBIO
- SIO_ENABLE_CIRCULAR_QUEUEING
- SIO_UDP_CONNRESET
- SO_OOBINLINE
为更改上述任何值的 setsockopt 和 WSAIoctl 函数调用记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
选项 |
已更改的套接字选项或 Ioctl。 |
Value |
套接字选项或 Ioctl 的新值。 |
选择/投票已发布
事件 ID = 30
级别 = 5 (详细)
当应用程序调用 select 或 WSAPoll 函数时,将跟踪以下 Winsock 事件:
参数 | 说明 |
---|---|
过程 |
所属进程 ID。 |
HandleCount |
应用程序传入的句柄数 (仅在启动事件) 上有效。 |
超时 |
select 或 WSAPoll 函数等待的最长时间。 |
选择/轮询已完成
事件 ID = 31
级别 = 5 (详细)
当应用程序调用 select 或 WSAPoll 函数时,将跟踪以下 Winsock 事件:
当 select 或 WSAPoll 操作完成时,将记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
Error |
为 select 或 WSAPoll 操作返回的错误代码。 |
WSAEventSelect
事件 ID = 32
级别 = 5 (详细)
当应用程序调用 WSAEventSelect 函数时,将跟踪以下 Winsock 事件:
- 记录 在 WSAEventSelect 函数中传递的事件掩码。
为 WSAEventSelect 函数调用记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
EventMask |
事件掩码的值。 |
已删除的数据报
事件 ID = 33 (IPv4) ,事件 ID = 34 (IPv6)
级别 = 5 (详细)
为了帮助诊断有关数据报应用程序的问题,我们跟踪了以下 Winsock 事件:
- 当数据报到达且被删除时,请对缓冲区空间不足执行操作。
- 在连接的数据报上,如果数据来自连接的目标以外的源。
为已删除的数据报记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
PacketSize |
丢弃的数据包的大小。 |
地址 |
数据包源的 IP 地址。 |
港口 |
数据包源的 IP 端口号。 |
原因 |
丢弃数据包的错误代码或原因。 |
指示的连接
事件 ID = 35 (IPv4) ,事件 ID = 36 (IPv6)
级别 = 5 (详细)
为连接指示的操作跟踪以下 Winsock 事件:
- 应用程序接收连接请求。
为从传输事件指示的连接记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
地址 |
远程 IP 地址。 |
港口 |
远程 IP 端口号。 |
指示的数据
事件 ID = 37
级别 = 5 (详细)
针对指示的数据操作跟踪以下 Winsock 事件:
- 应用程序在连接的套接字上接收数据。
为传输事件指示的数据记录以下参数:
参数 | 说明 |
---|---|
过程 |
所属进程 ID。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
指示的字节数 |
在套接字上收到的字节数。 |
从传输指示的数据
事件 ID = 38 (IPv4) ,事件 ID = 39 (IPv6)
级别 = 5 (详细)
针对传输操作指示的数据跟踪以下 Winsock 事件:
- 应用程序发布接收请求并接收数据。
为传输事件指示的数据记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
地址 |
远程 IP 地址。 |
港口 |
远程 IP 端口号。 |
指示的字节数 |
在套接字上收到的字节数。 |
指示与传输断开连接
事件 ID = 41
级别 = 5 (详细)
针对断开连接指示的操作跟踪以下 Winsock 事件:
- 应用程序收到断开连接指示。
为传输事件指示的断开连接记录以下参数:
参数 | 说明 |
---|---|
过程 |
进程的内核 EPROCESS 结构地址。 |
端点 |
用作套接字的唯一标识符的 Winsock 内核套接字地址。 |
相关主题