Condividi tramite


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à

No

Aggiungi (Blocca)

KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION

KSRTAUDIO_BUFFER

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

Vedere anche

KSPROPERTY

KSRTAUDIO_BUFFER

KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION

KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT