Função StreamClassQueryMasterClock (strmini.h)
Quando o minidriver chama a rotina StreamClassQueryMasterClock, o driver de classe consulta o valor de hora apropriado da master relógio 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 master. O fluxo pode ter apenas uma consulta pendente por vez. O driver de classe passa esse valor para o retorno de chamada no membro HwStreamObject do parâmetro TimeContext do retorno de chamada.
[in] MasterClockHandle
Especifica o identificador do relógio master 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 tempo para a qual consultar o relógio master. Consulte HW_TIME_CONTEXT para obter os valores possíveis. O driver de classe passa esse valor para o retorno de chamada no membro Function 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);
Retornar valor
Nenhum
Comentários
O driver de classe consulta o relógio master 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 , a hora atual do sistema no membro SystemTime da mesma estrutura e a extensão de dispositivo do minidriver no membro HwDeviceExtension dessa estrutura.
O driver de classe desaloca a estrutura 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 master (TimeContext-HwStreamObject-HwStreamExtension).>>
Em raras ocasiões, o gerenciador de grafo alterna o relógio master. O piloto da classe expõe uma condição de corrida ao lidar com o novo relógio master. Se o minidriver chamar uma classe de fluxo master rotina de relógio imediatamente após receber um novo relógio do driver de classe, o driver de classe poderá produzir resultados inesperados.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | strmini.h (inclua Strmini.h) |
Biblioteca | Stream.lib |