확장 카메라 컨트롤 페이로드
KSPROPERTYSETID_ExtendedCameraControl 속성 집합 내의 컨트롤 속성은 속성 데이터를 가져오고 설정하는 데 일반적인 페이로드 형식을 사용합니다.
확장 카메라 속성 헤더
모든 페이로드는 KSCAMERA_EXTENDEDPROP_HEADER 구조로 시작합니다. 이 구조체에는 연결된 컨트롤 플래그 및 기능이 있는 PIN 대상이 포함됩니다. 특정 컨트롤에 따라 Capabilities 멤버에는 컨트롤에서 제공하는 기능 집합이 포함됩니다. Flags 멤버에는 현재 설정되거나 컨트롤에 대해 설정될 실제 기능이 포함됩니다.
PinId 멤버는 카메라 PIN 또는 필터 PIN인 대상을 지정합니다. 속성이 필터 수준 컨트롤인 경우 PinId 는 KSCAMERA_EXTENDEDPROP_FILTERSCOPE 설정됩니다.
속성 컨트롤은 동기 또는 비동기입니다. 컨트롤이 동기식이면 KSCAMERA_EXTENDEDPROP_CAPS_ASYNCCONTROL 플래그가 기능에서 설정 됩니다. 또한 컨트롤을 취소할 수 있는 경우 Capabilities 멤버에는 KSCAMERA_EXTENDEDPROP_CAPS_CANCELLABLE 플래그가 포함됩니다.
페이로드 크기는 Size 멤버에 설정됩니다. Size 값은 페이로드의 전체 크기입니다. 속성이 헤더만 사용하는 경우 Size = sizeof(KSCAMERA_EXTENDEDPROP_HEADER)입니다. 그렇지 않으면 sizeof = (KSCAMERA_EXTENDEDPROP_HEADER) + sizeof(컨트롤 특정 데이터)입니다.
특정 데이터 제어
일부 속성 컨트롤은 추가 구조를 사용하여 추가 데이터를 저장합니다. 단일 데이터 값이 사용되는 경우 속성 데이터에는 KSCAMERA_EXTENDEDPROP_HEADER 후 KSCAMERA_EXTENDEDPROP_VALUE 구조가 포함됩니다. KSCAMERA_EXTENDEDPROP_VALUE 구조를 사용하면 속성이 단일 값을 여러 데이터 형식 중 하나로 표현할 수 있습니다.
추가 데이터를 얻거나 설정하려면 속성에 KSCAMERA_EXTENDEDPROP_HEADER 따라 고유한 특수 데이터 구조가 있습니다. 다음 예제에서는 KSPROPERTY_CAMERACONTROL_EXTENDED_FIELDOFVIEW 속성의 KSPROPERTY_TYPE_GET 요청에 대 한 속성별 데이터를 설정 하는 드라이버 코드 조각을 보여줍니다.
#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;