Compartilhar via


Função StreamClassQueryMasterClock (strmini.h)

Quando o minidriver chama a rotina StreamClassQueryMasterClock, o driver de classe consulta o valor de tempo apropriado do relógio mestre de forma assíncrona e passa o resultado para a rotina passada no parâmetro ClockCallbackRoutine.

Sintaxe

void StreamClassQueryMasterClock(
  [in] PHW_STREAM_OBJECT       HwStreamObject,
  [in] HANDLE                  MasterClockHandle,
  [in] TIME_FUNCTION           TimeFunction,
  [in] PHW_QUERY_CLOCK_ROUTINE ClockCallbackRoutine
);

Parâmetros

[in] HwStreamObject

Ponteiro para um HW_STREAM_OBJECT indicando o fluxo que está consultando seu relógio mestre. O fluxo pode ter apenas uma consulta pendente por vez. O driver de classe passa esse valor para o retorno de chamada no HwStreamObject membro do parâmetro TimeContext do retorno de chamada.

[in] MasterClockHandle

Especifica o identificador do relógio mestre que está sendo consultado. O driver de classe passa isso na solicitação SRB_INDICATE_MASTER_CLOCK para a rotina StrMiniReceiveStreamControlPacket do minidriver.

[in] TimeFunction

Especifica a função de hora para a qual consultar o relógio mestre. Consulte HW_TIME_CONTEXT para obter os valores possíveis. O driver de classe passa esse valor para o retorno de chamada no membro da Função do parâmetro TimeContext.

[in] ClockCallbackRoutine

Especifica a rotina para a qual o driver de classe passa os resultados. O protótipo de função deve ser:

ClockCallbackRoutine(PHW_TIME_CONTEXT TimeContext);

Valor de retorno

Nenhum

Observações

O driver de classe consulta o relógio mestre e passa os resultados no parâmetro TimeContext (do tipo HW_TIME_CONTEXT) do retorno de chamada. Em particular, ele define o membro Time dessa estrutura como o valor de tempo solicitado no parâmetro TimeFunction, o tempo atual do sistema no membro SystemTime da mesma estrutura e a extensão de dispositivo do minidriver no HwDeviceExtension membro dessa estrutura.

O driver de classe desaloca a estrutura de HW_TIME_CONTEXT após o término da rotina de retorno de chamada do relógio, portanto, o retorno de chamada deve armazenar todas as informações que o minidriver deseja manter. Para essa finalidade, a rotina de retorno de chamada pode usar espaço alocado anteriormente na extensão de dispositivo do minidriver (TimeContext->HwDeviceExtension), ou na extensão de fluxo do fluxo que consultou seu relógio mestre (TimeContext ->HwStreamObject->HwStreamExtension).

Em raras ocasiões, o gerenciador de grafos alterna o relógio mestre. O piloto de classe expõe uma condição de corrida ao lidar com o novo relógio mestre. Se o minidriver chamar uma rotina de relógio mestre da classe de fluxo imediatamente após receber um novo relógio do driver de classe, o driver de classe poderá produzir resultados inesperados.

Requisitos

Requisito Valor
da Plataforma de Destino Área de trabalho
cabeçalho strmini.h (inclua Strmini.h)
biblioteca Stream.lib

Consulte também

HW_TIME_CONTEXT

StrMiniReceiveStreamControlPacket

StreamClassQueryMasterClockSync