Condividi tramite


NDIS_STATUS_TIMESTAMP_CAPABILITY

I driver miniport usano l'indicazione di stato NDIS_STATUS_TIMESTAMP_CAPABILITY per segnalare le funzionalità di timestamp hardware della scheda di interfaccia di rete e le funzionalità di timestamp software del driver miniport a driver NDIS e overlying driver.

Questa indicazione di stato rappresenta le funzionalità di timestamp del driver hardware e miniport, non la funzionalità attualmente abilitata o disabilitata. Per altre informazioni sulla creazione di report sulla configurazione del timestamp corrente, vedere NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG.

Commenti

Durante l'inizializzazione, il driver miniport deve indicare le funzionalità di timestamp hardware e software dall'interno della funzione MiniportInitializeEx . Il driver deve:

  1. Inizializzare una struttura NDIS_TIMESTAMP_CAPABILITIES con le funzionalità di timestamp hardware e software della scheda di interfaccia di rete. Il driver imposta i membri della struttura NDIS_TIMESTAMP_CAPABILITIES come indicato di seguito:

    • Il driver usa il campo TimestampFlags per indicare le funzionalità di timestamp hardware e software.

    Nota

    Un'implementazione deve supportare timestamp hardware e timestamp incrociati. Il supporto dei timestamp software è facoltativo.

    • Il driver deve impostare il campo CrossTimestamp su TRUE.

    • Il campo HardwareClockFrequencyHz deve contenere la frequenza operativa nominale dell'orologio hardware usato per il timestamp dalla scheda di interfaccia di rete. Questi dati possono essere usati per visualizzare la frequenza di orologio nominale agli utenti finali per scopi informativi.

    • Il campo Tipo nel campo Intestazione deve essere impostato su NDIS_OBJECT_TYPE_DEFAULT e revisione su NDIS_TIMESTAMP_CAPABILITIES_REVISION_1.

  2. Generare un'indicazione di stato NDIS_STATUS_TIMESTAMP_CAPABILITY chiamando NdisMIndicateStatusEx per segnalare le funzionalità di timestamp. Il campo StatusBuffer della struttura NDIS_STATUS_INDICATION deve puntare alla struttura di NDIS_TIMESTAMP_CAPABILITIES inizializzata.

Il driver miniport deve anche generare l'indicazione dello stato NDIS_STATUS_TIMESTAMP_CAPABILITY ogni volta che rileva una modifica delle funzionalità hardware sottostanti.

Ecco come un driver miniport potrebbe indicare le funzionalità di timestamp supportate:

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

Requisiti

Requisito Valore
Client minimo supportato Windows 11
Server minimo supportato Windows Server 2022
Versione NDIS NDIS 6.82 e versioni successive
Intestazione Ntddndis.h (include Ndis.h)

Vedi anche

Funzionalità di timestamp di creazione di report e configurazione corrente

NDIS_TIMESTAMP_CAPABILITIES

NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG

MiniportInitializeEx

NdisMIndicateStatusEx

NDIS_STATUS_INDICATION