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:
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.
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