KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION
La proprietà KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION specifica un buffer ciclico allocato dal driver per i dati audio e identifica i requisiti di notifica degli eventi.
Nella tabella seguente vengono riepilogate le funzionalità di questa proprietà.
Tabella riepilogo utilizzo
Recupero | Set | Destinazione | Tipo di descrittore di proprietà | Tipo valore proprietà |
---|---|---|---|---|
Sì |
No |
Aggiungi (Blocca) |
Il descrittore di proprietà (dati dell'istanza) è costituito da una struttura KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION che contiene una struttura KSPROPERTY insieme ad altri membri. Il client scrive le dimensioni del buffer richieste nella struttura. Il client deve specificare l'indirizzo di base come NULL , a meno che non sia necessario un indirizzo di base specifico.
Questa proprietà viene usata quando si desidera che la notifica degli eventi basata su DMA. In base al membro NotificationCount , gli eventi registrati vengono segnalato una volta (alla fine) o due volte (alla metà e alla fine) per ciclo attraverso il buffer ciclico. Gli eventi vengono registrati usando KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT dopo aver chiamato correttamente KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION.
Il valore della proprietà (dati dell'operazione) è una struttura di tipo KSRTAUDIO_BUFFER. Il driver riempie questa struttura con le dimensioni effettive del buffer, l'indirizzo di base e il flag di barriera di memoria per il buffer ciclico allocato.
Valore restituito
Una richiesta di proprietà KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION restituisce STATUS_SUCCESS per indicare che è stata completata correttamente. In caso contrario, la richiesta restituisce un codice di stato di errore appropriato. La tabella seguente illustra alcuni dei possibili codici di stato di errore.
Codice stato | Significato |
---|---|
STATUS_UNSUCCESSFUL |
Non è possibile allocare un buffer ciclico con la combinazione specificata di attributi del buffer. |
STATUS_INSUFFICIENT_RESOURCES |
Non è possibile allocare la memoria per il buffer. |
STATUS_DEVICE_NOT_READY |
Il dispositivo non è pronto. |
Commenti
L'indirizzo di base è l'indirizzo di memoria virtuale all'inizio del buffer ciclico. Il client può accedere direttamente al buffer in questo indirizzo. Il buffer è contiguo nella memoria virtuale. Il driver determina se il buffer è contiguo nella memoria fisica.
Il client imposta l'indirizzo di base nel descrittore di proprietà su NULL. Il driver imposta l'indirizzo di base nel valore della proprietà sull'indirizzo virtuale del buffer audio allocato.
In genere, l'hardware audio richiede che il buffer audio inizi e termini sui limiti di esempio o soddisfi altri tipi di vincoli di allineamento dipendenti dall'hardware. Se è disponibile memoria sufficiente, le dimensioni effettive del buffer sono le dimensioni richieste arrotondate (verso l'alto o verso il basso) al campione più vicino o ad altri limiti vincolati hardware. In caso contrario, le dimensioni effettive possono essere inferiori alle dimensioni richieste.
Se una richiesta di proprietà KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION ha esito positivo, il valore della proprietà, ovvero una struttura di tipo KSRTAUDIO_BUFFER, contiene l'indirizzo e le dimensioni del buffer allocato dal driver.
La chiusura del pin libera automaticamente il buffer allocato tramite questa proprietà.
Requisiti
Versione |
Disponibile in Windows Vista e nei sistemi operativi Windows successivi. |
Intestazione |
Ksmedia.h |