Compartilhar via


OID_GEN_CO_GET_TIME_CAPS

Observação

OID_GEN_CO_GET_TIME_CAPS é o mesmo que OID_GEN_GET_TIME_CAPS.

O OID_GEN_CO_GET_TIME_CAPS OID solicita que um driver de miniporte retorne seus recursos para relatar a hora local de uma NIC formatada como uma estrutura de GEN_GET_TIME_CAPS, que é definida da seguinte maneira:

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

Os membros dessa estrutura contêm as seguintes informações:

Sinalizadores
Os sinalizadores a seguir podem ser ORed juntos. Todos os sinalizadores não especificados devem ser definidos como zero.

READABLE_LOCAL_CLOCK
Quando definido, indica a presença de um relógio legível na NIC. Mesmo sem esse relógio de hardware, um driver de miniporto pode usar o relógio do sistema chamando NdisGetCurrentSystemTime, desde que ele relata a precisão correta no membro ClockPrecision.

CLOCK_NETWORK_DERIVED
Quando definido, indica que a hora local da NIC é derivada da conexão de rede, em vez de um relógio de integração de execução livre.

CLOCK_PRECISION
Quando definido, indica que o membro ClockPrecision contém informações válidas.

RECEIVE_TIME_INDICATION_CAPABLE
Quando definido, indica que o hardware nic pode observar a hora local em que recebe a primeira célula de uma PDU recebida e que o driver de miniporte propaga esse tempo de recebimento para cada PDU ao indicar o pacote para um protocolo.

TIMED_SEND_CAPABLE
Quando definido, indica que a NIC pode agendar um pacote para transmissão de acordo com sua hora local. Os protocolos podem usar NDIS_SET_PACKET_TIME_TO_SEND para definir o carimbo de data/hora TimeToSend no bloco de dados fora de banda de um descritor de pacote. Definir o carimbo de data/hora não afeta quando o pacote é realmente transmitido; em vez disso, o carimbo de data/hora é usado para a manutenção de registros. Um driver de protocolo pode usar o carimbo de data/hora para determinar quanto tempo leva para concluir o envio de um paket.

TIME_STAMP_CAPABLE
Quando definido, indica que a NIC pode carimbar (no campo apropriado do pacote de saída) a hora em que o primeiro byte do pacote é transmitido e que a NIC pode recuperar esse tempo do mesmo campo de um pacote de entrada.

ClockPrecision
Especifica a precisão do relógio em partes por milhão. Para que essas informações sejam consideradas válidas, o sinalizador CLOCK_PRECISION deve ser definido.

Comentários

Um driver de miniporte pode fornecer suporte para determinados parâmetros de tempo, mesmo na ausência de um relógio local ou de rede. Em particular, um driver de miniporto pode usar o relógio do sistema para receber indicações de tempo, envios cronometrado e até mesmo carimbo de data/hora. Um relógio baseado em NIC é melhor, pois é provável que ele forneça maior precisão e seja acessível com latências mais baixas do que o relógio do sistema. Em todos os casos, o driver de miniporto deve especificar a precisão do relógio que ele usa. Isso permite que os protocolos determinem como usar melhor o suporte de tempo do driver de miniport.

Se o driver de miniporto relatar a presença de um relógio legível, ele deverá estar preparado para responder imediatamente a uma consulta OID_GEN_GET_NETCARD_TIME. A resposta do driver de miniporto a essa chamada é crítica por tempo e, portanto, deve ser síncrona.

Requisitos

Versão: Windows Vista e cabeçalho posterior: Ntddndis.h (inclua Ndis.h)