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 |