Condividi tramite


Metodo IMiniport::D ataRangeIntersection (portcls.h)

Il metodo DataRangeIntersection determina l'intersezione di qualità più elevata di due intervalli di dati.

Sintassi

NTSTATUS DataRangeIntersection(
  ULONG        PinId,
  PKSDATARANGE DataRange,
  PKSDATARANGE MatchingDataRange,
  ULONG        OutputBufferLength,
  PVOID        ResultantFormat,
  PULONG       ResultantFormatLength
);

Parametri

PinId

Specifica l'ID pin. Questo parametro identifica la factory di pin per cui viene determinata l'intersezione dei dati. Se il filtro contiene n pin factory, gli ID pin validi sono compresi tra 0 e n-1.

DataRange

Puntatore a una struttura KSDATARANGE che contiene l'intervallo di dati inviato dal client nella richiesta di proprietà di intersezione dell'intervallo di dati.

MatchingDataRange

Puntatore a una struttura KSDATARANGE che contiene l'intervallo di dati del driver miniport da confrontare con l'intervallo di dati del client.

OutputBufferLength

Specifica le dimensioni in byte del buffer a cui punta il parametro ResultantFormat. Il chiamante può specificare OutputBufferLength come zero per eseguire una query per la dimensione del buffer richiesta. Per altre informazioni, vedere la sezione Osservazioni seguente.

ResultantFormat

Puntatore al buffer in cui il metodo scrive il formato risultante. Se questo parametro è NULL, il parametro OutputBufferLength deve essere zero. Se non null, questo parametro deve puntare a un buffer sufficientemente grande da contenere i byte numerici specificati in OutputBufferLength.

ResultantFormatLength

Puntatore di output per la lunghezza del formato risultante. Questo parametro punta a una variabile ULONG allocata dal chiamante in cui il metodo scrive la lunghezza del formato risultante. Si tratta delle dimensioni in byte del formato risultante scritto nel buffer a cui punta ResultantFormat. Questa dimensione deve essere minore o uguale a OutputBufferLength (a meno che OutputBufferLength non sia zero; vedere la sezione Osservazioni seguente).

Valore restituito

Questo metodo restituisce NTSTATUS che contiene STATUS_SUCCESS se la chiamata ha avuto esito positivo. Se il parametro OutputBufferLength è stato specificato come zero, il metodo restituisce STATUS_BUFFER_OVERFLOW. In caso contrario, il metodo restituisce un codice di errore appropriato. La tabella seguente illustra alcuni dei possibili codici di stato restituiti.

Codice restituito Descrizione
STATUS_NO_MATCH Non esiste alcuna intersezione.
STATUS_NOT_IMPLEMENTED Rinvia la gestione dell'intersezione dei dati al gestore di intersezione dati predefinito del driver di porta.
STATUS_BUFFER_TOO_SMALL La lunghezza del buffer specificata in OutputBufferLength era diversa da zero, ma era troppo piccola per contenere il formato risultante.

Osservazioni

Il metodo DataRangeIntersection è il gestore di intersezione dati del driver miniport. Il driver della porta chiama questo metodo quando riceve una richiesta di proprietà di intersezione dell'intervallo di dati (vedere KSPROPERTY_PIN_DATAINTERSECTION) e la destinazione per la richiesta è una factory di pin in un'istanza di filtro implementata dal driver miniport.

Il parametro ResultantFormat punta a un buffer che inizia con una struttura KSDATAFORMAT_WAVEFORMATEX. Si noti che il membro WaveFormatEx di questa struttura può essere esteso per includere informazioni aggiuntive sul formato, ad esempio una maschera di configurazione del canale. Per altre informazioni, vedere WAVEFORMATEXTENSIBLE.

Il parametro ResultantFormat è facoltativo e può essere specificato come NULL, nel qual caso OutputBufferLength deve essere specificato come zero. Il chiamante può eseguire una query per la lunghezza del buffer richiesta effettuando una chiamata iniziale a DataRangeIntersection con un valore OutputBufferLength pari a zero. Il metodo risponde scrivendo la lunghezza del buffer richiesta nella posizione a cui punta ResultantFormatLength e restituendo il codice di stato STATUS_BUFFER_OVERFLOW. Il chiamante può quindi allocare un buffer delle dimensioni necessarie e specificare questo buffer in una seconda chiamata a DataRangeIntersection.

Se il driver supporta KSPROPERTY_AUDIOSIGNALPROCESSING_MODES, questo metodo restituirà ResultantFormat se il formato è supportato da qualsiasi modalità di elaborazione del segnale audio.

Fabbisogno

Requisito Valore
intestazione portcls.h
IRQL PASSIVE_LEVEL

Vedere anche

IMiniPort