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 内核套接字地址。
错误
为失败的绑定作返回的错误代码。

 

套接字连接

事件 ID = 4 (IPv4),事件 ID = 5 (IPv6)

级别 = 4 (信息)

以下 Winsock 事件针对连接作请求进行跟踪(对 连接的调用、ConnectExWSAConnectWSAConnectByListWSAConnectByName 函数):

  • 将套接字连接到面向连接的套接字或无连接套接字的目标。

为连接事件记录以下参数:

参数 描述
进程
进程的内核 EPROCESS 结构地址。
终结点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
地址
远程 IP 地址。
端口
远程 IP 端口号。

 

连接已完成

事件 ID = 6

级别 = 4 (信息)

以下 Winsock 事件针对已完成的连接进行跟踪:

  • 连接作已完成。

为连接完成的事件记录以下参数:

参数 描述
进程
进程的内核 EPROCESS 结构地址。
终结点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
错误
为连接作返回的错误代码。

 

AFD-Initiated 中止

事件 ID = 7

级别 = 4 (信息)

以下 Winsock 事件针对 Winsock 发起的中止或取消作进行跟踪:

  • 由于未读接收在关闭后缓冲的数据而中止。
  • 调用 关闭 函数后中止,如何将 参数设置为SD_RECEIVE,以及调用具有接收数据挂起的 closesocket 函数。
  • 尝试刷新终结点失败后中止。
  • 发生内部 Winsock 错误后中止。
  • 由于存在错误的连接而中止,并且应用程序以前请求在某些情况下中止连接。 本例的一个示例是一个应用程序,该应用程序设置SO_LINGER超时为零,并且连接上仍有未确认的数据。
  • 连接上的中止未与接受终结点完全关联。
  • 接受AcceptEx 函数的失败调用中止。
  • 由于接收作失败而中止。
  • 由于即插即用事件而中止。
  • 由于刷新请求失败而中止。
  • 由于数据接收请求失败而中止。
  • 由于发送请求失败而中止。
  • 由于已取消发送请求而中止。
  • 由于已取消调用 TransmitPackets 函数而中止。

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

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

 

Transport-Initiated 中止

事件 ID = 8

级别 = 4 (信息)

跟踪以下 Winsock 事件以执行传输启动的中止或取消作:

  • 传输指示的重置。

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

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

 

发送请求失败

事件 ID = 9

级别 = 4 (信息)

以下 Winsock 事件跟踪 发送WSASend 请求时出现错误:

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

参数 描述
进程
进程的内核 EPROCESS 结构地址。
终结点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
错误
为作返回的错误代码。

 

失败的 WsaSendMsg 请求

事件 ID = 10

级别 = 4 (信息)

以下 Winsock 事件在 WSASendMsg 请求上跟踪错误:

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

参数 描述
进程
进程的内核 EPROCESS 结构地址。
终结点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
错误
为作返回的错误代码。

 

失败的 Recv 请求

事件 ID = 11

级别 = 4 (信息)

以下 Winsock 事件在 recvWSARecvWSARecvEx 请求上跟踪错误:

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

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

参数 描述
进程
进程的内核 EPROCESS 结构地址。
终结点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
错误
为作返回的错误代码。

 

失败的 Recvfrom 请求

事件 ID = 12

级别 = 4 (信息)

以下 Winsock 事件在 recvfromWSARecvFrom 请求上跟踪错误:

  • 在失败 WSARecvFrom 请求时返回的错误。

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

参数 描述
进程
进程的内核 EPROCESS 结构地址。
终结点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
错误
为作返回的错误代码。

 

套接字关闭

事件 ID = 13

级别 = 4 (信息)

跟踪以下 Winsock 事件以执行套接字关闭作:

  • 套接字句柄已关闭。

为套接字关闭事件记录以下参数:

参数 描述
进程
进程的内核 EPROCESS 结构地址。
终结点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
错误
套接字关闭作的返回值。

 

套接字清理

事件 ID = 14

级别 = 4 (信息)

跟踪以下 Winsock 事件以执行套接字清理(关闭)作:

  • 关闭 函数在套接字上调用。
  • 传输指示正常断开连接失败。

为套接字清理(关闭)或套接字关闭事件记录以下参数:

参数 描述
进程
进程的内核 EPROCESS 结构地址。
终结点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
错误
套接字清理(关闭)作的返回值。

 

套接字接受

事件 ID = 15 (IPv4),事件 ID = 16 (IPv6)

级别 = 4 (信息)

以下 Winsock 事件跟踪 接受AcceptExWSAAccept 函数请求:

为接受事件记录以下参数:

参数 描述
进程
进程的内核 EPROCESS 结构地址。
终结点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
地址
远程 IP 地址。
端口
远程 IP 端口号。
状态
为接受作返回的状态或错误代码。

 

接受失败

事件 ID = 17

级别 = 4 (信息)

以下 Winsock 事件针对失败的接受作进行跟踪:

为失败的接受事件记录以下参数:

参数 描述
进程
进程的内核 EPROCESS 结构地址。
终结点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
错误
为失败的接受作返回的错误代码。

 

发送已发布

事件 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 Posted

事件 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 时以及基础传输完成后记录。 当 在套接字上完成缓冲区后作完成时,将跟踪以下 Winsock 事件:

  • 应用程序完成 作。

完成recvfrom 记录以下参数:

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

 

SendTo Completed

事件 ID = 28

级别 = 5 (详细)

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

  • 应用程序完成 sendto作。

sendto 完成记录以下参数:

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

 

套接字选项集

事件 ID = 29

级别 = 5 (详细)

每当应用程序更改某些套接字选项值和 Ioctls 时,都会记录新值。 记录的选项可用于诊断应用程序中性能不佳或奇怪的行为。 以下 Winsock 事件针对某些套接字选项和 Ioctls 进行跟踪:

  • SO_SNDBUF更改。
  • SO_RCVBUF更改。
  • FIONBIO
  • SIO_ENABLE_CIRCULAR_QUEUEING
  • SIO_UDP_CONNRESET
  • SO_OOBINLINE

setsockoptWSAIoctl 函数调用记录以下参数,这些调用更改上述任何值:

参数 描述
进程
进程的内核 EPROCESS 结构地址。
终结点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
选项
已更改的套接字选项或 Ioctl。

套接字选项或 Ioctl 的新值。

 

选择/轮询已发布

事件 ID = 30

级别 = 5 (详细)

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

选择WSAPoll 事件记录以下参数:

参数 描述
进程
拥有进程 ID。
HandleCount
应用程序传入的句柄数(仅在发起事件上有效)。
超时
选择WSAPoll 函数等待的最长时间。

 

选择/轮询已完成

事件 ID = 31

级别 = 5 (详细)

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

选择WSAPoll作完成时,将记录以下参数:

参数 描述
进程
进程的内核 EPROCESS 结构地址。
终结点
用作套接字的唯一标识符的 Winsock 内核套接字地址。
错误
返回的错误代码选择WSAPoll作。

 

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 跟踪级别