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 NDIS e driver sovrapponitori.
Questa indicazione di stato rappresenta le funzionalità di timestamp del driver hardware e miniport, non quale funzionalità è attualmente abilitata o disabilitata. Per altre informazioni sulla creazione di report sulla configurazione di timestamp corrente, vedere NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG.
Osservazioni
Durante l'inizializzazione, il driver miniport deve indicare le relative funzionalità di timestamp hardware e software dall'interno della relativa funzione miniportInitializeEx. Il driver deve:
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 segue:
- 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 clock nominale agli utenti finali a scopo informativo.
Il campo Tipo nel campo intestazione deve essere impostato su NDIS_OBJECT_TYPE_DEFAULT e il revisione su NDIS_TIMESTAMP_CAPABILITIES_REVISION_1.
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 NDIS_TIMESTAMP_CAPABILITIES inizializzata.
Il driver miniport deve anche generare l'indicazione di 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);
. . .
}
Fabbisogno
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) |
Vedere anche
Funzionalità di timestamp per la creazione di report e di configurazione corrente