Поделиться через


OID_GEN_CO_GET_TIME_CAPS

Заметка

OID_GEN_CO_GET_TIME_CAPS совпадает с OID_GEN_GET_TIME_CAPS.

OID_GEN_CO_GET_TIME_CAPS OID запрашивает мини-драйвер для возврата своих возможностей для создания отчетов о локальном времени сетевого адаптера, отформатированного как структура GEN_GET_TIME_CAPS, которая определяется следующим образом:

typedef struct _GEN_GET_TIME_CAPS{
    ULONG   Flags;
    ULONG   ClockPrecision;
} GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS;

Члены этой структуры содержат следующие сведения:

флаги
Следующие флаги могут быть объединены вместе. Все неопределенные флаги должны иметь значение нулю.

READABLE_LOCAL_CLOCK
При установке указывает наличие доступных для чтения часов в сетевом адаптере. Даже без таких аппаратных часов минипорт-драйвер может использовать системные часы, вызвав NdisGetCurrentSystemTime, если он сообщает правильную точность в члене ClockPrecision.

CLOCK_NETWORK_DERIVED
Если задано значение, указывает, что локальное время сетевого адаптера является производным от сетевого подключения, а не для свободного запуска часов.

CLOCK_PRECISION
Если задано, указывает, что элемент ClockPrecision содержит допустимые сведения.

RECEIVE_TIME_INDICATION_CAPABLE
Если задано, указывает, что оборудование сетевого адаптера может отметить локальное время, в котором он получает первую ячейку полученного PDU, и что мини-драйвер распространяет это время получения для каждого PDU при указании пакета в протокол.

TIMED_SEND_CAPABLE
Если задано, указывает, что сетевой адаптер может запланировать передачу пакета в соответствии со своим локальным временем. Протоколы могут использовать NDIS_SET_PACKET_TIME_TO_SEND, чтобы задать метку времени TimeToSend в блоке данных вне диапазона дескриптора пакетов. Установка метки времени не влияет на момент передачи пакета; Вместо этого метка времени используется для записи. Драйвер протокола может использовать метку времени, чтобы определить, сколько времени требуется для завершения отправки пакета.

TIME_STAMP_CAPABLE
Если задано, указывает, что сетевой адаптер может метки (в соответствующем поле исходящего пакета) время передачи первого байта пакета и что сетевой адаптер может получить это время из того же поля входящего пакета.

ClockPrecision
Указывает точность часов в частях на миллион. Чтобы эти сведения считались допустимыми, необходимо задать флаг CLOCK_PRECISION.

Замечания

Минипорт-драйвер может обеспечить поддержку определенных параметров времени даже в отсутствие локальных или сетевых часов. В частности, минипорт-драйвер может использовать системные часы для указания времени получения, время отправки и даже метки времени. Часы на основе сетевых адаптеров лучше, так как, скорее всего, обеспечивают более высокую точность и будут доступны с более низкой задержкой, чем системные часы. Во всех случаях минипорт-драйвер должен указать точность часов, которые он использует. Это позволяет протоколам определить, как лучше всего использовать поддержку времени минипорта драйвера.

Если минипорт-драйвер сообщает о присутствии доступных для чтения часов, он должен быть готов немедленно реагировать на запрос OID_GEN_GET_NETCARD_TIME. Ответ минипорта на этот вызов является критическим и поэтому должен быть синхронным.

Требования

версии: Windows Vista и более поздних версий заголовка: Ntddndis.h (include Ndis.h)