Condividi tramite


Metodo IMiniportWaveRTStreamNotification::AllocateBufferWithNotification (portcls.h)

Il metodo AllocateAudioBufferWithNotification alloca un buffer ciclico per i dati audio quando si vuole implementare la notifica degli eventi guidata da DMA. Se non si desidera notificare eventi, è necessario usare IMiniportWaveRTStream::AllocateAudioBuffer.

Sintassi

NTSTATUS AllocateBufferWithNotification(
  [in]  ULONG               NotificationCount,
  [in]  ULONG               RequestedSize,
  [out] PMDL                *AudioBufferMdl,
  [out] ULONG               *ActualSize,
  [out] ULONG               *OffsetFromFirstPage,
  [out] MEMORY_CACHING_TYPE *CacheType
);

Parametri

[in] NotificationCount

Specifica il numero di notifiche desiderate per ciclo del buffer. I valori validi sono 1 o 2, dove 1 indica una singola notifica alla fine del buffer ciclico e 2 indica due notifiche per ciclo di buffer, una alla metà del buffer e una alla fine.

[in] RequestedSize

Specifica le dimensioni richieste, in byte, del buffer audio.

[out] AudioBufferMdl

Puntatore di output per un elenco di descrittori di memoria (MDL) che descrive il buffer audio. Questo parametro punta a una variabile puntatore allocata dal chiamante in cui il metodo scrive un puntatore nel linguaggio MDL.

[out] ActualSize

Puntatore di output per le dimensioni effettive, in byte, del buffer allocato. Questo parametro punta a una variabile ULONG in cui il metodo scrive il valore della dimensione.

[out] OffsetFromFirstPage

Puntatore di output per l'offset (in byte) del buffer, dall'inizio della prima pagina nel file MDL. Questo parametro punta a una variabile ULONG allocata dal chiamante in cui il metodo scrive il valore di offset.

[out] CacheType

Specifica il tipo di memorizzazione nella cache richiesto dal client per il buffer audio. Questo parametro è un valore di enumerazione MEMORY_CACHING_TYPE

Valore restituito

AllocateBufferWithNotification restituisce STATUS_SUCCESS se la chiamata ha avuto esito positivo. In caso contrario, il metodo restituisce un codice di stato di errore appropriato. La tabella seguente illustra alcuni dei possibili codici di stato di errore.

Codice restituito Descrizione
STATUS_UNSUCCESSFUL
Il driver non supporta la combinazione specificata di attributi del buffer.
STATUS_INSUFFICIENT_RESOURCES
Memoria insufficiente per allocare il buffer.
STATUS_DEVICE_NOT_READY
Il dispositivo non è pronto.

Osservazioni

nota miniport per codec audio intel ad alta definizione deve specificare un valore CacheType di MmWriteCombined per garantire la coerenza della cache. Ciò è dovuto al fatto che il controller audio Intel High Definition può essere configurato per l'operazione non snoop.
 
Dopo aver ricevuto una richiesta di KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION dal client, il driver della porta chiama il metodo AllocateBufferWithNotification per allocare un buffer ciclico di cui il driver della porta può successivamente eseguire il mapping allo spazio indirizzi virtuale del client. AllocateBufferWithNotification funziona in modo simile a IMiniportWaveRTStream::AllocateAudioBuffer. Inoltre, AllocateBufferWithNotification identifica il driver di porta WaveRT desiderato per la notifica degli eventi guidata da DMA e specifica il numero di notifiche per ciclo del buffer ciclico.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile in Windows Vista e nei sistemi operativi Windows successivi.
piattaforma di destinazione Universale
intestazione portcls.h
IRQL Livello passivo.

Vedere anche

IMiniportWaveRTStream::AllocateAudioBuffer

IMiniportWaveRTStreamNotification

KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION

MDL

MEMORY_CACHING_TYPE