Sdílet prostřednictvím


NDIS_STATUS_TIMESTAMP_CAPABILITY

Ovladače miniportu používají indikátor stavu NDIS_STATUS_TIMESTAMP_CAPABILITY k hlášení možností časového razítka hardwaru síťové karty a možností časového razítka softwaru miniportu pro rozhraní NDIS a nadměrné ovladače.

Tato indikace stavu představuje možnosti časového razítka ovladače hardwaru a miniportu, nikoli možnosti, které jsou aktuálně povolené nebo zakázané. Další informace o vytváření sestav aktuální konfigurace časového razítka naleznete v tématu NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG.

Poznámky

Během inicializace by ovladač miniportu měl indikovat možnosti časového razítka hardwaru a softwaru z jeho MiniportInitializeEx funkce. Ovladač by měl:

  1. Inicializace struktury NDIS_TIMESTAMP_CAPABILITIES s možnostmi časového razítka hardwaru a softwaru síťové karty. Ovladač nastaví členy struktury NDIS_TIMESTAMP_CAPABILITIES následujícím způsobem:

    • Ovladač používá pole TimestampFlags k označení možností časového razítka hardwaru a softwaru.

    Poznámka

    Implementace musí podporovat časová razítka hardwaru a křížová razítka. Podpora časových razítek softwaru je volitelná.

    • Ovladač musí nastavit pole CrossTimestamp na TRUE.

    • Pole HardwareClockFrequencyHz by mělo obsahovat jmenovitou provozní frekvenci hardwarových hodin používaných pro časové razítko síťové karty. Tato data mohou být použita k zobrazení nominální frekvence hodin koncovým uživatelům pro informační účely.

    • Pole Typ v poli záhlaví by mělo být nastaveno na NDIS_OBJECT_TYPE_DEFAULT a revizeNDIS_TIMESTAMP_CAPABILITIES_REVISION_1.

  2. Generování indikace stavu NDIS_STATUS_TIMESTAMP_CAPABILITY voláním NdisMIndicateStatusEx pro hlášení možností časového razítka. Pole StatusBuffer struktury NDIS_STATUS_INDICATION by mělo odkazovat na inicializovanou strukturu NDIS_TIMESTAMP_CAPABILITIES.

Ovladač miniportu musí také vygenerovat indikátor stavu NDIS_STATUS_TIMESTAMP_CAPABILITY(ndis-status-timestamp-capability.md), kdykoli zjistí změnu základních hardwarových funkcí.

Takto může ovladač miniportu označit podporované možnosti časového razítka:

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

Požadavky

Požadavek Hodnota
Minimální podporovaný klient Windows 11
Minimální podporovaný server Windows Server 2022
Verze NDIS NDIS 6.82 a novější
Záhlaví Ntddndis.h (včetně Ndis.h)

Viz také

možnosti časového razítka generování sestav a aktuální konfigurace

NDIS_TIMESTAMP_CAPABILITIES

NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG

MiniportInitializeEx

NdisMIndicateStatusEx

NDIS_STATUS_INDICATION