Freigeben über


NDIS_STATUS_TIMESTAMP_CAPABILITY

Miniporttreiber verwenden die NDIS_STATUS_TIMESTAMP_CAPABILITY status Anzeige, um die Hardwarezeitstempelfunktionen der NIC und die Softwarezeitstempelfunktionen des Miniporttreibers an NDIS und übergeordnete Treiber zu melden.

Diese status Angabe stellt die Zeitstempelfunktionen der Hardware und des Miniporttreibers dar, nicht die Funktion, die derzeit aktiviert oder deaktiviert ist. Weitere Informationen zum Melden der aktuellen Zeitstempelkonfiguration finden Sie unter NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG.

Bemerkungen

Während der Initialisierung sollte der Miniporttreiber seine Hardware- und Softwarezeitstempelfunktionen in seiner MiniportInitializeEx-Funktion angeben. Der Treiber sollte:

  1. Initialisieren Sie eine NDIS_TIMESTAMP_CAPABILITIES-Struktur mit den Hardware- und Softwarezeitstempelfunktionen der NIC. Der Treiber legt die Member der NDIS_TIMESTAMP_CAPABILITIES-Struktur wie folgt fest:

    • Der Treiber verwendet das Feld TimestampFlags , um die Hardware- und Softwarezeitstempelfunktionen anzugeben.

    Hinweis

    Eine Implementierung muss Hardwarezeitstempel und Kreuzzeitstempel unterstützen. Die Unterstützung von Softwarezeitstempeln ist optional.

    • Der Treiber muss das Feld CrossTimestamp auf TRUE festlegen.

    • Das Feld HardwareClockFrequencyHz sollte die nominale Betriebsfrequenz der Hardwareuhr enthalten, die von der NIC für den Zeitstempel verwendet wird. Diese Daten können verwendet werden, um den Endbenutzern die nominale Taktfrequenz zu Informationszwecken anzuzeigen.

    • Das Feld Typ im Feld Header sollte auf NDIS_OBJECT_TYPE_DEFAULT und revision auf NDIS_TIMESTAMP_CAPABILITIES_REVISION_1 festgelegt werden.

  2. Generieren Sie eine NDIS_STATUS_TIMESTAMP_CAPABILITY status Anzeige, indem Sie NdisMIndicateStatusEx aufrufen, um die Zeitstempelfunktionen zu melden. Das Feld StatusBuffer der NDIS_STATUS_INDICATION-Struktur sollte auf die initialisierte NDIS_TIMESTAMP_CAPABILITIES-Struktur verweisen.

Der Miniporttreiber muss außerdem die NDIS_STATUS_TIMESTAMP_CAPABILITY status Anzeigen generieren, wenn eine Änderung der zugrunde liegenden Hardwarefunktionen erkannt wird.

So kann ein Miniporttreiber seine unterstützten Zeitstempelfunktionen angeben:

// 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);
. . .
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 11
Unterstützte Mindestversion (Server) Windows Server 2022
NDIS-Version NDIS 6.82 und höher
Header Ntddndis.h (include Ndis.h)

Weitere Informationen

Berichterstellungsfunktionen für Zeitstempel und aktuelle Konfiguration

NDIS_TIMESTAMP_CAPABILITIES

NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG

MiniportInitializeEx

NdisMIndicateStatusEx

NDIS_STATUS_INDICATION