2009年9月18日 星期五

[WIA]Item Tree





***************************************************************************

1. Item Tree 架構, 如圖1
1.1 有一個Root item 及一個 Flatbed or Feeder item(Flatbed 和 Feeder 共用一個Item)
1.2 每一個item 中有許多WINDOWS 定義好的property (DIP_xxx_xxx, DPA_xxx_xxx, ...)
1.3 0000\xxx 或 0001\xxx 為 WINDOWS 決定的。


2. 可以使用wiatest.exe 看到Item Tree 中的每個Item 及其所有的property, 如圖2
3. Item Tree 由AP, Wia service , mini driver 各擁有一份。wia service 會自行同步這三份。



圖1:



圖2:







建立時機點:


//
//建立Item 的架構
//
IWiaMiniDrv::drvInitializeWia(...)
{
.
.
//建立Root Item
IWiaDrvItem *pIWiaDrvRootItem = NULL;
wiasCreateDrvItem(... , &pIWiaDrvRootItem)
.
.
//建立Flatbed Item
IWiaDrvItem *pIWiaDrvNewItem = NULL;
wiasCreateDrvItem(... , &pIWiaDrvNewItem)

//attach Flatbed Item to Root Item
pIWiaDrvNewItem->AddItemToFolder(pIWiaDrvRootItem);
.
.
.

}


//
//建立每個Item 中的property 及其初始值, 一個Item 會進來一次(Root 一次, Flatbed 一次)
//
IWiaMiniDrv::drvInitItemProperties(...)
{
//判斷進來的是Root 或 Flatbed 寫入相對映的property(使用wiasXXX 的function)
//ex:
//wiasSetItemPropNames();
//wiasWriteMultiple();
//wiasSetItemPropAttribs();
//.
//.
.
.
.
}




p.s.
在Vista/7 下,其Item Tree架構差不多,如下:

1. Item Tree 架構,
1.1 有一個Root item 及一個 Flatbed or Feeder item or 其它的 Item(Flatbed 和 Feeder 各自有其Item)
1.2 每一個item 中有許多WINDOWS 定義好的property (DIP_xxx_xxx, DPA_xxx_xxx, ...), 但有些property 的名稱改變,如

(DPA_xxx_xx -> DPS_xxx_xxx), 而且可能會有所移動(ex: 從 Root -> Flatbed)

2. 可以使用wiainfo2.exe 看到Item Tree 中的每個Item 及其所有的property
3. Item Tree 由AP, Wia service , mini driver 各擁有一份。wia service 會自行同步這三份。

沒有留言:

張貼留言