Método IPortDMus::Notify (dmusicks.h)
O método Notify
deve ser chamado 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 miniporto de volta com uma DPC (chamada de procedimento adiado) 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.
Valor de retorno
Nenhum
Observações
O método Notify
envia uma notificação para o grupo de serviços do driver de miniport:
-
Se o parâmetro pServiceGroup não forNULL, o método
Notify
chamará o método RequestService no objeto IServiceGroup ao qual esse parâmetro aponta. - Se pServiceGroup for NULL:
- O método
Notify
chama o método RequestService no objeto IServiceGroup do driver de miniport. Este é o objeto IServiceGroup que o driver de miniporto gera durante a chamada IMiniportDMus::Init. O driver de miniporto também pode ter registrado esse objeto antecipadamente (ou seja, antes do retorno de init) chamando IPortDMus::RegisterServiceGroup. - O método
Notify
também chama o método RequestService no objeto IServiceGroup que pertence a cada um dos fluxos do driver de miniport. Este é o objeto IServiceGroup que o método IMiniportDMus::NewStream saídas.
- O método
Notify
para notificar o driver de porta de que o dispositivo de áudio gerou uma interrupção de hardware. Quando um sinal de interrupção, por exemplo, que alguns registros precisam ser lidos, 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 esperar que o driver de porta volte para 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 miniporto.
No DPC, o driver de porta chama IMXF::P utMessage no fluxo de entrada do driver de miniporto com um parâmetro de NULL para indicar que o driver de miniporto agora pode colocar a mensagem MIDI armazenada anteriormente no grafo MXF porque o IRQL foi removido 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 juntamente 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 de miniporto. 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 |
---|---|
da Plataforma de Destino | Área de trabalho |
cabeçalho | dmusicks.h (inclua Dmusicks.h) |
IRQL | Qualquer nível |