Metodo IMiniportWaveRTStreamNotification::AllocateBufferWithNotification (portcls.h)

Il AllocateAudioBufferWithNotification metodo alloca un buffer ciclico per i dati audio quando si vuole implementare la notifica degli eventi basata su DMA. Se non si vuole la notifica degli 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 di 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 al punto intermedio 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 del puntatore allocata del chiamante in cui il metodo scrive un puntatore all'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 delle dimensioni.

[out] OffsetFromFirstPage

Puntatore di output per l'offset (in byte) del buffer, dall'inizio della prima pagina in 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 richiesta 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 esito positivo. In caso contrario, il metodo restituisce un codice di stato di errore appropriato. La tabella seguente mostra alcuni dei possibili codici di stato degli errori.

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

Commenti

Nota Miniports for Intel High Definition Audio Codecs deve specificare un CacheType di MmWriteCombined per garantire la coherency della cache. Questo perché 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 di porta chiama il AllocateBufferWithNotification metodo per allocare un buffer ciclico che il driver della porta può eseguire in seguito il mapping allo spazio indirizzi virtuale del client. AllocateBufferWithNotification opera 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.

Requisiti

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.

Vedi anche

IMiniportWaveRTStream::AllocateAudioBuffer

IMiniportWaveRTStreamNotification

KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION

MDL

MEMORY_CACHING_TYPE