Metodo IPortDMus::Notify (dmusicks.h)

Il Notify metodo deve essere chiamato dalla routine del servizio di interruzione del driver miniport (ISR) quando si è verificato un interruzione 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'interruzione.

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 ulteriori informazioni, vedere la sezione Osservazioni successiva.

Valore restituito

nessuno

Osservazioni

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

  • Se il parametro pServiceGroup non è NULL, il Notify metodo chiama il metodo RequestService nell'oggetto IServiceGroup a cui punta questo parametro.
  • Se pServiceGroup è NULL:
    • Il Notify metodo chiama il metodo RequestService nell'oggetto IServiceGroup del driver miniport. Si tratta dell'oggetto IServiceGroup che l'output del driver miniport durante la chiamata IMiniportDMus::Init . Il driver miniport potrebbe anche aver registrato l'oggetto in anticipo , ovvero prima del ritorno da Init, chiamando IPortDMus::RegisterServiceGroup.
    • Il Notify metodo chiama anche il metodo RequestService nell'oggetto IServiceGroup appartenente a ognuno dei flussi del driver miniport. Si tratta dell'oggetto IServiceGroup restituito dal metodo IMiniportDMus::NewStream .
Il driver miniport chiama Notify in genere per notificare al driver della porta che il dispositivo audio ha generato un interruzione hardware. Quando un segnale di interruzione, 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 del irQL con privilegi elevati. Il driver miniport può invece archiviare i dati di input (un byte di dati MIDI, ad esempio) dal registro, chiamare Notifye attendere che il driver di porta venga restituito con un DPC.

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

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

Questo metodo è fondamentale per tempi accurati. La maggior parte dei miniport chiamerà questo metodo in risposta a un interruzione di notifica dopo aver cancellato l'origine dell'interruzione. 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'adapter installa un ISR, invia un parametro ServiceContext insieme al punto di ingresso dell'ISR (per informazioni dettagliate, vedere Fornire informazioni sul contesto ISR). Quando si verifica l'interruzione, il sistema operativo chiama ISR e passa ServiceContext come parametro di chiamata all'ISR. Anche se il significato del parametro ServiceContext è noto solo per lo sviluppatore del 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.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione dmusicks.h (include Dmusicks.h)
IRQL Qualsiasi livello

Vedi anche

IMXF::P utMessage

IMiniportDMus::Init

IMiniportDMus::NewStream

IPortDMus

IPortDMus::RegisterServiceGroup

IServiceGroup