共用方式為


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 時間戳。 設定時間戳不會影響封包實際傳輸時;相反地,時間戳會用於記錄守衛。 通訊協定驅動程式可以使用時間戳來判斷完成分頁傳送所需的時間。

TIME_STAMP_CAPABLE
設定時,表示 NIC 可以戳記 (在傳出封包的適當欄位中)在傳輸封包的第一個字節的時間,以及 NIC 可以擷取此時間,從輸入封包的相同欄位擷取這個時間。

ClockPrecision
指定每百萬個零件的時鐘精確度。 若要將此資訊視為有效,必須設定CLOCK_PRECISION旗標。

言論

即使沒有本機或網路時鐘,迷你埠驅動程序還是可以提供特定計時參數的支援。 特別是,迷你埠驅動程式可以使用系統時鐘來接收時間指示、計時傳送,甚至是時間戳。 以 NIC 為基礎的時鐘較佳,因為它可能會提供更高的精確度,而且可透過比系統時鐘較低的延遲來存取。 在所有情況下,迷你埠驅動程式都必須指定其使用的時鐘精確度。 這可讓通訊協議判斷如何最好地使用迷你埠驅動程式的計時支援。

如果迷你埠驅動程序報告可讀取時鐘的存在,則必須準備好立即回應OID_GEN_GET_NETCARD_TIME查詢。 迷你埠驅動程式對此呼叫的回應是時間關鍵,因此必須是同步的。

要求

版本:Windows Vista 和更新版本 標頭:Ntddndis.h (包括 Ndis.h)