Der Kamera-Minidriver kann dann verschiedene Stream Request-Blöcke (SRBs) in seiner AdapterReceivePacket-Rückruffunktion empfangen, um sie zu verarbeiten, einschließlich:
Der Kamera-Minitreiber bestimmt, wie die einzelnen SRB verarbeitet werden müssen. Der Minidriver kann Routinen in der USBCAMD2-Minitreiberbibliothek aufrufen, um die Verarbeitung von SRBs zu unterstützen. Diese Routinen beginnen in der Regel mit dem präfix USBCAMD_ .
Um beispielsweise die anderen Rückruffunktionen des Kamera-Minitreibers mit USBCAMD2 anzugeben, gibt der Kamera-Minitreiber deren Einstiegspunkte in einer USBCAMD_DEVICE_DATA2-Struktur an. Der Minidriver ruft dann USBCAMD_InitializeNewInterface auf, um die initialisierte USBCAMD_DEVICE_DATA2-Struktur an USBCAMD2 zu übergeben. USBCAMD2 ruft dann bei Bedarf die Rückruffunktionen des Minidrivers auf.
Der Minitreiber muss USBCAMD_AdapterReceivePacket aufrufen, um srBs, die er nicht verarbeitet, an USBCAMD2 zu senden.
USBCAMD-Bibliotheksrückruffunktionen beschreiben die Rückruffunktionen, die der Minidriver implementiert, und ob sie optional oder erforderlich sind.
Die folgende Liste der Verfahren veranschaulicht den allgemeinen Verarbeitungsfluss für SRBs, die an den Kamera-Minitreiber gesendet werden:
SRB_INITIALIZE_DEVICE-Handler von Minidriver
Komponente
Aktion
Kamera minidriver
Initialisieren Sie USBCAMD2, indem Sie USBCAMD_InitializeNewInterface aufrufen, um video- oder noch unformatierte Verarbeitungsanforderungen im Kernelmodus anzugeben, z. B. das Aktivieren von Geräteereignissen.
Beenden Sie die Konfiguration. Wählen Sie eine alternative Einstellung und eine maximale Übertragungsgröße aus. Füllen Sie das Array mit USBCAMD_Pipe_Config_Descriptor Strukturen aus.
USBCAMD2
Analysieren Sie das Array der USBCAMD_Pipe_Config_Descriptor-Strukturen .
Überprüfen Sie, ob die angeforderte Bildfrequenz (VideoInfoHeader.AvgTimePerFrame) innerhalb der oberen und unteren Grenzwerte für das angeforderte Videoformat liegt. Wenn die Grenzwerte überschritten werden, sollte der Minidriver die folgenden Werte in pSrb-CommandData.IntersectInfo-Datarange>> korrigieren: VideoInfoHeader.AvgTimePerFrame, VideoInfoHeader.dwBitRate.
Speichern Sie das vom Kamera-Minidriver akzeptierte Videoformat.
USBCAMD2
Rufen Sie die Rückruffunktion CamAllocateBandwidthEx des Minidrivers auf, um Bandbreite basierend auf Videoformatdaten zuzuweisen und die maximale Puffergröße für das Videoformat zu erhalten.
Kamera minidriver
Berechnen Sie die maximale Paketgröße des isochronen Kanals, die die angeforderte Framerate und Ausgabefenstergröße erfüllt.
Kamera minidriver
Wählen Sie die nächstgelegene alternative Einstellung aus, indem Sie USBCAMD_SelectAlternateInterface aufrufen. Der Minidriver sollte USBCAMD2 mit der maximal möglichen Framegröße bereitstellen, die von der Kamera erzeugt werden kann.
Kamera minidriver
Legen Sie die Hardwareskalierung auf der Kamera fest. Legen Sie die Kamerasteuerelemente auf die gespeicherten Werte in der Registrierung oder auf die Standardeinstellung fest, wenn sie zum ersten Mal verwendet werden.
Kamera minidriver
Stellen Sie sicher, dass die Bildfrequenz (VideoInfoHeader.AvgTimePerFrame) innerhalb der Grenzwerte für das Videoformat liegt, und korrigieren Sie sie, wenn dies nicht der Fall ist.
Wenn Datenströme noch geöffnet sind, schließen Sie sie, indem Sie die Rückruffunktionen CamStopCaptureEx und CamFreeBandwidthEx des Minidrivers für jeden Stream aufrufen.