Inicializando um minidriver AVStream

Um minidriver AVStream que não manipula a inicialização do dispositivo em suas próprias chamadas KsInitializeDriver da rotina DriverEntry do minidriver. O KsInitializeDriver inicializa o objeto de driver de um driver AVStream, além de expedição de IRP, adição de mensagens de dispositivo PnP e descarregamento.

Ao chamar KsInitializeDriver, o minidriver passa um ponteiro para o objeto driver para inicializar um ponteiro para o caminho do Registro e, opcionalmente, um objeto descritor de dispositivo. Observe que não é necessário passar o objeto KSDEVICE_DESCRIPTOR . Se o minidriver passar um descritor de dispositivo, o AVStream criará um dispositivo com as características especificadas no momento de AddDevice.

O objeto descritor de dispositivo contém um ponteiro para uma estrutura KSDEVICE_DISPATCH , bem como uma matriz de descritores de filtro. Forneça um KSFILTER_DESCRIPTOR para cada tipo de filtro compatível com o minidriver. Quando o minidriver chama KsInitializeDriver, o AVStream cria um objeto de fábrica de filtros para cada tipo de filtro exposto pelo minidriver. Os filtros individuais são instanciados pela fábrica de filtros após o recebimento de um IRP de criação para o item de criação associado. Cada descritor de filtro contém um ponteiro para uma matriz de objetos KSPIN_DESCRIPTOR_EX . O AVStream cria uma fábrica de pinos no filtro relevante para cada tipo de pino que o minidriver expõe por meio desse filtro.

Quando uma conexão é feita com um determinado tipo de pino em um filtro, a fábrica de pinos AVStream cria um objeto pin. Observe que cada filtro deve expor pelo menos um pino. O minidriver usa o membro InstancesNecessary do KSPIN_DESCRIPTOR_EX para identificar o número de instâncias desse tipo de pino necessárias para que o filtro funcione corretamente. Da mesma forma, o minidriver pode impor um máximo no número de pinos que a fábrica de pinos pode instanciar usando o membro InstancesPossible dessa estrutura.

O AVStream dá suporte a dois tipos de processamento: processamento centrado em filtro e processamento centrado em pin. Ao definir os descritores, decida qual tipo de processamento cada tipo de filtro executará.

Instalando um minidriver AVStream

Um minidriver AVStream deve ter um arquivo INF que o sistema usa para instalar o driver. Um arquivo INF AVStream baseia-se no formato INF comum, que é descrito em Criando um arquivo INF. Você também pode consultar os arquivos INF fornecidos com drivers de exemplo do AVStream no WDK (Kit de Driver do Windows). Tenha em mente as diretrizes específicas do AVStream a seguir.

Se você estiver escrevendo um minidriver para um dispositivo pai, a seção AddReg do arquivo INF deverá conter:

[ParentName.AddReg]
HKR,"ENUM\[DeviceName]",pnpid,,"[string]"

Se você estiver escrevendo um minidriver para um dispositivo filho, a seção AddReg deverá conter:

[Manufacturer]
...=ChildName
[ChildName]
...=ChildName.Device,AVStream\[string]

Observe que "AVStream" seria "Stream" para um driver de classe de fluxo.

Para todos os minidrivers AVStream, a cadeia de caracteres de referência específica do filtro no arquivo INF deve corresponder ao membro ReferenceGuid da estrutura KSFILTER_DESCRIPTOR .

Para obter mais informações sobre descritores, consulte Descritores AVStream.