Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les propriétés de contrôle dans le jeu de propriétés KSPROPERTYSETID_ExtendedCameraControl utilisent un format de charge utile commun pour obtenir et définir les données de propriété.
En-tête de propriétés étendues de la caméra
Toutes les payloads commencent par une structure KSCAMERA_EXTENDEDPROP_HEADER . Cette structure contient la cible de code confidentiel avec les indicateurs de contrôle et les fonctionnalités associés. Selon le contrôle particulier, le membre Fonctionnalités contient un ensemble de fonctionnalités fournies par le contrôle. Le membre Indicateurs contient les fonctionnalités réelles définies ou à définir pour le contrôle.
Le membre PinId spécifie la cible qui est le code confidentiel de l’appareil photo ou le code confidentiel de filtre. Si la propriété est un contrôle au niveau du filtre, PinId est défini sur KSCAMERA_EXTENDEDPROP_FILTERSCOPE.
Un contrôle de propriété est synchrone ou asynchrone. Si le contrôle est synchrone, l’indicateur KSCAMERA_EXTENDEDPROP_CAPS_ASYNCCONTROL est défini dans Fonctionnalités. En outre, si le contrôle est annulable, le membre Fonctionnalités inclut l’indicateur KSCAMERA_EXTENDEDPROP_CAPS_CANCELLABLE.
La taille de la charge utile est définie dans le membre nommé Size. La valeur de Taille est la taille entière de la charge utile. Si la propriété utilise uniquement l’en-tête, alors Size = sizeof(KSCAMERA_EXTENDEDPROP_HEADER). Sinon, Taille = (KSCAMERA_EXTENDEDPROP_HEADER) + sizeof(données spécifiques au contrôle).
Contrôler des données spécifiques
Certains contrôles de propriété utilisent une structure supplémentaire pour contenir des données supplémentaires. Lorsque des valeurs de données uniques sont utilisées, les données de propriété contiennent une structure KSCAMERA_EXTENDEDPROP_VALUE après KSCAMERA_EXTENDEDPROP_HEADER. La structure KSCAMERA_EXTENDEDPROP_VALUE permet à la propriété d’exprimer une valeur unique sous la forme d’un des différents types de données.
Pour obtenir ou définir des données supplémentaires, une propriété aura sa propre structure de données spéciale en suivant la KSCAMERA_EXTENDEDPROP_HEADER. L’exemple suivant montre un fragment de code de pilote définissant les données spécifiques de la propriété pour une requête KSPROPERTY_TYPE_GET de la propriété KSPROPERTY_CAMERACONTROL_EXTENDED_FIELDOFVIEW .
#define FL_WIDE_ANGLE 35
#define FL_NORMAL 50
PBYTE Payload = (PBYTE)PropData;
PKSCAMERA_EXTENDEDPROP_HEADER ExtendedPropHeader = (PKSCAMERA_EXTENDEDPROP_HEADER)Payload;
PKSCAMERA_EXTENDEDPROP_FIELDOFVIEW ExtendedDataFov = (PKSCAMERA_EXTENDEDPROP_FIELDOFVIEW)(Payload + sizeof(KSCAMERA_EXTENDEDPROP_HEADER));
ExtendedPropHeader->Version = 1;
ExtendedPropHeader->PinId = KSCAMERA_EXTENDEDPROP_FILTERSCOPE;
ExtendedPropHeader->Size = sizeof(KSCAMERA_EXTENDEDPROP_HEADER) + sizeof(KSCAMERA_EXTENDEDPROP_FIELDOFVIEW);
ExtendedPropHeader->Result = 0;
ExtendedPropHeader->Flags = 0;
ExtendedPropHeader->Capability = 0;
ExtendedDataFov->NormalizedFocalLengthX = FL_WIDE_ANGLE;
ExtendedDataFov->NormalizedFocalLengthY = FL_WIDE_ANGLE;
ExtendedDataFov->Flag = 0;
ExtendedDataFov->Reserved = 0;