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 结构的成员:
将 Type 成员设置为 NDIS_OBJECT_TYPE_DEFAULT。
将 Revision 成员设置为 NDIS_HARDWARE_CROSSTIMESTAMP_REVISION_1。
将 Size 成员设置为 NDIS_SIZEOF_HARDWARE_CROSSTIMESTAMP_REVISION_1。
Flags
保留供将来使用。 微型端口驱动程序不得更改此值。
SystemTimestamp1
通过调用 KeQueryPerformanceCounter) 获取 (QPC 的性能计数器值。
HardwareClockTimestamp
NIC 硬件时钟的当前值。 这应该是 NIC 的原始硬件时钟值。
SystemTimestamp2
另一个性能计数器值 (QPC) 调用 KeQueryPerformanceCounter 获取。
注解
当微型端口驱动程序收到 OID_TIMESTAMP_GET_CROSSTIMESTAMP 的 OID 请求时,驱动程序会通过使用NDIS_HARDWARE_CROSSTIMESTAMP结构填充QUERY_INFORMATION中的 InformationBuffer 来完成 OID。
驱动程序应按以下顺序使用尽可能接近彼此的时间戳填充 SystemTimestamp1、 HardwareClockTimestamp 和 SystemTimestamp2 字段:
SystemTimestamp1
HardwareClockTimestamp
SystemTimestamp2
微型端口驱动程序和硬件可以自由优化这些时间戳的集合,具体取决于任何高级硬件功能。 但是,在 OID 完成时返回的 SystemTimestamp1 和 SystemTimestamp2 值必须与捕获时的性能计数器 (QPC) 值准确对应。 HardwareClockTimestamp 必须与捕获时 NIC 的硬件时钟值相对应。 如果特定实现可以更准确地确定两个时间戳而不是三个 (例如,一个系统时间戳和相应的 NIC 硬件时钟时间戳) ,则它应将 SystemTimestamp2 字段设置为与 SystemTimestamp1 相同的值。
微型端口驱动程序不应将 SystemTimestamp1、 HardwareClockTimestamp 或 SystemTimestamp2 值设置为 零。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 11 |
最低受支持的服务器 | Windows Server 2022。 在 NDIS 6.82 及更高版本中受支持。 |
标头 | ntddndis.h (包括 ndis.h) |