Compartilhar via


NDIS_STATUS_TIMESTAMP_CAPABILITY

Os drivers de miniport usam o NDIS_STATUS_TIMESTAMP_CAPABILITY status indicação para relatar os recursos de carimbo de data/hora de hardware da NIC e os recursos de carimbo de data/hora de software do driver de miniporto para o NDIS e drivers sobrepostos.

Essa status indicação representa os recursos de carimbo de data/hora do driver de hardware e miniport, não qual funcionalidade está habilitada ou desabilitada no momento. Para obter mais informações sobre como relatar a configuração de carimbo de data/hora atual, consulte NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG.

Comentários

Durante a inicialização, o driver de miniporte deve indicar seus recursos de carimbo de data/hora de hardware e software de dentro de sua função MiniportInitializeEx . O driver deve:

  1. Inicialize uma estrutura NDIS_TIMESTAMP_CAPABILITIES com os recursos de carimbo de data/hora de hardware e software da NIC. O driver define os membros da estrutura NDIS_TIMESTAMP_CAPABILITIES da seguinte maneira:

    • O driver usa o campo TimestampFlags para indicar os recursos de carimbo de data/hora de hardware e software.

    Observação

    Uma implementação deve dar suporte a carimbos de data/hora de hardware e carimbos de data/hora cruzados. O suporte a carimbos de data/hora de software é opcional.

    • O driver deve definir o campo CrossTimestamp como TRUE.

    • O campo HardwareClockFrequencyHz deve conter a frequência operacional nominal do relógio de hardware usado para carimbo de data/hora pela NIC. Esses dados podem ser usados para exibir a frequência nominal do relógio para os usuários finais para fins informativos.

    • O campo Tipo no campo Cabeçalho deve ser definido como NDIS_OBJECT_TYPE_DEFAULT e a Revisão para NDIS_TIMESTAMP_CAPABILITIES_REVISION_1.

  2. Gere uma indicação de NDIS_STATUS_TIMESTAMP_CAPABILITY status chamando NdisMIndicateStatusEx para relatar os recursos de carimbo de data/hora. O campo StatusBuffer da estrutura NDIS_STATUS_INDICATION deve apontar para a estrutura de NDIS_TIMESTAMP_CAPABILITIES inicializada.

O driver de miniporte também deve gerar o NDIS_STATUS_TIMESTAMP_CAPABILITY status indicação sempre que detectar uma alteração nos recursos de hardware subjacentes.

Veja como um driver de miniporte pode indicar seus recursos de carimbo de data/hora com suporte:

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

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 11
Servidor mínimo com suporte Windows Server 2022
Versão do NDIS NDIS 6.82 e posterior
Cabeçalho Ntddndis.h (inclua Ndis.h)

Confira também

Relatar recursos de carimbo de data/hora e configuração atual

NDIS_TIMESTAMP_CAPABILITIES

NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG

MiniportInitializeEx

NdisMIndicateStatusEx

NDIS_STATUS_INDICATION