Winsock 跟踪的控制

可以使用以下任一方法控制 Winsock 跟踪:

  • 命令行工具

    Windows Vista 和 Windows Server 2008 附带了两个命令行工具,用于控制跟踪并将二进制跟踪日志文件转换为可读文本。

    logman.exe工具用于启动或停止 Winsock 跟踪。

    tracerpt.exe工具用于将二进制跟踪日志文件转换为可读文本文件。

  • 事件查看器

    Windows Vista 及更高版本上的事件查看器也可用于启用 Winsock 跟踪。 可以从“开始”菜单的“管理工具”下访问事件查看器。

使用 logman 和 tracert

Windows Vista 及更高版本上默认禁用 Winsock 网络事件跟踪。

以下命令在计算机上启动 Winsock 网络事件跟踪,将事件跟踪会话的名称设置为 mywinsocksession,并将输出发送到名为 winsocklogfile.etl 的二进制日志文件:

logman start -ets mywinsocksession -o winsocklogfile.etl -p Microsoft-Windows-Winsock-AFD

日志文件在当前目录中创建,其文件名为 winsocklogfile_000001.etl

以下命令在名为 mywinsocksession 的会话的计算机上停止上述 Winsock 跟踪:

logman stop -ets mywinsocksession

二进制日志文件将写入 –o 参数指定的位置。 若要将二进制文件转换为可读文本文件,请使用 tracerpt.exe

<tracerpt.exe .etl 文件>的名称 –o winsocktracelog.txt

如果首选包含 xml 而不是纯文本的输出文件,则使用以下命令:

<tracerpt.exe xml 的 .etl 文件> –o winsocktracelog.xml 的名称

默认情况下,在 Windows Vista 及更高版本上启用 Winsock 目录更改跟踪。

注意

分层服务提供程序已弃用。 从Windows 8和Windows Server 2012开始,请使用 Windows 筛选平台

 

以下命令启动针对计算机上 LSP () 分层服务提供商的 Winsock 目录更改跟踪,将事件跟踪会话的名称设置为 mywinsockcatalogsession,并将输出发送到名为 winsockcataloglogfile.etl 的二进制日志文件:

logman start -ets mywinsockcatalogsession -o winsockcataloglogfile.etl -p Microsoft-Windows-Winsock-WS2HELP

日志文件在当前目录中创建,文件名为 winsockcataloglogfile_000001.etl

以下命令在名为 mysession 的会话的计算机上停止上述 Winsock 跟踪:

logman stop -ets mywinsockcatalogsession

二进制日志文件将写入 –o 参数指定的位置。 若要将二进制文件转换为可读文本文件,请使用 tracerpt.exe

<tracerpt.exe .etl 文件>的名称 –o winsockcatalogtracelog.txt

如果首选包含 xml 而不是纯文本的输出文件,则使用以下命令:

<tracerpt.exe xml 的 .etl 文件> –o winsockcatalogtracelog.xml 的名称

使用 事件查看器 启动 Winsock 网络事件跟踪

打开事件查看器时,左窗格包含事件列表。 打开 “应用程序和服务日志” ,导航到 “Microsoft\Windows\Winsock 网络事件” 作为源,然后选择“ 操作”。

在“操作”窗格中,选择“日志属性”,检查“启用日志记录检查”框。 启用日志记录后,还可以根据需要更改日志文件的大小。

Winsock 网络事件跟踪现已启用,只需点击“刷新”操作即可更新已记录的事件列表。 若要停止日志记录,只需取消选中同一单选按钮。

可能需要增加日志大小,具体取决于要查看的事件数。 将事件查看器用于 Winsock 跟踪的一个缺点是,它不会加载所有字符串资源,因此在选择事件 () 后,“说明”字段中显示的消息有时很难读取, (应格式化为十六进制的参数将以十进制形式显示,例如) 。 但是,可以在事件说明中选择“ 详细信息 ”选项卡,其中显示了通常具有更易于理解的参数的原始 XML 日志条目。

使用 事件查看器 启动 Winsock 目录更改跟踪

打开事件查看器时,左窗格包含事件列表。 打开 “应用程序和服务日志” ,导航到 “Microsoft\Windows\Winsock 目录更改 ”作为源,然后选择“ 操作”。

在“操作”窗格中,选择“日志属性”,检查“启用日志记录检查”框。 启用日志记录后,还可以根据需要更改日志文件的大小。

Winsock 目录更改跟踪现已启用,只需点击“刷新”操作即可更新已记录的事件列表。 若要停止日志记录,只需取消选中同一单选按钮。

可能需要增加日志大小,具体取决于要查看的事件数。 将事件查看器用于 Winsock 跟踪的一个缺点是,它不会加载所有字符串资源,因此在选择事件 () 后,“说明”字段中显示的消息有时很难读取, (应格式化为十六进制的参数将以十进制形式显示,例如) 。 但是,可以在事件说明中选择“ 详细信息 ”选项卡,其中显示了通常具有更易于理解的参数的原始 XML 日志条目。

解释 Winsock 跟踪日志

日志中的所有 Winsock 跟踪事件都包含两种类型的信息:

  • 系统
  • EventData

系统信息包含日志记录级别、创建日志条目的时间、表示事件类型的事件 ID、执行进程 ID、执行线程 ID 和其他系统信息。 Winsock 跟踪中的日志级别为 4 表示信息事件日志记录。 Winsock 跟踪中的日志级别为 5 表示详细事件日志记录。

系统信息中的执行进程 ID 和线程 ID 指示事件发生时正在运行的进程和线程。 在许多情况下,这将表示内核或工作线程和进程,而不是用户模式线程和应用程序的进程。 因此,此字段通常不太有用。

每个 Winsock 跟踪事件类型在记录的数据的系统部分中都有唯一的事件 ID。 这些事件 ID 可用于筛选特定 Winsock 跟踪事件的日志文件。

eventdata 包含特定于事件类型的信息。

eventdata 信息中的 Process 参数是进程的内核 EPROCESS 结构地址,而不是实际 PID。 若要将事件与用户模式 PID 匹配,请从任何日志条目中获取 eventdata 信息中的 Process 值,并在日志的前面部分查看具有 Process 值的套接字创建事件。 找到匹配项后,套接字创建事件数据中的最后一个参数是创建套接字的用户模式进程 ID。

事件数据信息中的 Address 参数在某些 Winsock 跟踪事件中返回。 Address 参数表示 IP 地址,但它显示在 tracerpt.exe 工具创建的文本文件中,或者以原始字节或数字事件查看器的形式显示。 IPv6 地址以十六进制形式显示,因此更易于理解。 IPv4 地址显示为一个大的十进制数。 开发人员需要手动将 IPv4 地址的原始字节转换为更熟悉的 IPv4 点十进制地址表示法,以便更好地解释值。

事件数据中的 Error 参数在某些 Winsock 跟踪事件中返回。 Error 参数采用 NTSTATUS 或 HRESULT 错误代码的形式。 此错误参数显示在tracerpt.exe工具创建的文本文件中,或在事件查看器显示为十进制数。 开发人员需要手动将十进制数转换为十六进制数,以便在某些情况下更好地解释错误代码。

Winsock 跟踪

Winsock 目录更改跟踪详细信息

Winsock 网络事件跟踪详细信息

Winsock 跟踪级别