WIA Camera Support in Windows Vista (Part 2 of 2)
In the previous post, we gave an overview of the WIA-WPD Compatibility Layer and how WIA Applications can register for WIA_EVENT_DEVICE_CONNECTED events.
In this post, we will cover a more advanced topic: customization for PTP and MTP devices. The WIA-WPD Compatibility Layer supports basic extensibility for custom WIA events and WIA properties. These events and properties were provided in the PTP WIA class driver that shipped with Windows XP.
Adding Custom PTP/MTP WIA Event Codes
To specify a list of supported PTP/MTP event codes the 'WiaEventCodes' entry should be provided.
The following example shows 3 custom event codes being reported.
HKR,,"WiaEventCodes",”0x0001,0x0002,0x0003”
For each event code specified in the 'WiaEventCodes' entry, a corresponding 'WiaEventCodeXXX' entry must exist that specifies the name of the event and the GUID to use when reporting the event to WIA applications. The entry should be constructed using the prefix ‘WiaEventCode + the event code specified in WiaEventCodes entry’ . If the WiaEventCodeXXX entry is missing, the event will not be reported to WIA applications.
HKR,,"WiaEventCode0x0001”,”{20179E3D-139C-40D3-A0CA-962B33D67EE3},My Custom Event”
HKR,,"WiaEventCode0x0002”,”{259A62CF-D8FE-44D0-A747-B14F54A02133},My Amazing Event”
HKR,,"WiaEventCode0x0003”,”{639F80C6-94D1-48E2-9D8E-6D0F12237E48},My Super Event”
Adding Custom PTP/WIA Property Codes
To specify a list of supported PTP/MTP property codes the ‘WiaPropertyCodes’ entry should be provided. WIA properties will only appear on the root item. These properties are commonly used to control/program the device.
The following example shows 3 custom property codes being reported.
HKR,,"WiaPropertyCodes",”0x0001,0x0002,0x0003”
For each property code specified in the ‘WiaPropertyCodes’ entry, a corresponding ‘WiaPropertyCodeXXX’ entry must exist that specifies the name of the property and the WIA property code to use when reporting the property to WIA applications. The entry should be constructed using the prefix ‘WiaPropertyCode + the property code specified in WiaPropertyCodes entry’ . If the WiaPropertyCodeXXX entry is missing, the event will not be reported to WIA applications.
HKR,,"WiaPropertyCode0x0001”,”My Custom Device Property”
HKR,,"WiaPropertyCode0x0002”,”My Amazing Device Property”
HKR,,"WiaPropertyCode0x0003”,”My Super Device Property”
Sending PTP Custom Commands through WIA
PTP extension commands can be sent to the vendor's driver using IWiaItemExtras::Escape. In Windows Vista, the WIA-WPD Compatibility Layer repackages PTP extension commands sent using this method into WPD MTP/PTP extension commands, which are dispatched to the WPD MTP class driver. This mechanism exists to support legacy WIA vendor applications that relied on custom PTP commands from Windows XP.
Sending MTP Custom Commands through WPD
WPD supports sending of custom MTP commands to the MTP driver using the IPortableDevice::SendCommand API. For a step-by-step description, visit DimeBy8's excellent post here.
WIA to WPD Content Type and Format Mapping
The following table maps WIA Item Types to the WPD_OBJECT_CONTENT_TYPE.
In addition to video and image content, the WIA-WPD Compatiliby Layer supports thumbnails and audio annotations for objects that have them. Any data objects that do not fall under these categories (e.g. music files) will not appear in WIA applications.
WPD Object |
WPD Content Type |
WIA Item |
WIA Item Type |
Device object |
N/A |
Root item |
(WiaItemTypeFolder | WiaItemTypeDevice | WiaItemTypeRoot) |
Folder object |
WPD_CONTENT_TYPE_FOLDER |
Folder Item |
WiaItemTypeFolder |
Functional Object |
WPD_CONTENT_TYPE_FUNCTIONAL_OBJECT |
Folder Item |
WiaItemTypeFolder |
Image Object |
WPD_CONTENT_TYPE_IMAGE |
Image Item |
(WiaItemTypeImage | WiaItemTypeFile | WiaItemTypeTransfer) |
Video Object |
WPD_CONTENT_TYPE_VIDEO |
Video Item |
(WiaItemTypeVideo | WiaItemTypeFile | WiaItemTypeTransfer) |
Audio Object (used for annotations) |
WPD_CONTENT_TYPE_AUDIO |
Audio Item |
(WiaItemTypeAudio | WiaItemTypeFile | WiaItemTypeTransfer) |
Other objects |
WPD_CONTENT_TYPE_XXXX |
N/A (These are ignored) |
N/A (These are ignored) |
The following table maps the WIA_IPA_Format property to the WPD_OBJECT_FORMAT property:
WIA_IPA_FORMAT |
The formats will be mapped as follows:
|
Configuration of the WIA-WPD Compatibility Layer
The following section lists the customization options in the WIA-WPD Compatibility Layer that can be disabled/enabled by the device's INF [AddReg] section:
Report EXIF Image Format as JPG
Some WIA applications expect the EXIF image format to be reported as WiaImgFmt_JPG and not WiaImgFmt_EXIF. To "opt-in" for this functionality, vendors can add the following to your device's INF:
HKR,,"ReportJPGFormatForEXIF",0x10001,1
WIA Item Tree Behavior for DCF
If the WIA-WPD Compatibility layer encounters a storage that supports DCF, it will ‘shift’ the WIA item tree contents closer to the root item so items are easily found. This will reduce the number of folder levels an application or user will have to navigate to get to the image or video content stored on the device. This functionality can be disabled by adding the following to your device’s .INF [AddReg] section.
HKR,,"DisableDCFSpecialProcessing",0x10001,1
This posting is provided "AS IS" with no warranties, and confers no rights.
Comments
- Anonymous
May 31, 2009
PingBack from http://portablegreenhousesite.info/story.php?id=14578