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


OID_GEN_CO_GET_TIME_CAPS

Примечание

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

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

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

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

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

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 (включая Ndis.h)