Winsock 网络事件跟踪详细信息

下面详细介绍了可跟踪的每个 Winsock 网络事件,并描述了记录的参数和信息。

套接字创建

事件 ID = 1

级别 = 4 (信息)

跟踪以下 Winsock 事件以创建套接字:

  • 通过调用套接字或 WSASocket 函数创建的套接字句柄。
  • 侦听套接字上接受的套接字句柄。
  • 通过调用 WSAJoinLeaf 函数创建的套接字句柄。
  • 套接字句柄由调用 AcceptExConnectEx 函数重用。

为套接字创建事件记录以下参数:

参数 说明
过程
进程的内核 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、ConnectExWSAConnect、WSAConnectByListWSAConnectByName 函数) ,为连接操作请求跟踪以下 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设置为零超时,并且连接上仍有未确认的数据。
  • 未与接受终结点完全关联的连接中止。
  • acceptAcceptEx 函数的失败调用时中止。
  • 由于接收操作失败而中止。
  • 由于即插即用事件而中止。
  • 由于刷新请求失败而中止。
  • 由于加速数据接收请求失败而中止。
  • 由于发送请求失败而中止。
  • 由于已取消发送请求而中止。
  • 由于对 TransmitPackets 函数调用的已取消而中止。

为 Winsock 发起的中止或取消操作记录以下参数:

参数 说明
过程
进程的内核 EPROCESS 结构地址。
端点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
原因
中止或取消操作的原因。

 

Transport-Initiated中止

事件 ID = 8

级别 = 4 (信息)

针对传输启动的中止或取消操作跟踪以下 Winsock 事件:

  • 传输指示的重置。

为 Winsock 发起的中止或取消操作记录以下参数:

参数 说明
过程
进程的内核 EPROCESS 结构地址。
端点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
原因
中止或取消操作的原因。

 

发送请求失败

事件 ID = 9

级别 = 4 (信息)

跟踪以下 Winsock 事件以查找 发送WSASend 请求中的错误:

  • 发送 WSASend 请求失败时返回的错误。

为导致错误的发送请求记录以下参数:

参数 说明
过程
进程的内核 EPROCESS 结构地址。
端点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
Error
为操作返回的错误代码。

 

失败的 WsaSendMsg 请求

事件 ID = 10

级别 = 4 (信息)

跟踪以下 Winsock 事件以查找 WSASendMsg 请求中的错误:

为导致错误的发送请求记录以下参数:

参数 说明
过程
进程的内核 EPROCESS 结构地址。
端点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
Error
为操作返回的错误代码。

 

失败的 Recv 请求

事件 ID = 11

级别 = 4 (信息)

跟踪以下 Winsock 事件以查找 recvWSARecvWSARecvEx 请求中的错误:

  • 失败的接收请求返回的错误。

为导致错误的发送请求记录以下参数:

参数 说明
过程
进程的内核 EPROCESS 结构地址。
端点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
Error
为操作返回的错误代码。

 

失败的 Recvfrom 请求

事件 ID = 12

级别 = 4 (信息)

跟踪以下 Winsock 事件以查找 recvfromWSARecvFrom 请求中的错误:

为导致错误的 recvfromWSARecvFrom 请求记录以下参数:

参数 说明
过程
进程的内核 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 事件针对 acceptAcceptExWSAAccept 函数请求进行跟踪:

为 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 完成记录以下参数:

参数 说明
过程
进程的内核 EPROCESS 结构地址。
端点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
BufferCount
缓冲区计数。
缓冲区
缓冲区的虚拟地址。 对于链接缓冲区,此参数是链中第一个缓冲区的虚拟地址。
BufferLength
发送的字节缓冲区的长度。 对于链式缓冲区,此参数是从链中的所有缓冲区发送的总字节数。
地址
套接字的远程 IP 地址。
港口
套接字的远程 IP 端口号。

 

RecvFrom Completed

事件 ID = 26 (IPv4) ,事件 ID = 27 (IPv6)

级别 = 5 (详细)

为了诊断用户缓冲区损坏 (例如,当应用程序在另一个发送或接收调用中重复使用同一个缓冲区时,当它仍在使用) 时,数据缓冲区会在发布到 Winsock 时记录,并在基础传输完成后记录数据缓冲区。 在套接字上完成 recvfrom 缓冲区后操作时,将跟踪以下 Winsock 事件:

记录以下参数,以便 从完成时间 开始:

参数 说明
过程
进程的内核 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

为更改上述任何值的 setsockoptWSAIoctl 函数调用记录以下参数:

参数 说明
过程
进程的内核 EPROCESS 结构地址。
端点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
选项
已更改的套接字选项或 Ioctl。
Value
套接字选项或 Ioctl 的新值。

 

选择/投票已发布

事件 ID = 30

级别 = 5 (详细)

当应用程序调用 selectWSAPoll 函数时,将跟踪以下 Winsock 事件:

selectWSAPoll 事件记录以下参数:

参数 说明
过程
所属进程 ID。
HandleCount
应用程序传入的句柄数 (仅在启动事件) 上有效。
超时
selectWSAPoll 函数等待的最长时间。

 

选择/轮询已完成

事件 ID = 31

级别 = 5 (详细)

当应用程序调用 selectWSAPoll 函数时,将跟踪以下 Winsock 事件:

当 selectWSAPoll 操作完成时,将记录以下参数:

参数 说明
过程
进程的内核 EPROCESS 结构地址。
端点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
Error
selectWSAPoll 操作返回的错误代码。

 

WSAEventSelect

事件 ID = 32

级别 = 5 (详细)

当应用程序调用 WSAEventSelect 函数时,将跟踪以下 Winsock 事件:

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 内核套接字地址。

 

控制 Winsock 跟踪

Winsock 跟踪

Winsock 目录更改跟踪详细信息

Winsock 跟踪级别