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 metodo
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 Notify
e 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 |