Condividi tramite


Metodo IPortDMus::Notify (dmusicks.h)

Il metodo Notify deve essere chiamato dalla routine del servizio interrupt del driver miniport (ISR) quando si è verificato un interrupt hardware. Questa chiamata richiede che il driver della porta chiami nuovamente il driver miniport con una chiamata di procedura posticipata (DPC) mentre il driver miniport gestisce l'interrupt.

Sintassi

void Notify(
  [in, optional] PSERVICEGROUP ServiceGroup
);

Parametri

[in, optional] ServiceGroup

Puntatore a un oggetto IServiceGroup. Questo parametro è facoltativo e può essere specificato come NULL. Per altre informazioni, vedere la sezione Osservazioni seguente.

Valore restituito

Nessuno

Osservazioni

Il metodo Notify invia una notifica al gruppo di servizi del driver miniport:

  • Se il parametro pServiceGroup non èNULL, il metodo Notify chiama il metodo RequestService sull'oggetto IServiceGroup a cui punta questo parametro.
  • Se pServiceGroup è null:
    • Il metodo Notify chiama il metodo RequestService sull'oggetto del driver miniport IServiceGroup. Si tratta dell'oggetto IServiceGroup restituito dal driver miniport durante la chiamata IMiniportDMus::Init. Il driver miniport potrebbe anche aver registrato questo oggetto in anticipo ,ovvero prima del ritorno da Init) chiamando IPortDMus::RegisterServiceGroup.
    • Il metodo Notify chiama anche il metodo RequestService sull'oggetto IServiceGroup appartenente a ognuno dei flussi del driver miniport. Si tratta dell'oggetto IServiceGroup restituito dal metodo IMiniportDMus::NewStream.
Il driver miniport chiama in genere Notify per notificare al driver di porta che il dispositivo audio ha generato un interrupt hardware. Quando un interrupt segnala, ad esempio, che alcuni registri devono essere letti, l'ISR del driver miniport non può accedere al grafico MXF (filtro di trasformazione MIDI) in corrispondenza dell'IRQL con privilegi elevati. Al contrario, il driver miniport può archiviare i dati di input (un byte di dati MIDI, ad esempio) dal registro, chiamare Notifye attendere che il driver di porta torni ad esso con un DPC.

Quando l'ISR del driver miniport chiama Notify, il driver della porta riceve la notifica all'irQL di interruzione hardware con privilegi elevati e inserisce un DPC nella coda. Quando IRQL scende al DISPATCH_LEVEL, il driver DPC della porta viene attivato e il driver miniport.

All'interno del DPC, il driver di porta chiama IMXF::P utMessage sul flusso di input del driver miniport con un parametro di NULL per indicare che il driver miniport può ora inserire il messaggio MIDI archiviato in precedenza nel grafo MXF perché IRQL è tornato a DISPATCH_LEVEL.

Questo metodo è fondamentale per una tempistica accurata. La maggior parte dei miniport chiamerà questo metodo in risposta a un interrupt di notifica dopo aver cancellato l'origine interrupt. Anche se il driver miniport è libero di usare altri metodi per determinare quando chiamare questo metodo, la tempistica precisa è importante e deve essere mantenuta.

Quando un driver dell'adattatore installa un ISR, invia un parametro ServiceContext insieme al punto di ingresso di ISR . Per informazioni dettagliate, vedere Providing ISR Context Information). Quando si verifica l'interrupt, il sistema operativo chiama l'ISR e passa ServiceContext come parametro di chiamata all'ISR. Anche se il significato del parametro ServiceContext è noto solo allo sviluppatore di driver, è in genere un puntatore all'oggetto miniport. L'ISR usa questo puntatore per accedere alle informazioni sull'oggetto miniport.

Il parametro pServiceGroup segue le convenzioni di conteggio dei riferimenti per gli oggetti COM.

Fabbisogno

Requisito Valore
piattaforma di destinazione Desktop
intestazione dmusicks.h (include Dmusicks.h)
IRQL Qualsiasi livello

Vedere anche

IMXF::P utMessage

IMiniportDMus::Init

IMiniportDMus::NewStream

IPortDMus

IPortDMus::RegisterServiceGroup

IServiceGroup