Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kontrollegenskaperna i egenskapsuppsättningen KSPROPERTYSETID_ExtendedCameraControl använder ett vanligt nyttolastformat för att hämta och ange egenskapsdata.
Utökad kameraegenskapsrubrik
Alla nyttolaster börjar med strukturen KSCAMERA_EXTENDEDPROP_HEADER. Den här strukturen innehåller PIN-målet med tillhörande kontrollflaggor och funktioner. Beroende på den specifika kontrollen innehåller capabilities-medlemmen en uppsättning funktioner som tillhandahålls av kontrollen. Flags-medlemmen innehåller de faktiska kapaciteter som för närvarande är inställda eller som ska ställas in för kontrollelementet.
PinId-medlemmen anger målet som antingen är kamerans PIN-kod eller filtrets PIN-kod. Om egenskapen är en filternivåkontroll är PinId inställt på KSCAMERA_EXTENDEDPROP_FILTERSCOPE.
En egenskapskontroll är antingen synkron eller asynkron. Om kontrollen är synkron anges flaggan KSCAMERA_EXTENDEDPROP_CAPS_ASYNCCONTROL i Funktioner. Om kontrollen kan avbrytas, innehåller medlemmen Capabilities dessutom flaggan KSCAMERA_EXTENDEDPROP_CAPS_CANCELLABLE.
Nyttolaststorleken anges i medlemmen Storlek. Värdet för Storlek är hela nyttolastens storlek. Om egenskapen endast använder huvudet,storleksstorlek = (KSCAMERA_EXTENDEDPROP_HEADER). Annars Size = sizeof(KSCAMERA_EXTENDEDPROP_HEADER) + sizeof(kontrollspecifik data).
Kontrollera specifika data
Vissa egenskapskontroller använder ytterligare en struktur för att lagra ytterligare data. När enkla datavärden används innehåller egenskapsdata en KSCAMERA_EXTENDEDPROP_VALUE struktur efter KSCAMERA_EXTENDEDPROP_HEADER. Med KSCAMERA_EXTENDEDPROP_VALUE struktur kan egenskapen uttrycka ett enda värde som en av flera datatyper.
För att hämta eller ange ytterligare data har en egenskap en egen speciell datastruktur efter KSCAMERA_EXTENDEDPROP_HEADER. I följande exempel visas ett drivrutinskodfragment som anger egenskapsspecifika data för en KSPROPERTY_TYPE_GET begäran av egenskapen 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;