Metodo IMiniport::D ataRangeIntersection (portcls.h)

Il metodo DataRangeIntersection determina l'intersezione di qualità massima 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 pin factory 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à intersezione dell'intervallo di dati.

MatchingDataRange

Puntatore a una struttura KSDATARANGE che contiene l'intervallo di dati del driver miniport che deve essere confrontato 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 query per le dimensioni del buffer necessarie. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.

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 sufficiente per contenere il numero di byte specificato 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 fa riferimento ResultantFormat. Questa dimensione deve essere minore o uguale a OutputBufferLength (a meno che OutputBufferLength sia zero; vedere la sezione Osservazioni seguente).

Valore restituito

Questo metodo restituisce NTSTATUS che contiene STATUS_SUCCESS se la chiamata ha 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 mostra alcuni dei possibili codici di stato restituiti.

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

Commenti

Il metodo DataRangeIntersection è il gestore dell'intersezione dati del driver miniport. Il driver di 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 di formato aggiuntive, 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 necessaria eseguendo una chiamata iniziale a DataRangeIntersection con un valore OutputBufferLength pari a zero. Il metodo risponde scrivendo la lunghezza del buffer necessaria alla posizione a cui punta resultantFormatLength e restituisce 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.

Requisiti

Requisito Valore
Intestazione portcls.h
IRQL PASSIVE_LEVEL

Vedi anche

IMiniPort