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 |