Inicialización de un minidriver AVStream
Un minidriver AVStream que no controla la inicialización del dispositivo en sus propias llamadas KsInitializeDriver desde la rutina DriverEntry del minidriver. KsInitializeDriver inicializa el objeto de controlador de un controlador AVStream, además de la distribución irP, PnP agrega mensajes de dispositivo y descarga.
Al llamar a KsInitializeDriver, el minidriver pasa un puntero al objeto de controlador para inicializar un puntero a la ruta de acceso del Registro y, opcionalmente, un objeto descriptor de dispositivo. Tenga en cuenta que no es necesario pasar el objeto KSDEVICE_DESCRIPTOR . Si el minidriver pasa un descriptor de dispositivo, AVStream crea un dispositivo con las características especificadas en el momento de AddDevice.
El objeto descriptor de dispositivo contiene un puntero a una estructura de KSDEVICE_DISPATCH , así como una matriz de descriptores de filtro. Proporcione un KSFILTER_DESCRIPTOR para cada tipo de filtro que admita el minidriver. Cuando el minidriver llama a KsInitializeDriver, AVStream crea un objeto de generador de filtros para cada tipo de filtro expuesto por el minidriver. A continuación, el generador de filtros crea instancias de los filtros individuales después de recibir un IRP de creación para el elemento de creación asociado. Cada descriptor de filtro contiene un puntero a una matriz de objetos KSPIN_DESCRIPTOR_EX . AVStream crea un generador de patillas en el filtro pertinente para cada tipo de anclaje que expone el minidriver a través de ese filtro.
Cuando se realiza una conexión a un tipo de patilla determinado en un filtro, el generador de patillas AVStream crea un objeto pin. Tenga en cuenta que cada filtro debe exponer al menos un pin. El minidriver usa el miembro InstancesNecessary de KSPIN_DESCRIPTOR_EX para identificar el número de instancias de este tipo de patilla que son necesarias para que el filtro funcione correctamente. Del mismo modo, el minidriver puede imponer un máximo en el número de patillas que el generador de patillas puede crear instancias mediante el miembro InstancesPossible de esta estructura.
AVStream admite dos tipos de procesamiento: procesamiento centrado en filtros y procesamiento centrado en patillas. Al diseñar los descriptores, decida qué tipo de procesamiento realizará cada tipo de filtro.
Instalación de un minidriver avStream
Un minidriver AVStream debe tener un archivo INF que el sistema usa para instalar el controlador. Un archivo AVStream INF se basa en el formato INF común, que se describe en Creación de un archivo INF. También puedes consultar los archivos INF proporcionados con controladores de ejemplo avStream en el Kit de controladores de Windows (WDK). Tenga en cuenta las siguientes directrices específicas de AVStream.
Si va a escribir un minidriver para un dispositivo primario, la sección AddReg del archivo INF debe contener:
[ParentName.AddReg]
HKR,"ENUM\[DeviceName]",pnpid,,"[string]"
Si va a escribir un minidriver para un dispositivo secundario, la sección AddReg debe contener:
[Manufacturer]
...=ChildName
[ChildName]
...=ChildName.Device,AVStream\[string]
Tenga en cuenta que "AVStream" sería "Stream" para un controlador de clase de flujo.
Para todos los minidrivers avStream, la cadena de referencia específica del filtro en el archivo INF debe coincidir con el miembro ReferenceGuid de la estructura KSFILTER_DESCRIPTOR .
Para obtener más información sobre los descriptores, vea AvStream Descriptores.