共用方式為


NDIS_STATUS_TIMESTAMP_CAPABILITY

迷你埠驅動程式會使用 NDIS_STATUS_TIMESTAMP_CAPABILITY 狀態指示,向 NDIS 和過度配置驅動程式報告 NIC 的硬體時間戳記功能和迷你埠驅動程式的軟體時間戳記功能。

此狀態指示代表硬體和迷你埠驅動程式的時間戳記功能,而不是目前啟用或停用的功能。 如需報告目前時間戳記設定的詳細資訊,請參閱 NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG

備註

在初始化期間,迷你埠驅動程式應該會從 其 MiniportInitializeEx 函式中指出其硬體和軟體時間戳記功能。 驅動程式應該:

  1. 使用 NIC 的硬體和軟體時間戳記功能 ,初始化NDIS_TIMESTAMP_CAPABILITIES 結構。 驅動程式會設定 NDIS_TIMESTAMP_CAPABILITIES 結構的成員,如下所示:

    • 驅動程式會使用 TimestampFlags 欄位來指出硬體和軟體時間戳記功能。

    注意

    實作必須支援硬體時間戳記和跨時間戳記。 支援軟體時間戳記是選擇性的。

    • 驅動程式必須將 CrossTimestamp 欄位設定為 TRUE

    • HardwareClockFrequencyHz欄位應該包含用於 NIC 時間戳記的硬體時鐘之實際操作頻率。 此資料可用來向使用者顯示標準時鐘頻率,以供參考之用。

    • [標頭] 欄位中的[類型] 欄位應該設定為[NDIS_OBJECT_TYPE_DEFAULT],並將 [修訂] 設定為[NDIS_TIMESTAMP_CAPABILITIES_REVISION_1]。

  2. 呼叫NdisMIndicateStatusEx來報告時間戳記功能,以產生NDIS_STATUS_TIMESTAMP_CAPABILITY狀態指示。 NDIS_STATUS_INDICATION結構的StatusBuffer欄位應該指向初始化NDIS_TIMESTAMP_CAPABILITIES結構。

每當迷你埠驅動程式偵測到基礎硬體功能的變更時,也必須產生 NDIS_STATUS_TIMESTAMP_CAPABILITY 狀態指示。

以下是迷你埠驅動程式如何指出其支援的時間戳記功能:

// From within its initialization routine, the miniport in this 
// example indicates that it supports the following capabilities:
// - PtpV2OverUdpIPv4EventMsgReceiveHw
// - PtpV2OverUdpIPv6EventMsgReceiveHw
// - TaggedTransmitHw
// - CrossTimestamp

NDIS_STATUS MiniportInitializeEx(
    _In_ NDIS_HANDLE MiniportAdapterHandle,
    _In_ NDIS_HANDLE MiniportDriverContext,
    _In_ PNDIS_MINIPORT_INIT_PARAMETERS MiniportInitParameters
)
{
. . .
    NDIS_TIMESTAMP_CAPABILITIES timeStampCapabilities;
    NDIS_STATUS_INDICATION timeStampStatus;
. . .

    // Initialize an NDIS_TIMESTAMP_CAPABILITIES structure

    RtlZeroMemory(&timeStampCapabilities, sizeof(timeStampCapabilities));
    RtlZeroMemory(&timeStampStatus, sizeof(timeStampStatus));

    timeStampCapabilities.Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
    timeStampCapabilities.Header.Size = sizeof(timeStampCapabilities);
    timeStampCapabilities.Header.Revision = NDIS_TIMESTAMP_CAPABILITIES_REVISION_1;

    timeStampCapabilities.CrossTimestamp = TRUE;
    timeStampCapabilities.TimestampFlags.PtpV2OverUdpIPv4EventMsgReceiveHw = TRUE;
    timeStampCapabilities.TimestampFlags.PtpV2OverUdpIPv6EventMsgReceiveHw = TRUE;
    timeStampCapabilities.TimestampFlags.TaggedTransmitHw = TRUE;

    timeStampCapabilities.HardwareClockFrequencyHz = 150000;

    timeStampStatus.Header.Type = NDIS_OBJECT_TYPE_STATUS_INDICATION;
    timeStampStatus.Header.Revision = NDIS_STATUS_INDICATION_REVISION_1;
    timeStampStatus.Header.Size = NDIS_SIZEOF_STATUS_INDICATION_REVISION_1;

    timeStampStatus.SourceHandle = MiniportAdapterHandle;
    timeStampStatus.StatusBuffer = &timeStampCapabilities;
    timeStampStatus.StatusBufferSize = sizeof(timeStampCapabilities);
    timeStampStatus.StatusCode = NDIS_STATUS_TIMESTAMP_CAPABILITY;

    // Generate an NDIS_STATUS_TIMESTAMP_CAPABILITY status indication
    NdisMIndicateStatusEx(MiniportAdapterHandle, &timeStampStatus);
. . .
}

規格需求

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

另請參閱

報告時間戳記功能和目前的設定

NDIS_TIMESTAMP_CAPABILITIES

NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG

MiniportInitializeEx

NdisMIndicateStatusEx

NDIS_STATUS_INDICATION