Método IPortDMus::Notify (dmusicks.h)
O Notify
método deve ser chamado a partir da ISR (rotina de serviço de interrupção) do driver de miniporto quando ocorreu uma interrupção de hardware. Essa chamada solicita que o driver de porta chame o driver de miniporte de volta com uma DPC (chamada de procedimento adiada) enquanto o driver de miniporto manipula a interrupção.
Sintaxe
void Notify(
[in, optional] PSERVICEGROUP ServiceGroup
);
Parâmetros
[in, optional] ServiceGroup
Ponteiro para um objeto IServiceGroup . Esse parâmetro é opcional e pode ser especificado como NULL. Para obter mais informações, consulte a seção Comentários a seguir.
Retornar valor
Nenhum
Comentários
O Notify
método envia notificação para o grupo de serviços do driver de miniport:
-
Se o parâmetro pServiceGroup não for NULL, o
Notify
método chamará o método RequestService no objeto IServiceGroup para o qual esse parâmetro aponta. - Se pServiceGroup for NULL:
- O
Notify
método chama o método RequestService no objeto IServiceGroup do driver de miniport. Esse é o objeto IServiceGroup que o driver de miniporto gera durante a chamada IMiniportDMus::Init . O driver de miniporte também pode ter registrado esse objeto antecipadamente (ou seja, antes do retorno de Init) chamando IPortDMus::RegisterServiceGroup. - O
Notify
método também chama o método RequestService no objeto IServiceGroup pertencente a cada um dos fluxos do driver de miniport. Esse é o objeto IServiceGroup que o método IMiniportDMus::NewStream gera.
- O
Notify
para notificar o driver de porta de que o dispositivo de áudio gerou uma interrupção de hardware. Quando uma interrupção sinaliza, por exemplo, que algum registro precisa ser lido, o ISR do driver de miniporto não pode acessar o grafo MXF (filtro de transformação MIDI) no IRQL elevado. Em vez disso, o driver de miniporto pode armazenar os dados de entrada (um byte de dados MIDI, por exemplo) do registro, chamar Notify
e aguardar o driver de porta voltar a ele com um DPC.
Quando o ISR do driver de miniporto chama Notify
, o driver de porta recebe a notificação no IRQL de interrupção de hardware com privilégios elevados e coloca um DPC na fila. Quando o IRQL cai para o DISPATCH_LEVEL, o DPC do driver de porta aciona e presta serviços ao driver de miniporte.
Dentro do DPC, o driver de porta chama IMXF::P utMessage no fluxo de entrada do driver de miniporto com um parâmetro NULL para significar que o driver de miniporto agora pode colocar a mensagem MIDI armazenada anteriormente no grafo MXF porque o IRQL caiu de volta para DISPATCH_LEVEL.
Esse método é vital para um tempo preciso. A maioria dos miniportos chamará esse método em resposta a uma interrupção de notificação depois de ter limpado a origem da interrupção. Embora o driver de miniporte seja livre para usar outros métodos para determinar quando chamar esse método, o tempo preciso é importante e deve ser mantido.
Quando um driver de adaptador instala um ISR, ele envia um parâmetro ServiceContext junto com o ponto de entrada do ISR (para obter detalhes, consulte Fornecendo informações de contexto isr). Quando a interrupção ocorre, o sistema operacional chama o ISR e passa ServiceContext como um parâmetro de chamada para o ISR. Embora o significado do parâmetro ServiceContext seja conhecido apenas pelo desenvolvedor do driver, ele normalmente é um ponteiro para o objeto miniport. O ISR usa esse ponteiro para acessar informações sobre o objeto miniport.
O parâmetro pServiceGroup segue as convenções de contagem de referência para objetos COM.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | dmusicks.h (inclua Dmusicks.h) |
IRQL | Qualquer nível |