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 |