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

O método DataRangeIntersection determina a interseção de alta qualidade de dois intervalos de dados.

Sintaxe

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

Parâmetros

PinId

Especifica a ID do pino. Esse parâmetro identifica o pin factory para o qual a interseção de dados está sendo determinada. Se o filtro contiver n fábricas de pinos, as IDs de pino válidas variam de 0 a n-1.

DataRange

Ponteiro para uma estrutura KSDATARANGE que contém o intervalo de dados enviado pelo cliente na solicitação de propriedade de interseção de intervalo de dados.

MatchingDataRange

Ponteiro para uma estrutura KSDATARANGE que contém o intervalo de dados do driver de miniport que deve ser comparado ao intervalo de dados do cliente.

OutputBufferLength

Especifica o tamanho em bytes do buffer apontado pelo parâmetro ResultantFormat. O chamador pode especificar OutputBufferLength como zero para consultar o tamanho do buffer necessário. Para obter mais informações, consulte a seção Comentários a seguir.

ResultantFormat

Ponteiro para o buffer no qual o método grava o formato resultante. Se esse parâmetro for NULL, o parâmetro OutputBufferLength deverá ser zero. Se não for NULL, esse parâmetro deverá apontar para um buffer grande o suficiente para conter os bytes de número especificados em OutputBufferLength.

ResultantFormatLength

Ponteiro de saída para o comprimento de formato resultante. Esse parâmetro aponta para uma variável ULONG alocada pelo chamador na qual o método grava o comprimento do formato resultante. Esse é o tamanho em bytes do formato resultante que é gravado no buffer apontado por ResultantFormat. Esse tamanho deve ser menor ou igual a OutputBufferLength (a menos que OutputBufferLength seja zero; consulte a seção Comentários a seguir).

Retornar valor

Esse método retorna NTSTATUS que contém STATUS_SUCCESS se a chamada foi bem-sucedida. Se o parâmetro OutputBufferLength tiver sido especificado como zero, o método retornará STATUS_BUFFER_OVERFLOW. Caso contrário, o método retorna um código de erro apropriado. A tabela a seguir mostra alguns dos possíveis códigos de retorno status.

Código de retorno Descrição
STATUS_NO_MATCH Não há interseção.
STATUS_NOT_IMPLEMENTED Adia o tratamento de interseção de dados para o manipulador de interseção de dados padrão do driver de porta.
STATUS_BUFFER_TOO_SMALL O comprimento do buffer especificado em OutputBufferLength não era zero, mas era muito pequeno para manter o formato resultante.

Comentários

O método DataRangeIntersection é o manipulador de interseção de dados do driver de miniport. O driver de porta chama esse método quando recebe uma solicitação de propriedade de interseção de intervalo de dados (consulte KSPROPERTY_PIN_DATAINTERSECTION) e o destino da solicitação é uma fábrica de pinos em uma instância de filtro implementada pelo driver de miniport.

O parâmetro ResultantFormat aponta para um buffer que começa com uma estrutura KSDATAFORMAT_WAVEFORMATEX. Observe que o membro WaveFormatEx dessa estrutura pode ser estendido para incluir informações de formato adicionais (por exemplo, uma máscara de configuração de canal). Para obter mais informações, consulte WAVEFORMATEXTENSIBLE.

O parâmetro ResultantFormat é opcional e pode ser especificado como NULL; nesse caso, OutputBufferLength deve ser especificado como zero. O chamador pode consultar o comprimento do buffer necessário fazendo uma chamada inicial para DataRangeIntersection com um valor OutputBufferLength igual a zero. O método responde gravando o comprimento do buffer necessário no local apontado por ResultantFormatLength e retornando status código STATUS_BUFFER_OVERFLOW. Em seguida, o chamador pode alocar um buffer do tamanho necessário e especificar esse buffer em uma segunda chamada para DataRangeIntersection.

Se o driver der suporte a KSPROPERTY_AUDIOSIGNALPROCESSING_MODES, esse método retornará ResultantFormat se o formato for compatível com qualquer modo de processamento de sinal de áudio.

Requisitos

Requisito Valor
Cabeçalho portcls.h
IRQL PASSIVE_LEVEL

Confira também

IMiniPort