Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Драйверы минипорта используют индикатор состояния NDIS_STATUS_TIMESTAMP_CAPABILITY , чтобы сообщить о возможностях аппаратной метки времени сетевого адаптера и возможностях метки времени программного обеспечения драйвера минипорта в NDIS и чрезмерной загрузке драйверов.
Это указание состояния представляет возможности метки времени аппаратного и минипорта драйвера, а не возможности, которые в настоящее время включены или отключены. Дополнительные сведения о текущей конфигурации метки времени см. в 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(ndis-status-timestamp-capability.md) при обнаружении изменений в базовых возможностях оборудования.
Вот как минипорт-драйвер может указать поддерживаемые возможности метки времени:
// 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 (include Ndis.h) |
См. также
Отчеты о возможностях метки времени и текущей конфигурации