共用方式為


OID_TIMESTAMP_GET_CROSSTIMESTAMP

過度配置驅動程式會在 OID (OID) 查詢要求發出OID_TIMESTAMP_GET_CROSSTIMESTAMP的物件識別碼,以從 NIC 硬體取得交叉時間戳記。 交叉時間戳記是一組 NIC 硬體時間戳記和系統時間戳記, () 彼此非常接近。 精確度時間通訊協定 (PTP) 第 2 版應用程式,使用此 OID 中提供的資訊來建立 NIC 硬體時鐘與系統時鐘之間的關聯性。

如果迷你埠驅動程式將 NDIS_TIMESTAMP_CAPABILITIES結構中的CrossTimestamp欄位設定為TRUE,則必須支援此 OID,作為目前組態的一部分。 如需報告目前設定的詳細資訊,請參閱 NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG 狀態指示。 如果停用交叉時間戳記功能,則 OID 應該以適當的錯誤碼完成,例如 (,NDIS_STATUS_NOT_SUPPORTED) 。

NDIS_OID_REQUEST結構的RequestType成員將會是NdisRequestQueryInformation

當迷你埠驅動程式收到 OID_TIMESTAMP_GET_CROSSTIMESTAMP 的 OID 要求時,驅動程式會填入QUERY_INFORMATION NDIS_HARDWARE_CROSSTIMESTAMP結構中的InformationBuffer來完成 OID。 NDIS_HARDWARE_CROSSTIMESTAMP結構的[標頭] 欄位中的[類型] 欄位應該設定為[NDIS_OBJECT_TYPE_DEFAULT],[修訂] 欄位設為[NDIS_HARDWARE_CROSSTIMESTAMP_REVISION_1]。 驅動程式應該填入 SystemTimestamp1HardwareClockTimestampSystemTimestamp2 欄位,其時間戳記會盡可能接近彼此,並依下列順序:

  1. SystemTimestamp1:呼叫 KeQueryPerformanceCounter取得的 Q) PC (效能計數器值。

  2. HardwareClockTimestamp:NIC 硬體時鐘的目前值。 這應該是 NIC 的原始硬體時鐘值。

  3. SystemTimestamp2:另一個效能計數器值 (透過呼叫 KeQueryPerformanceCounter取得的 QPC) 。

以下是迷你埠驅動程式如何處理OID_TIMESTAMP_GET_CROSSTIMESTAMP的範例:

{
. . .
    NDIS_HARDWARE_CROSSTIMESTAMP crossTimestamp;
    LARGE_INTEGER timeStamp;

    RtlZeroMemory(&crossTimestamp, sizeof(crossTimestamp));

    timeStamp = KeQueryPerformanceCounter(NULL);
    crossTimestamp.SystemTimestamp1 = timeStamp.QuadPart;
    crossTimestamp.HardwareClockTimestamp = FunctionToRetrieveHardwareTimestampFromNetworkCard();
    timeStamp = KeQueryPerformanceCounter(NULL);
    crossTimestamp.SystemTimestamp2 = timeStamp.QuadPart;
    crossTimestamp.Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
    crossTimestamp.Header.Size = NDIS_SIZEOF_HARDWARE_CROSSTIMESTAMP_REVISION_1;
    crossTimestamp.Header.Revision = NDIS_HARDWARE_CROSSTIMESTAMP_REVISION_1;

// Complete the OID by filling the query information buffer with the crossTimestamp
}

NDIS_HARDWARE_CROSSTIMESTAMP結構中的[旗標] 欄位會保留供日後使用。 迷你埠驅動程式不得變更其值。

迷你埠驅動程式和硬體可以視任何進階硬體功能而定,將這些時間戳記的集合優化。 不過,在 OID 完成時傳回 的 SystemTimestamp1SystemTimestamp2 值必須精確地對應到在擷取時 (QPC) 值的效能計數器。 HardwareClockTimestamp必須對應至擷取點的 NIC 硬體時鐘值。 例如,如果特定實作可以更精確地判斷兩個時間戳記,而不是三個 (,則一個系統時間戳記和對應的 NIC 硬體時鐘時間戳記) ,則它應該將SystemTimestamp2 欄位設定為與 SystemTimestamp1相同的值。

迷你埠驅動程式不應將 SystemTimestamp1HardwareClockTimestampSystemTimestamp2 值設定為

傳回狀態碼

迷你埠驅動程式會針對 OID_TIMESTAMP_GET_CROSSTIMESTAMP 的 OID 查詢要求,傳回下列其中一個狀態碼。

狀態碼 描述
NDIS_STATUS_SUCCESS OID 要求已成功完成。
NDIS_STATUS_NOT_SUPPORTED 迷你埠驅動程式不支援交叉時間戳記,或停用交叉時間戳記功能。
NDIS_STATUS_FAILURE 要求因其他原因而失敗。

規格需求

需求
最低支援的用戶端 Windows 11
最低支援的伺服器 Windows Server 2022
NDIS 版本 NDIS 6.82 和更新版本
標頭 Ntddndis.h (包括 Ndis.h)

另請參閱

NDIS_STATUS_TIMESTAMP_CAPABILITY

OID_TIMESTAMP_CURRENT_CONFIG

OID_TIMESTAMP_CAPABILITY

NDIS_OID_REQUEST