OID_GEN_CO_GET_TIME_CAPS

注意

OID_GEN_CO_GET_TIME_CAPS与 OID_GEN_GET_TIME_CAPS 相同。

OID_GEN_CO_GET_TIME_CAPS OID 请求微型端口驱动程序返回其报告格式化为GEN_GET_TIME_CAPS结构的 NIC 本地时间的功能,定义如下:

typedef struct _GEN_GET_TIME_CAPS{
    ULONG   Flags;
    ULONG   ClockPrecision;
} GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS;

此结构的成员包含以下信息:

标志
以下标志可以一起为 ORed。 所有未指定的标志都必须设置为零。

READABLE_LOCAL_CLOCK
设置后,指示 NIC 上是否存在可读时钟。 即使没有这样的硬件时钟,微型端口驱动程序也可以通过调用 NdisGetCurrentSystemTime 来使用系统时钟,只要它在 ClockPrecision 成员中报告正确的精度。

CLOCK_NETWORK_DERIVED
设置时,指示 NIC 的本地时间派生自网络连接,而不是自由运行的载入时钟。

CLOCK_PRECISION
设置时,指示 ClockPrecision 成员包含有效信息。

RECEIVE_TIME_INDICATION_CAPABLE
设置后,指示 NIC 硬件可以记下接收已接收 PDU 的第一个单元格的本地时间,并且微型端口驱动程序在向协议指示数据包时为每个 PDU 传播此接收时间。

TIMED_SEND_CAPABLE
设置后,指示 NIC 可以根据本地时间计划数据包进行传输。 协议可以使用NDIS_SET_PACKET_TIME_TO_SEND在数据包描述符的带外数据块中设置 TimeToSend 时间戳。 设置时间戳不会影响数据包实际传输时间;相反,时间戳用于记录保留。 协议驱动程序可以使用时间戳来确定完成发送 paket 所需的时间。

TIME_STAMP_CAPABLE
设置后,指示 NIC 可以在传出数据包的相应字段中标记 (,) 传输数据包的第一个字节的时间,并且 NIC 可以从入站数据包的同一字段中检索此时间。

ClockPrecision
指定时钟精度(以百万分之一为单位)。 要使此信息被视为有效,必须设置CLOCK_PRECISION标志。

注解

即使没有本地或网络时钟,微型端口驱动程序也可以为某些计时参数提供支持。 具体而言,微型端口驱动程序可以将系统时钟用于接收时间指示、计时发送,甚至时间戳。 基于 NIC 的时钟更好,因为它可能提供更高的精度,并且可以以比系统时钟更低的延迟进行访问。 在所有情况下,微型端口驱动程序必须指定它使用的时钟精度。 这允许协议确定如何最好地使用微型端口驱动程序的计时支持。

如果微型端口驱动程序报告存在可读时钟,则必须准备好立即响应OID_GEN_GET_NETCARD_TIME查询。 微型端口驱动程序对此调用的响应是时间关键型的,因此必须同步。

要求

版本:Windows Vista 和更高 版本的标头:Ntddndis.h (包括 Ndis.h)