Partager via


NDIS_STATUS_TIMESTAMP_CAPABILITY

Les pilotes miniport utilisent l’indication status NDIS_STATUS_TIMESTAMP_CAPABILITY pour signaler les fonctionnalités d’horodatage matériel de la carte réseau et les fonctionnalités d’horodatage logiciel du pilote miniport à NDIS et aux pilotes qui se superposent.

Cette status indication représente les fonctionnalités d’horodatage du pilote matériel et miniport, et non la fonctionnalité actuellement activée ou désactivée. Pour plus d’informations sur la création de rapports sur la configuration actuelle de l’horodatage, consultez NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG.

Notes

Pendant l’initialisation, le pilote miniport doit indiquer ses fonctionnalités matérielles et logicielles d’horodatage à partir de sa fonction MiniportInitializeEx . Le pilote doit :

  1. Initialisez une structure NDIS_TIMESTAMP_CAPABILITIES avec les fonctionnalités d’horodatage matériel et logiciel de la carte réseau. Le pilote définit les membres de la structure NDIS_TIMESTAMP_CAPABILITIES comme suit :

    • Le pilote utilise le champ TimestampFlags pour indiquer les fonctionnalités d’horodatage matériel et logiciel.

    Notes

    Une implémentation doit prendre en charge les horodatages matériels et les horodatages croisés. La prise en charge des horodatages logiciels est facultative.

    • Le pilote doit définir le champ CrossTimestamp sur TRUE.

    • Le champ HardwareClockFrequencyHz doit contenir la fréquence de fonctionnement nominale de l’horloge matérielle utilisée pour l’horodatage par la carte réseau. Ces données peuvent être utilisées pour afficher la fréquence d’horloge nominale aux utilisateurs finaux à des fins d’information.

    • Le champ Type dans le champ En-tête doit être défini sur NDIS_OBJECT_TYPE_DEFAULTet révision deNDIS_TIMESTAMP_CAPABILITIES_REVISION_1.

  2. Générez une indication NDIS_STATUS_TIMESTAMP_CAPABILITY status en appelant NdisMIndicateStatusEx pour signaler les fonctionnalités d’horodatage. Le champ StatusBuffer de la structure NDIS_STATUS_INDICATION doit pointer vers la structure NDIS_TIMESTAMP_CAPABILITIES initialisée.

Le pilote miniport doit également générer l’indication NDIS_STATUS_TIMESTAMP_CAPABILITY status chaque fois qu’il détecte une modification des fonctionnalités matérielles sous-jacentes.

Voici comment un pilote miniport peut indiquer ses fonctionnalités d’horodatage prises en charge :

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

Spécifications

Condition requise Valeur
Client minimal pris en charge Windows 11
Serveur minimal pris en charge Windows Server 2022
NDIS Version NDIS 6.82 et versions ultérieures
En-tête Ntddndis.h (inclure Ndis.h)

Voir aussi

Fonctionnalités d’horodatage des rapports et configuration actuelle

NDIS_TIMESTAMP_CAPABILITIES

NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG

MiniportInitializeEx

NdisMIndicateStatusEx

NDIS_STATUS_INDICATION