Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les pilotes miniport utilisent l’indication d’état 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 overlying.
Cette indication d’état représente les fonctionnalités d’horodatage du pilote matériel et miniport, et non les fonctionnalités actuellement activées ou désactivées. Pour plus d’informations sur la création de rapports sur la configuration actuelle de l’horodatage, consultez NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG.
Remarques
Lors de l’initialisation, le pilote miniport doit indiquer ses fonctionnalités d’horodatage matériel et logiciel à partir de sa fonction MiniportInitializeEx. Le pilote doit :
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.
Note
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 d’exploitation 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 de dans le champ d’en-tête doit être défini sur NDIS_OBJECT_TYPE_DEFAULT et le révision sur NDIS_TIMESTAMP_CAPABILITIES_REVISION_1.
Générez une indication d’état NDIS_STATUS_TIMESTAMP_CAPABILITY en appelant NdisMIndicateStatusEx pour signaler les fonctionnalités d’horodatage. Le champ StatusBuffer de la structure NDIS_STATUS_INDICATION doit pointer vers la structure de NDIS_TIMESTAMP_CAPABILITIES initialisée.
Le pilote miniport doit également générer l’indication d’état NDIS_STATUS_TIMESTAMP_CAPABILITY(ndis-status-timestamp-capability.md) 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);
. . .
}
Exigences
| Exigence | Valeur |
|---|---|
| Client minimum pris en charge | Windows 11 |
| Serveur minimum pris en charge | Windows Server 2022 |
| NDIS Version | NDIS 6.82 et versions ultérieures |
| En-tête | Ntddndis.h (include Ndis.h) |
Voir aussi
fonctionnalités d’horodatage Reporting et de configuration actuelle