NDIS_STATUS_TIMESTAMP_CAPABILITY
Драйверы мини-порта используют индикатор состояния NDIS_STATUS_TIMESTAMP_CAPABILITY , чтобы сообщить о возможностях аппаратной метки времени сетевой карты и возможностях программной метки времени драйвера мини-порта в NDIS и драйверах overlying.
Это указание состояния представляет возможности меток времени для оборудования и драйвера мини-порта, а не того, какая возможность в настоящее время включена или отключена. Дополнительные сведения о текущей конфигурации метки времени см. в разделе NDIS_STATUS_TIMESTAMP_CURRENT_CONFIG.
Комментарии
Во время инициализации драйвер мини-порта должен указать возможности аппаратных и программных меток времени в функции MiniportInitializeEx . Драйвер должен:
Инициализируйте структуру NDIS_TIMESTAMP_CAPABILITIES с помощью аппаратных и программных возможностей метки времени сетевой карты. Драйвер задает элементы структуры NDIS_TIMESTAMP_CAPABILITIES следующим образом:
- Драйвер использует поле TimestampFlags для указания аппаратных и программных возможностей меток времени.
Примечание
Реализация должна поддерживать аппаратные метки времени и перекрестные метки времени. Поддержка программных меток времени является необязательной.
Драйвер должен задать для поля CrossTimestamp значение TRUE.
Поле HardwareClockFrequencyHz должно содержать номинальную рабочую частоту аппаратных часов, используемых для метки времени сетевой картой. Эти данные могут использоваться для отображения номинальной частоты часов конечным пользователям в информационных целях.
Поле Тип в поле Заголовок должно иметь значение NDIS_OBJECT_TYPE_DEFAULT , а для параметра Редакция— значение NDIS_TIMESTAMP_CAPABILITIES_REVISION_1.
Создайте NDIS_STATUS_TIMESTAMP_CAPABILITY индикатор состояния, вызвав NdisMIndicateStatusEx , чтобы сообщить о возможностях меток времени. Поле StatusBuffer структуры NDIS_STATUS_INDICATION должно указывать на инициализированную структуру NDIS_TIMESTAMP_CAPABILITIES .
Драйвер мини-порта также должен создавать индикатор состояния NDIS_STATUS_TIMESTAMP_CAPABILITY всякий раз, когда обнаруживает изменения в базовых возможностях оборудования.
Вот как драйвер мини-порта может указать поддерживаемые возможности меток времени:
// 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);
. . .
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 11 |
Минимальная версия сервера | Windows Server 2022 |
Версия NDIS | NDIS 6.82 и более поздних версий |
Заголовок | Ntddndis.h (включая Ndis.h) |
См. также раздел
Возможности создания меток времени отчетов и текущая конфигурация