Método IMiniport::D ataRangeIntersection (portcls.h)

El método DataRangeIntersection determina la intersección de mayor calidad de dos intervalos de datos.

Sintaxis

NTSTATUS DataRangeIntersection(
  ULONG        PinId,
  PKSDATARANGE DataRange,
  PKSDATARANGE MatchingDataRange,
  ULONG        OutputBufferLength,
  PVOID        ResultantFormat,
  PULONG       ResultantFormatLength
);

Parámetros

PinId

Especifica el identificador de patilla. Este parámetro identifica el generador de patillas para el que se determina la intersección de datos. Si el filtro contiene n generadores de patillas, los identificadores de pin válidos van de 0 a n-1.

DataRange

Puntero a una estructura KSDATARANGE que contiene el intervalo de datos enviado por el cliente en la solicitud de propiedad de intersección del intervalo de datos.

MatchingDataRange

Puntero a una estructura KSDATARANGE que contiene el intervalo de datos del controlador de minipuerto que se va a comparar con el intervalo de datos del cliente.

OutputBufferLength

Especifica el tamaño en bytes del búfer al que apunta el parámetro ResultantFormat. El autor de la llamada puede especificar OutputBufferLength como cero para consultar el tamaño de búfer necesario. Para obtener más información, vea la sección Comentarios que se muestra más adelante.

ResultantFormat

Puntero al búfer en el que el método escribe el formato resultante. Si este parámetro es NULL, el parámetro OutputBufferLength debe ser cero. Si no es NULL, este parámetro debe apuntar a un búfer lo suficientemente grande como para contener el número de bytes especificados en OutputBufferLength.

ResultantFormatLength

Puntero de salida para la longitud del formato resultante. Este parámetro apunta a una variable ULONG asignada por el autor de la llamada en la que el método escribe la longitud del formato resultante. Este es el tamaño en bytes del formato resultante que se escribe en el búfer al que apunta ResultantFormat. Este tamaño debe ser menor o igual que OutputBufferLength (a menos que OutputBufferLength sea cero; vea la sección Comentarios siguiente).

Valor devuelto

Este método devuelve NTSTATUS que contiene STATUS_SUCCESS si la llamada se realizó correctamente. Si el parámetro OutputBufferLength se especificó como cero, el método devuelve STATUS_BUFFER_OVERFLOW. De lo contrario, el método devuelve un código de error adecuado. En la tabla siguiente se muestran algunos de los posibles códigos de estado de retorno.

Código devuelto Descripción
STATUS_NO_MATCH No hay intersección.
STATUS_NOT_IMPLEMENTED Aplaza el control de intersección de datos al controlador de intersección de datos predeterminado del controlador de puerto.
STATUS_BUFFER_TOO_SMALL La longitud del búfer especificada en OutputBufferLength no era cero, pero era demasiado pequeña para contener el formato resultante.

Comentarios

El método DataRangeIntersection es el controlador de intersección de datos del controlador de miniporte. El controlador de puerto llama a este método cuando recibe una solicitud de propiedad de intersección de intervalo de datos (vea KSPROPERTY_PIN_DATAINTERSECTION) y el destino de la solicitud es un generador de patillas en una instancia de filtro que implementa el controlador de miniporte.

El parámetro ResultantFormat apunta a un búfer que comienza con una estructura de KSDATAFORMAT_WAVEFORMATEX. Tenga en cuenta que el miembro WaveFormatEx de esta estructura se puede extender para incluir información de formato adicional (por ejemplo, una máscara de configuración de canal). Para obtener más información, vea WAVEFORMATEXTENSIBLE.

El parámetro ResultantFormat es opcional y se puede especificar como NULL, en cuyo caso OutputBufferLength debe especificarse como cero. El autor de la llamada puede consultar la longitud del búfer necesaria realizando una llamada inicial a DataRangeIntersection con un valor OutputBufferLength de cero. El método responde escribiendo la longitud del búfer necesaria en la ubicación a la que apunta ResultantFormatLength y devolviendo el código de estado STATUS_BUFFER_OVERFLOW. A continuación, el autor de la llamada puede asignar un búfer del tamaño necesario y especificar este búfer en una segunda llamada a DataRangeIntersection.

Si el controlador admite KSPROPERTY_AUDIOSIGNALPROCESSING_MODES, este método devolverá ResultantFormat si el formato es compatible con cualquier modo de procesamiento de señal de audio.

Requisitos

Requisito Valor
Header portcls.h
IRQL PASSIVE_LEVEL

Consulte también

IMiniPort