Freigeben über


NDIS_STATUS_TIMESTAMP_CAPABILITY

Miniport-Treiber verwenden die NDIS_STATUS_TIMESTAMP_CAPABILITY Statusanzeige, um die Hardwarezeitstempelfunktionen der NIC und die Softwarezeitstempelfunktionen des Miniporttreibers an NDIS und übermäßige Treiber zu melden.

Diese Statusanzeige stellt die Zeitstempelfunktionen des Hardware- und Miniporttreibers dar, nicht welche Funktion 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 innerhalb 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 Elemente der NDIS_TIMESTAMP_CAPABILITIES Struktur wie folgt fest:

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

    Anmerkung

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

    • Der Treiber muss das CrossTimestamp Feld auf TRUEfestlegen.

    • Das HardwareClockFrequencyHz Feld sollte die nominale Betriebshäufigkeit der Hardwareuhr enthalten, die für die Zeitstempelung durch die NIC verwendet wird. Diese Daten können verwendet werden, um die nominale Taktfrequenz für Endbenutzer zu Informationszwecken anzuzeigen.

    • Das Feld Typ- im Feld Header sollte auf NDIS_OBJECT_TYPE_DEFAULT und die Revision auf NDIS_TIMESTAMP_CAPABILITIES_REVISION_1festgelegt werden.

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

Der Miniporttreiber muss auch die Statusanzeige NDIS_STATUS_TIMESTAMP_CAPABILITY(ndis-status-timestamp-capability.md) generieren, wenn eine Änderung der zugrunde liegenden Hardwarefunktionen erkannt wird.

Hier erfahren Sie, wie ein Miniporttreiber die unterstützten Zeitstempelfunktionen angeben kann:

// 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
Mindestens unterstützter Client Windows 11
Mindestens unterstützter Server Windows Server 2022
NDIS-Version NDIS 6.82 und höher
Kopfball Ntddndis.h (include Ndis.h)

Siehe auch

Berichten von Zeitstempelfunktionen und aktueller Konfiguration

NDIS_TIMESTAMP_CAPABILITIES

NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG

MiniportInitializeEx-

NdisMIndicateStatusEx

NDIS_STATUS_INDICATION