PCAM_PROCESS_PACKET_ROUTINE_EX fonction de rappel (usbcamdi.h)
La fonction de rappel CamProcessUSBPacketEx d’un minidriver d’appareil photo traite un paquet USB.
Syntaxe
PCAM_PROCESS_PACKET_ROUTINE_EX PcamProcessPacketRoutineEx;
ULONG PcamProcessPacketRoutineEx(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext,
PVOID CurrentFrameContext,
PUSBD_ISO_PACKET_DESCRIPTOR SyncPacket,
PVOID SyncBuffer,
PUSBD_ISO_PACKET_DESCRIPTOR DataPacket,
PVOID DataBuffer,
PBOOLEAN FrameComplete,
PULONG PacketFlag,
PULONG ValidDataOffset
)
{...}
Paramètres
BusDeviceObject
Pointeur vers l’objet d’appareil du minidriver de la caméra créé par le hub USB.
DeviceContext
Pointeur vers le contexte d’appareil du minidriver de l’appareil photo.
CurrentFrameContext
Pointeur vers le contexte du cadre du minidriver de l’appareil photo.
SyncPacket
Pointeur vers une structure USBD_ISO_PACKET_DESCRIPTOR à partir du canal de synchronisation. Cette valeur est NULL si l’interface n’a qu’un seul canal.
SyncBuffer
Pointeur vers les données du SyncPacket.
DataPacket
Spécifie le descripteur de paquets isochronieux du canal de données.
DataBuffer
Pointeur vers DataPacket.
FrameComplete
Pointeur vers une valeur BOOLEAN que le minidriver de l’appareil photo définit pour indiquer s’il s’agit du premier paquet de données pour une nouvelle image vidéo.
PacketFlag
Pointeur vers une valeur que le minidriver définit pour indiquer le contenu du cadre actuel. Il doit être défini sur l’une des valeurs suivantes :
Indicateur | Signification |
---|---|
USBCAMD_PROCESSPACKETEX_DropFrame | Le cadre actuel n’est pas modifiable. Le IRP lu devrait être recyclé. |
USBCAMD_PROCESSPACKETEX_NextFrameIsStill | Le cadre est une image fixe. |
USBCAMD_PROCESSPACKETEX_CurrentFrameIsStill | Le cadre actuel est pour l’épingle fixe. |
ValidDataOffset
Pointeur vers une valeur ULONG qui indique un décalage par rapport au début du paquet. USBCAMD doit démarrer la copie à partir de ce décalage. Cela élimine la copie tampon supplémentaire dans le cas d’un signal en bande. Si la caméra n’utilise pas la signalisation in-band, ValidDataOffset doit être défini sur zéro.
Valeur retournée
Cette fonction retourne le nombre d’octets à copier.
Remarques
Le minidriver doit terminer sa fonction CamProcessUSBPacketEx le plus rapidement possible. Le traitement des images doit être différé à la fonction CamProcessRawVideoFrameEx .
Cette fonction de rappel est utilisée uniquement avec des canaux isochronaux (vidéo ou encore streaming).
L’USBCAMD d’origine n’appelle pas CamProcessUSBPacketEx.
Cette fonction est facultative.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | usbcamdi.h (inclure Usbcamdi.h) |
IRQL | DISPATCH_LEVEL |