Метод 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 — это обработчик пересечения данных драйвера мини-порта. Драйвер портов вызывает этот метод при получении запроса свойства пересечения диапазона данных (см. 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 |