Share via


Camera Driver Architecture (Windows Embedded CE 6.0)

1/6/2010

Controlling the flow of data from a camera device requires working with three kinds of objects: camera adapters, pins, and streams.

Streaming Architecture for Cameras

Many of the constructs used in the Windows Embedded CE camera driver are derived from the kernel streaming architecture used on Windows XP-based desktop systems. In most cases identifiers (such as data structures and IOCTL codes) have been renamed to use the Windows Embedded CE conventions while retaining the same underlying format and semantics. In other case, the data layouts, programming models, and nomenclatures have been modified to better suit the Windows Embedded CE camera driver model.

Camera control interfaces are implemented using the kernel streaming property model. A property represents a capability, setting, or state belonging to the camera or video stream. A group of related properties is referred to as a property set.

An application can get or set certain properties by calling DeviceIoControl with the dwIoControlCode parameter set to IOCTL_CS_PROPERTY. The input buffer is either a CSPROPERTY structure or another structure that wraps a CSPROPERTY structure and contains additional information relevant to the request.

For each call to DeviceIoControl, the client passes two buffers: the property descriptor type and the property value type. The property descriptor type is the value for the lpInBuffer parameter in the DeviceIoControl call. Every type begins with a CSPROPERTY header followed by operation-specific identification data. The property value is the value for the lpOutBuffer parameter in the DeviceIoControl call. It provides a data buffer to either get or set the property.

To use any camera property you must call DeviceIoControl with IOCTL_CS_PROPERTY code and pass the corresponding structures described above.

See Also

Other Resources

Camera Driver Development Concepts