Partager via


Opération minidriver USBCAMD2

Un mini-lecteur de caméra USBCAMD2 fonctionne généralement comme suit :

Par exemple, pour spécifier les autres fonctions de rappel du minidriver de l’appareil photo avec USBCAMD2, le minidriver de l’appareil photo spécifie leurs points d’entrée dans une structure de USBCAMD_DEVICE_DATA2 . Le minidriver appelle ensuite USBCAMD_InitializeNewInterface pour passer la structure USBCAMD_DEVICE_DATA2 initialisée à USBCAMD2. USBCAMD2 appelle ensuite les fonctions de rappel du minidriver si nécessaire.

Notes

La structure USBCAMD_DEVICE_DATA est prise en charge dans USBCAMD2 uniquement à des fins de compatibilité descendante.

Le minidriver doit appeler USBCAMD_AdapterReceivePacket pour envoyer tous les SSB qu’il ne gère pas à USBCAMD2 à traiter.

Les fonctions de rappel de la bibliothèque USBCAMD décrivent les fonctions de rappel que le minidriver implémente et si elles sont facultatives ou obligatoires.

La liste de procédures suivante illustre le flux général de traitement des SRB envoyés au minidriver de l’appareil photo :

Gestionnaire de SRB_INITIALIZE_DEVICE minidriver

Composant Action
Minidriver de l’appareil photo Initialisez USBCAMD2 en appelant USBCAMD_InitializeNewInterface, en indiquant des exigences de traitement vidéo ou encore brutes en mode noyau, comme l’activation des événements d’appareil.
Minidriver de l’appareil photo Appelez USBCAMD_AdapterReceivePacket.
USBCAMD2 Acquérir des descripteurs de configuration et de périphérique USB.
USBCAMD2 Appelez la fonction de rappel CamConfigureEx du minidriver.
Minidriver de l’appareil photo Terminez la configuration. Choisissez un autre paramètre et une taille de transfert maximale. Renseignez le tableau des structures USBCAMD_Pipe_Config_Descriptor .
USBCAMD2 Analysez le tableau de structures USBCAMD_Pipe_Config_Descriptor .
USBCAMD2 Appelez la fonction de rappel CamInitialize du minidriver.
Minidriver de l’appareil photo Terminez l’initialisation. Définissez l’alimentation de l’appareil et activez le paramètre par défaut sur la caméra.
USBCAMD2 Indiquez le nombre de flux et la taille du descripteur de flux au pilote de classestream.sys .

Gestionnaire de SRB_GET_STREAM_INFO minidriver

Composant Action
Minidriver de l’appareil photo Fournissez la structure d’informations de flux HW_STREAM_INFORMATION au pilote de classestream.sys .
Minidriver de l’appareil photo Renseignez le pointeur vers le tableau des jeux de propriétés d’appareil dans stream.sys structure de HW_STREAM_HEADER du pilote de classe.
Minidriver de l’appareil photo Appelez USBCAMD_AdapterReceivePacket.
USBCAMD2 Renseignez le nombre de broches dans l’en-tête de flux.
USBCAMD2 Exposez la table d’événements de l’appareil, le cas échéant.
USBCAMD2 Correction des valeurs d’entrée dans la table d’informations de flux. Définissez le nom de catégorie (capture ou encore).
USBCAMD2 Renseignez le pointeur vers le tableau de propriétés de flux.

Gestionnaire de SRB_INITIALIZATION_COMPLETE minidriver

Composant Action
Minidriver de l’appareil photo Acquérir GUID_USBCAMD_INTERFACE pour USBCAMD2 à l’aide de IRP_MJ_PNP et de IRP_MN_QUERY_INTERFACE.

Gestionnaire de SRB_GET_DEVICE_PROPERTY minidriver

Composant Action
Minidriver de l’appareil photo Obtenez les propriétés gérées par le minidriver de l’appareil photo, telles que PROPSETID_VIDCAP_VIDEOPROCAMP, PROPSETID_VIDCAP_CAMERACONTROL et PROPSETID_VIDCAP_VIDEOCONTROL, ainsi que tout autre ensemble de propriétés personnalisées.

Gestionnaire de SRB_SET_DEVICE_PROPERTY minidriver

Composant Action
Minidriver de l’appareil photo Définissez les propriétés que gère le minidriver de l’appareil photo en acquérant les paramètres de PROPSETID_VIDCAP_VIDEOPROCAMP, PROPSETID_VIDCAP_CAMERACONTROL et PROPSETID_VIDCAP_VIDEOCONTROL, ainsi que tout autre ensemble de propriétés personnalisées.

Gestionnaire de SRB_GET_DATA_INTERSECTION minidriver

Composant Action
Minidriver de l’appareil photo Retourne une structure KSDATAFORMAT à partir d’une structure KSDATARANGE .
Minidriver de l’appareil photo Vérifiez que la fréquence d’images demandée (VideoInfoHeader.AvgTimePerFrame) se situe dans les limites supérieure et inférieure pour le format vidéo demandé. S’il dépasse les limites, le minidriver doit corriger les valeurs suivantes dans pSrb-CommandData.IntersectInfo-Datarange>> : VideoInfoHeader.AvgTimePerFrame, VideoInfoHeader.dwBitRate.

Gestionnaire de SRB_OPEN_STREAM minidriver

Composant Action
Mini-disque d’appareil photo Vérifiez le format de la vidéo.
Mini-disque d’appareil photo Appelez USBCAMD_AdapterReceivePacket.
USBCAMD2 Enregistrez le format vidéo accepté par le minidriver de l’appareil photo.
USBCAMD2 Appelez la fonction de rappel CamAllocateBandwidthEx du minidriver pour allouer la bande passante en fonction des données de format vidéo et obtenir la taille de mémoire tampon maximale pour le format vidéo.
Mini-disque d’appareil photo Calculez la taille maximale des paquets du canal isochrone qui satisfait la fréquence d’images et la taille des fenêtres de sortie demandées.
Mini-disque d’appareil photo Choisissez l’autre paramètre le plus proche en appelant USBCAMD_SelectAlternateInterface. Le minidriver doit fournir à USBCAMD2 la taille de cadre maximale possible qui peut être produite par l’appareil photo.
Mini-disque d’appareil photo Définissez la mise à l’échelle matérielle sur la caméra. Définissez les contrôles de caméra sur les valeurs stockées dans le Registre, ou sur le paramètre par défaut si la première fois.
Mini-disque d’appareil photo Vérifiez que la fréquence d’images (VideoInfoHeader.AvgTimePerFrame) est comprise dans les limites du format vidéo et corrigez-la si ce n’est pas le cas.
USBCAMD2 Appelez la fonction de rappel CamStartCaptureEx du minidriver.
Mini-disque d’appareil photo Définissez le matériel en mode capture.
USBCAMD2 Initialiser le transfert isochroneuse ou en bloc.

Gestionnaire de SRB_CLOSE_STREAM minidriver

Composant Action
Mini-disque d’appareil photo Appelez USBCAMD_AdapterReceivePacket.
USBCAMD2 Annulez les irps en attente soumis à USBCAMD2. Retourne tous les SDR de données en attente au pilote de classestream.sys .
USBCAMD2 Appelez la fonction de rappel CamStopCaptureEx du minidriver.
Mini-disque d’appareil photo Envoyez une commande stop-capture à l’appareil photo.
USBCAMD2 Appelez la fonction de rappel CamFreeBandwidthEx du minidriver pour libérer la bande passante de bus isochroneuse, le cas échéant.
Mini-disque d’appareil photo Sélectionnez un autre paramètre inactif.
USBCAMD2 Ressources gratuites associées aux canaux USB.

Gestionnaire de SRB_UNINITIALIZE_DEVICE minidriver

Composant Action
Mini-disque d’appareil photo Appelez USBCAMD_AdapterReceivePacket.
USBCAMD2 Si des flux sont toujours ouverts, fermez-les en appelant les fonctions de rappel CamStopCaptureEx et CamFreeBandwidthEx du minidriver pour chaque flux.
USBCAMD2 Appelez la fonction de rappel CamUnInitialize du minidriver.
Mini-disque d’appareil photo Nettoyer et libérer des ressources.

Gestionnaire de SRB_SURPRISE_REMOVAL minidriver

Composant Action
Mini-disque d’appareil photo Appelez USBCAMD_AdapterReceivePacket.
USBCAMD2 Annulez les SSR de données en attente et retournez les SSR avec STATUS_CANCELLED.
USBCAMD2 Appelez les fonctions de rappel CamStopCaptureEx et CamFreeBandwidthEx du minidriver sur tous les flux ouverts.
USBCAMD2 Retournez STATUS_CANCELLED sur les SLB en lecture/écriture qui tombent après SRB_SURPRISE_REMOVAL.

Gestionnaire de SRB_SET_DATA_FORMAT minidriver

Composant Action
Mini-disque d’appareil photo Vérifiez le nouveau format vidéo.
Mini-disque d’appareil photo Appelez USBCAMD_SetVideoFormat.
USBCAMD2 Enregistrez le nouveau format avec l’extension de flux associée.

Minidriver SRB_CHANGE_POWER_STATE de l’alimentation au gestionnaire de mise hors tension

Composant Action
Mini-disque d’appareil photo Appelez USBCAMD_AdapterReceivePacket.
USBCAMD2 Arrêtez la diffusion en continu sur le canal isochronique, le cas échéant, ou annulez les transferts en bloc ou en attente d’interruption.
USBCAMD2 Appelez la fonction de rappel CamStopCaptureEx du minidriver.
Mini-disque d’appareil photo Envoyer la commande arrêter la capture au matériel.

Minidriver SRB_CHANGE_POWER_STATE de l’alimentation hors tension au gestionnaire Mise sous tension

Composant Action
Mini-disque d’appareil photo Appelez USBCAMD_AdapterReceivePacket.
USBCAMD2 Redémarrez la diffusion en continu sur un canal isochronique, le cas échéant, ou renvoyez le transfert en bloc ou interrompez le transfert vers la classe USB.
Mini-disque d’appareil photo Restaurez les paramètres de l’appareil photo et la consommation d’énergie de l’appareil photo à des niveaux normaux.
USBCAMD2 Appelez la fonction de rappel CamStopCaptureEx du minidriver.
USBCAMD2 Appelez la fonction de rappel CamStartCaptureEx du minidriver.