Compartilhar via


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 driver de miniporto normalmente chama 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 Notifye 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

Confira também

IMXF::P utMessage

IMiniportDMus::Init

IMiniportDMus::NewStream

IPortDMus

IPortDMus::RegisterServiceGroup

IServiceGroup