Метод 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

См. также раздел

IMiniPort