NDIS_HARDWARE_CROSSTIMESTAMP结构(ntddndis.h)

NDIS_HARDWARE_CROSSTIMESTAMP 结构描述了 NIC 的硬件时钟与系统时钟之间的交叉时间戳。

语法

typedef struct _NDIS_HARDWARE_CROSSTIMESTAMP {
  NDIS_OBJECT_HEADER Header;
  ULONG              Flags;
  ULONG64            SystemTimestamp1;
  ULONG64            HardwareClockTimestamp;
  ULONG64            SystemTimestamp2;
} NDIS_HARDWARE_CROSSTIMESTAMP, *PNDIS_HARDWARE_CROSSTIMESTAMP;

成员

Header

描述此 NDIS_HARDWARE_CROSSTIMESTAMP 结构的 NDIS_OBJECT_HEADER 结构。 按如下所示设置 NDIS_OBJECT_HEADER 结构的成员:

  • 类型 成员设置为 NDIS_OBJECT_TYPE_DEFAULT

  • 修订 成员设置为 NDIS_HARDWARE_CROSSTIMESTAMP_REVISION_1

  • 大小 成员设置为 NDIS_SIZEOF_HARDWARE_CROSSTIMESTAMP_REVISION_1

Flags

保留以供将来使用。 微型端口驱动程序不得更改此值。

SystemTimestamp1

通过调用 KeQueryPerformanceCounter获取的性能计数器值 (QPC)。

HardwareClockTimestamp

NIC 硬件时钟的当前值。 这应该是 NIC 的原始硬件时钟值。

SystemTimestamp2

通过调用 KeQueryPerformanceCounter获取的另一个性能计数器值(QPC)。

言论

当微型端口驱动程序收到 OID_TIMESTAMP_GET_CROSSTIMESTAMP的 OID 请求时,驱动程序会使用 NDIS_HARDWARE_CROSSTIMESTAMP 结构填充 InformationBufferQUERY_INFORMATION,从而完成 OID。

驱动程序应填充 SystemTimestamp1HardwareClockTimestampSystemTimestamp2 字段,并尽可能接近彼此的时间戳,并按以下顺序作:

  1. SystemTimestamp1

  2. HardwareClockTimestamp

  3. SystemTimestamp2

微型端口驱动程序和硬件可以自由地根据任何高级硬件功能优化这些时间戳的集合。 但是,在 OID 完成时返回的 SystemTimestamp1SystemTimestamp2 值必须准确对应于捕获时的性能计数器 (QPC) 值。 HardwareClockTimestamp 必须与捕获点 NIC 的硬件时钟值相对应。 如果特定实现可以更准确地确定两个时间戳而不是三个时间戳(例如,一个系统时间戳和相应的 NIC 硬件时钟时间戳),则应将 SystemTimestamp2 字段设置为与 SystemTimestamp1相同的值。

微型端口驱动程序不应将 SystemTimestamp1HardwareClockTimestampSystemTimestamp2 值设置为零

要求

要求 价值
最低支持的客户端 Windows 11
支持的最低服务器 Windows Server 2022。 在 NDIS 6.82 及更高版本中受支持。
标头 ntddndis.h (include ndis.h)

另请参阅

OID_TIMESTAMP_GET_CROSSTIMESTAMP

KeQueryPerformanceCounter

NDIS_OBJECT_HEADER