Метод IMiniport::D ataRangeIntersection (portcls.h)
Метод DataRangeIntersection определяет пересечение двух диапазонов данных с наивысшим качеством.
Синтаксис
NTSTATUS DataRangeIntersection(
ULONG PinId,
PKSDATARANGE DataRange,
PKSDATARANGE MatchingDataRange,
ULONG OutputBufferLength,
PVOID ResultantFormat,
PULONG ResultantFormatLength
);
Параметры
PinId
Указывает идентификатор пин-кода. Этот параметр определяет фабрику контактов, для которой определяется пересечение данных. Если фильтр содержит n фабрик контактов, допустимые идентификаторы контактов варьируются от 0 до n-1.
DataRange
Указатель на структуру KSDATARANGE, содержащую диапазон данных, отправленный клиентом в запросе на пересечение свойства диапазона данных.
MatchingDataRange
Указатель на структуру KSDATARANGE, содержащую диапазон данных драйвера мини-порта, который должен сравниваться с диапазоном данных клиента.
OutputBufferLength
Задает размер буфера в байтах, на который указывает параметр ResultantFormat. Вызывающий объект может указать OutputBufferLength в качестве нуля, чтобы запросить требуемый размер буфера. Дополнительные сведения см. в разделе "Примечания".
ResultantFormat
Указатель на буфер, в который метод записывает результирующий формат. Если этот параметр имеет значение NULL, параметр OutputBufferLength должен быть равен нулю. Если значение не равно NULL, этот параметр должен указывать на буфер, который достаточно велик, чтобы содержать число байтов, указанное в OutputBufferLength.
ResultantFormatLength
Указатель вывода для результирующий длины формата. Этот параметр указывает на выделенную вызывающим объектом переменную ULONG, в которую метод записывает длину результирующих форматов. Это размер в байтах результирующий формат, который записывается в буфер, на который указывает ResultantFormat. Этот размер должен быть меньше или равен OutputBufferLength (если только OutputBufferLength не равен нулю; см. следующий раздел Примечания).
Возвращаемое значение
Этот метод возвращает NTSTATUS, который содержит STATUS_SUCCESS, был ли вызов успешным. Если параметр OutputBufferLength был указан как ноль, метод возвращает STATUS_BUFFER_OVERFLOW. В противном случае метод возвращает соответствующий код ошибки. В следующей таблице показаны некоторые возможные коды состояния возврата.
Код возврата | Описание |
---|---|
STATUS_NO_MATCH | Пересечения нет. |
STATUS_NOT_IMPLEMENTED | Откладывает обработку пересечения данных на обработчик пересечения данных драйвера порта по умолчанию. |
STATUS_BUFFER_TOO_SMALL | Длина буфера, указанная в OutputBufferLength, была ненулевой, но слишком мала для хранения результирующих форматов. |
Комментарии
Метод DataRangeIntersection — это обработчик пересечения данных драйвера miniport. Драйвер порта вызывает этот метод, когда получает запрос на пересечение свойства диапазона данных (см. KSPROPERTY_PIN_DATAINTERSECTION), а целевым объектом для запроса является фабрика контактов на экземпляре фильтра, реализуемом драйвером мини-порта.
Параметр ResultantFormat указывает на буфер, который начинается со структуры KSDATAFORMAT_WAVEFORMATEX. Обратите внимание, что элемент WaveFormatEx этой структуры можно расширить для включения дополнительных сведений о формате (например, маски конфигурации канала). Дополнительные сведения см. в разделе WAVEFORMATEXTENSIBLE.
Параметр ResultantFormat является необязательным и может быть указан как NULL, в этом случае OutputBufferLength должен быть указан как нуль. Вызывающий объект может запросить требуемую длину буфера, выполнив первоначальный вызов DataRangeIntersection со значением OutputBufferLength, равным нулю. В ответ метод записывает необходимую длину буфера в расположение, на которое указывает ResultantFormatLength, и возвращает код состояния STATUS_BUFFER_OVERFLOW. Затем вызывающий объект может выделить буфер требуемого размера и указать этот буфер во втором вызове DataRangeIntersection.
Если драйвер поддерживает KSPROPERTY_AUDIOSIGNALPROCESSING_MODES, этот метод должен возвращать ResultantFormat , если формат поддерживается любым режимом обработки звукового сигнала.
Требования
Требование | Значение |
---|---|
Заголовок | portcls.h |
IRQL | PASSIVE_LEVEL |