Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.
-
Upload
rosanna-hopkins -
Category
Documents
-
view
216 -
download
0
Transcript of Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.
![Page 1: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/1.jpg)
Developing WIA DriversDeveloping WIA Drivers
Byron ChanguionByron ChanguionDeveloperDeveloperWindows Imaging GroupWindows Imaging GroupMicrosoft CorporationMicrosoft Corporation
![Page 2: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/2.jpg)
![Page 3: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/3.jpg)
PreamblePreamble
What is this presentation about?What is this presentation about? Selected topics regarding development of Selected topics regarding development of
WIA mini-drivers (“full” WIA drivers)WIA mini-drivers (“full” WIA drivers)
This talk is not necessary for you, if This talk is not necessary for you, if your device is:your device is: PTP camera or Mass Storage devicePTP camera or Mass Storage device
Class driver existsClass driver exists
Simple flatbed scannerSimple flatbed scanner Can write “micro-driver” insteadCan write “micro-driver” instead
![Page 4: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/4.jpg)
AgendaAgenda
Overview of WIA ComponentsOverview of WIA Components WIA Item TreesWIA Item Trees Run-time behavior of WIA DriversRun-time behavior of WIA Drivers Troubleshooting and DebuggingTroubleshooting and Debugging Hints and TipsHints and Tips What can What can youyou do next? do next?
![Page 5: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/5.jpg)
WIA Component WIA Component ArchitectureArchitecture
Process Process boundaryboundary
STI STI InterfaceInterface WIA / STI serviceWIA / STI service
TWAIN Data TWAIN Data SourceSource
Microsoft Microsoft ComponentComponent
IHV ComponentIHV Component
ISV ComponentISV Component
KeyKey
USB DriverUSB Driver 1394 Driver1394 Driver SCSI DriverSCSI Driver Serial DriverSerial Driver
USDUSD
WIA ApplicationWIA Application
User ModeUser Mode
Kernel ModeKernel Mode
USDUSD
TWAIN ApplicationTWAIN Application
COM ProxyCOM Proxy
Default UIDefault UIOptional Optional vendor UIvendor UI
![Page 6: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/6.jpg)
WIA Item TreesWIA Item TreesGeneralGeneral
Device (and any data) represented Device (and any data) represented by “Items”by “Items”
Two kinds of itemsTwo kinds of items Driver items and Application itemsDriver items and Application items
Driver creates tree of Driver itemsDriver creates tree of Driver items WIA Service will build copy of tree for WIA Service will build copy of tree for
applications (using Application items)applications (using Application items)
![Page 7: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/7.jpg)
WIA Item TreesWIA Item TreesGeneralGeneral
RootRootIWiaItemIWiaItem
Second ChildSecond ChildIWiaItemIWiaItem
First ChildFirst ChildIWiaItemIWiaItem
Application 2Application 2
RootRootIWiaItemIWiaItem
Second ChildSecond ChildIWiaItemIWiaItem
First ChildFirst ChildIWiaItemIWiaItem
Application 1Application 1
RootRootIWiaDrvItemIWiaDrvItem
Second ChildSecond ChildIWiaDrvItemIWiaDrvItem
First ChildFirst ChildIWiaDrvItemIWiaDrvItem
WIA DriverWIA Driver
![Page 8: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/8.jpg)
WIA Item TreesWIA Item TreesGeneralGeneral
Each Application item has its own Each Application item has its own property streamproperty stream
Service will call driver to set initial Service will call driver to set initial property valuesproperty values
Driver notified when Application Driver notified when Application reads/writes propertiesreads/writes properties
![Page 9: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/9.jpg)
WIA Item TreesWIA Item TreesItem TypesItem Types
Informs applications how to treat an Informs applications how to treat an itemitem For example, For example, WiaItemTypeAudioWiaItemTypeAudio
Item types are not exclusiveItem types are not exclusive For example, For example,
((WiaItemTypeFile | WiaItemTypeImageWiaItemTypeFile | WiaItemTypeImage))
Driver specifies item type when it Driver specifies item type when it creates the itemcreates the item
![Page 10: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/10.jpg)
WIA Item TreesWIA Item TreesAnnotationsAnnotations
Some data may be associated with Some data may be associated with other dataother data Example: Audio recording for a pictureExample: Audio recording for a picture
WIA represents annotations with WIA represents annotations with child-itemschild-items
Items with annotations have special Items with annotations have special item type flagsitem type flags
![Page 11: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/11.jpg)
WIA Item TreesWIA Item TreesAnnotations: ExampleAnnotations: Example
Audio Annotation for Picture 1(WiaItemTypeFile | WiaItemTypeAudio)
Picture 1(WiaItemTypeFile | WiaItemTypeImage)
Picture 2(WiaItemTypeFile | WiaItemTypeImage)
Audio Annotation for Picture 1(WiaItemTypeFile | WiaItemTypeAudio)
Picture 1(WiaItemTypeFile | WiaItemTypeImage | WiaItemTypeHasAttachments)
Picture 2(WiaItemTypeFile | WiaItemTypeImage)
Data on Data on DeviceDevice
WIA Item treeWIA Item tree
RepresentationRepresentation
![Page 12: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/12.jpg)
WIA Item TreesWIA Item TreesInteractions with DriverInteractions with Driver
Image data exposed through itemsImage data exposed through items Characteristics exposed through Characteristics exposed through
properties, for exampleproperties, for example CamerasCameras
Picture width / height, Time picture Picture width / height, Time picture was taken, and so onwas taken, and so on
ScannersScanners Set resolution, Set data type, and so onSet resolution, Set data type, and so on
![Page 13: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/13.jpg)
WIA Item TreesWIA Item TreesInteractions with DriverInteractions with Driver
Microsoft ComponentMicrosoft Component
IHV ComponentIHV Component
ISV ComponentISV Component
KeyKey
WIAWIA
DriverDriver
ApplicationApplication
Read Property XRead Property X
drvReadItemPropertiesdrvReadItemProperties If needed, return If needed, return new value for Xnew value for X
Current value for XCurrent value for X
WIA updates WIA updates property storageproperty storage
Reading Property ExampleReading Property Example
![Page 14: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/14.jpg)
WIA Item TreesWIA Item TreesInteractions with Driver: ExampleInteractions with Driver: Example
Walk through sample codeWalk through sample code
![Page 15: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/15.jpg)
WIA Item TreesWIA Item TreesInteractions with DriverInteractions with Driver
WIAWIA
DriverDriver
ApplicationApplication
Write Property XWrite Property X
1.1. drvValidateItemPropertiesdrvValidateItemProperties
Return appropriateReturn appropriateerror codeerror code
2.2. Driver updates Driver updates dependant propertiesdependant properties
3.3. Driver calls generic Driver calls generic property validation property validation helperhelper
4.4. Helper returns errorHelper returns error
5.5. Driver returns errorDriver returns error
WIA performs rollback by WIA performs rollback by restoring property streamrestoring property stream
Writing Invalid Property Writing Invalid Property ExampleExample
Microsoft ComponentMicrosoft Component
IHV ComponentIHV Component
ISV ComponentISV Component
KeyKey
![Page 16: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/16.jpg)
Run-Time BehaviorRun-Time BehaviorUpdating the Driver TreeUpdating the Driver Tree
Drivers may add and/or remove WIA Drivers may add and/or remove WIA items, for exampleitems, for example Take pictureTake picture Delete pictureDelete picture
Need to let applications knowNeed to let applications know Use WIA events, for exampleUse WIA events, for example
WIA_EVENT_ITEM_CREATEDWIA_EVENT_ITEM_CREATED WIA_EVENT_ITEM_DELETEDWIA_EVENT_ITEM_DELETED WIA_EVENT_TREE_UPDATEDWIA_EVENT_TREE_UPDATED
![Page 17: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/17.jpg)
Run-Time Behavior Run-Time Behavior Updating the Driver Tree: ExampleUpdating the Driver Tree: Example
Walk through sample codeWalk through sample code
![Page 18: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/18.jpg)
Run-Time Behavior Run-Time Behavior drvInitializeWia / drvUnitializeWiadrvInitializeWia / drvUnitializeWia
Used to bracket application sessionsUsed to bracket application sessions Similar to AddRef / ReleaseSimilar to AddRef / Release
Can use to maintain session Reference Can use to maintain session Reference CountCount
Multiple drvInitializeWia calls can Multiple drvInitializeWia calls can be made before the equivalent be made before the equivalent drvUninitializeWia calls (i.e., can drvUninitializeWia calls (i.e., can more than one active session)more than one active session)
![Page 19: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/19.jpg)
Run-Time Behavior Run-Time Behavior drvInitializeWia / drvUnitializeWia: drvInitializeWia / drvUnitializeWia: ExampleExample
Walk through sample codeWalk through sample code
![Page 20: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/20.jpg)
Run-Time Behavior Run-Time Behavior drvNotifyPnPEventdrvNotifyPnPEvent
Called AsynchronouslyCalled Asynchronously Plug and PlayPlug and Play
WIA_EVENT_DEVICE_CONNECTEDWIA_EVENT_DEVICE_CONNECTED WIA_EVENT_DEVICE_DISCONNECTEDWIA_EVENT_DEVICE_DISCONNECTED
Power ManagementPower Management WIA_EVENT_POWER_SUSPENDWIA_EVENT_POWER_SUSPEND WIA_EVENT_POWER_RESUMEWIA_EVENT_POWER_RESUME
I/O CancellationI/O Cancellation WIA_EVENT_CANCEL_IOWIA_EVENT_CANCEL_IO
![Page 21: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/21.jpg)
Run-Time Behavior Run-Time Behavior drvNotifyPnPEvent: ExampledrvNotifyPnPEvent: Example
Walk through sample codeWalk through sample code
![Page 22: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/22.jpg)
TroubleshootingTroubleshooting
WIA Service Log fileWIA Service Log file %windir%\wiadebug.log%windir%\wiadebug.log Turn on Warnings and Errors:Turn on Warnings and Errors:
[HKLM\System\CurrentControlSet\Control\ [HKLM\System\CurrentControlSet\Control\ StillImage\Debug\wiaservc.dll]StillImage\Debug\wiaservc.dll]
““DebugFlags = 0x3”DebugFlags = 0x3”
Example snippet:Example snippet:
wiasValidateItemProperties, invalid RANGE value for : wiasValidateItemProperties, invalid RANGE value for : (propID) Horizontal Start Position, value = 3000(propID) Horizontal Start Position, value = 3000Valid RANGE is: MIN = 0, MAX = 1274, STEP = 1Valid RANGE is: MIN = 0, MAX = 1274, STEP = 1
![Page 23: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/23.jpg)
DebuggingDebuggingOverviewOverview
Why use a debugger?Why use a debugger? Driver faults (without debugger - service Driver faults (without debugger - service
will catch and simply return “failed”)will catch and simply return “failed”) Service faults (without debugger – service Service faults (without debugger – service
process is terminated)process is terminated)
When do you start the debugger?When do you start the debugger? Automatically on startupAutomatically on startup Attach at run-timeAttach at run-time
![Page 24: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/24.jpg)
DebuggingDebugging
![Page 25: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/25.jpg)
Hints And TipsHints And Tips
USD does not show U.I.!USD does not show U.I.! Multiple instances of driver Multiple instances of driver
when using STIwhen using STIProcess Process boundaryboundary
STI STI InterfaceInterface
WIA / STI serviceWIA / STI service
TWAIN Data TWAIN Data SourceSource
Microsoft Microsoft ComponentComponent
IHV ComponentIHV Component
ISV ComponentISV Component
KeyKey
USB DriverUSB Driver 1394 Driver1394 Driver SCSI DriverSCSI Driver Serial Serial DriverDriver
USDUSD
WIA ApplicationWIA Application
User ModeUser Mode
Kernel ModeKernel Mode
USDUSD
TWAIN TWAIN ApplicationApplication COM ProxyCOM Proxy
Default UIDefault UI Optional Optional vendor UIvendor UI
![Page 26: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/26.jpg)
Hints And TipsHints And Tips
IWiaMiniDrvIWiaMiniDrv portion of driver only portion of driver only initialized and/or used when application initialized and/or used when application talks WIAtalks WIA
drvInitializeWiadrvInitializeWia / / drvUnitializeWiadrvUnitializeWia not not used to indicate driver loading used to indicate driver loading or unloadingor unloading
Use WIA’s pre-defined Use WIA’s pre-defined Event GUIDsEvent GUIDs for for Scan, Fax, and so onScan, Fax, and so on
![Page 27: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/27.jpg)
What Can What Can YouYou Do Next Do Next
Reference the platform SDK/DDKReference the platform SDK/DDK For more technical details about WIA For more technical details about WIA
driver developmentdriver development http://www.microsoft.com/http://www.microsoft.com/hwdevhwdev//wiawia
For information about WHQL testingFor information about WHQL testing http://www.microsoft.com/http://www.microsoft.com/hwtesthwtest
Send e-mail toSend e-mail to [email protected]@microsoft.com
![Page 28: Developing WIA Drivers Byron Changuion Developer Windows Imaging Group Microsoft Corporation.](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e705503460f94b6e662/html5/thumbnails/28.jpg)