MINIDRV_TRANSFER_CONTEXT 結構 (wiamindr_lh.h)
MINIDRV_TRANSFER_CONTEXT結構可用來儲存記憶體回呼數據傳輸或檔案數據傳輸所需的影像和其他資訊。
語法
typedef struct _MINIDRV_TRANSFER_CONTEXT {
LONG lSize;
LONG lWidthInPixels;
LONG lLines;
LONG lDepth;
LONG lXRes;
LONG lYRes;
LONG lCompression;
GUID guidFormatID;
LONG tymed;
LONG_PTR hFile;
LONG cbOffset;
LONG lBufferSize;
LONG lActiveBuffer;
LONG lNumBuffers;
BYTE *pBaseBuffer;
BYTE *pTransferBuffer;
BOOL bTransferDataCB;
BOOL bClassDrvAllocBuf;
LONG_PTR lClientAddress;
IWiaMiniDrvCallBack *pIWiaMiniDrvCallBack;
LONG lImageSize;
LONG lHeaderSize;
LONG lItemSize;
LONG cbWidthInBytes;
LONG lPage;
LONG lCurIfdOffset;
LONG lPrevIfdOffset;
} MINIDRV_TRANSFER_CONTEXT, *PMINIDRV_TRANSFER_CONTEXT;
成員
lSize
指定這個 MINIDRV_TRANSFER_CONTEXT 結構的位元組大小。
lWidthInPixels
以像素為單位指定目前影像的寬度。 這個成員的值衍生自一般項目屬性 WIA_IPA_PIXELS_PER_LINE 。
lLines
指定 (目前影像中像素的水準列數) 總數。 這個成員的值衍生自一般項目屬性 WIA_IPA_NUMBER_OF_LINES 。
lDepth
以像素為單位指定目前影像的色彩深度值。 這個成員的值衍生自一般項目屬性 WIA_IPA_DEPTH 。
lXRes
以像素為單位指定影像目前的水平解析度。 這個成員的值衍生自 WIA_IPS_XRES 掃描器項目屬性。
lYRes
以像素為單位指定影像的目前垂直解析度。 這個成員的值衍生自 WIA_IPS_YRES 掃描器項目屬性。
lCompression
指定裝置所使用的壓縮類型。 這個成員的值衍生自一般項目屬性 WIA_IPA_COMPRESSION 。
guidFormatID
指定 GUID,指出裝置的數據格式。 這個成員的值衍生自一般項目屬性 WIA_IPA_FORMAT 。
tymed
指定數據傳輸的類型。 指定的數據傳輸可以是記憶體回呼傳輸 (TYMED_CALLBACK 或TYMED_MULTIPAGE_CALLBACK) 或文件传输 (TYMED_FILE 或TYMED_MULTIPAGE_FILE) 。 這個成員的值衍生自一般項目屬性 WIA_IPA_TYMED 。
此成員會傳達 bTransferDataCB 成員中與該成員相關的資訊。 See Remarks for more information.
hFile
指定檔案傳輸期間所使用開啟檔案的句柄。 迷你驅動程式不應該使用此成員。 See Remarks for more information.
cbOffset
指定此傳輸期間所使用下一個緩衝區位置的目前位移,以位元組為單位。
lBufferSize
指定傳輸緩衝區的總大小。
lActiveBuffer
指定用於目前傳輸的緩衝區。 這個成員的值必須介於1到 lNumBuffers 的範圍內。
lNumBuffers
指定可用於數據傳輸的緩衝區數目。 此值目前可以是 1 或 2。
pBaseBuffer
指向基底傳輸緩衝區的起點。
pTransferBuffer
指向目前傳輸緩衝區的起點。 針對使用雙緩衝的回呼傳輸,這個成員會在兩個緩衝區之間替代,指向第一個緩衝區的開頭,然後指向第二個緩衝區的開頭,依此類推斷。
bTransferDataCB
指定數據傳輸是記憶體回呼傳輸還是檔案傳輸。 如果傳輸是記憶體回呼傳輸,則此成員會設定為 TRUE ;如果傳輸是檔傳輸,則為 FALSE 。 對於檔案傳輸,WIA 服務通常會提供回呼例程,讓應用程式從迷你驅動程式接收有關檔傳輸狀態的更新。 (WIA 服務會在應用程式提供自己的回呼例程時提供回呼例程。如需詳細數據,請參閱 IWiaMiniDrvCallback COM 介面 。) 針對文件傳輸,迷你驅動程式應該檢查 pIWiaMiniDrvCallBack 成員中儲存的值。 如果該成員為 NULL,WIA 服務不會提供回呼例程,因此驅動程式不得嘗試呼叫該成員。 對於記憶體回呼傳輸,WIA 服務一律會提供回呼。
此成員會傳達與 tymed 成員中相關的資訊。 See Remarks for more information.
bClassDrvAllocBuf
指定 WIA 服務是否已配置傳輸緩衝區。 如果 WIA 服務配置了緩衝區,則此值為 TRUE ,如果不是,則為 FALSE 。 在此情況下,迷你驅動程式必須負責配置傳輸緩衝區。
lClientAddress
在用戶端的位址空間中,指定傳輸的位址。 迷你驅動程式不得變更此值。
pIWiaMiniDrvCallBack
指向用於數據或狀態回呼傳輸的 IWiaMiniDrvCallBack 介面 。
lImageSize
指定單一頁面中未壓縮位的大小,以位元組為單位。
lHeaderSize
指定單一頁面中影像標頭數據的大小,以位元組為單位。
lItemSize
指定位和標頭的大小,以位元組為單位。 如果專案大小在擷取之前未知,這個值可以是零。
cbWidthInBytes
指定圖像線的大小,以位元組為單位。
lPage
指定掃描多頁 TIFF 影像時,目前頁面的頁碼。 頁碼開頭為零。
lCurIfdOffset
指定多頁 TIFF 映射目前頁面中的 IFD) 位移 (影像檔案目錄。
lPrevIfdOffset
指定多頁 TIFF 映射上一頁中 IFD) 位移的映像檔目錄 (。
備註
WIA 服務會先設定此結構的大部分成員,再呼叫 minidriver 的 IWiaMiniDrv::d rvAcquireItemData 方法。 如果 minidriver 呼叫 wiasGetImageInformation,則該函式會填入傳遞給它的其餘MINIDRV_TRANSFER_CONTEXT成員。
因為 WIA 服務目前只會使用TYMED_FILE和TYMED_CALLBACK常數, 所以 tymed 和 bTransferDataCB 成員基本上會儲存相同的資訊。 對於文件傳輸,當 bTransferDataCB 設定為 FALSE 時, tymed 會設定為 TYMED_FILE 或 TYMED_MULTIPAGE_FILE。 針對記憶體回呼傳輸,當 bTransferDataCB 設定為 TRUE 時, tymed 會設定為 TYMED_CALLBACK 或 TYMED_MULTIPAGE_CALLBACK。
hFile 成員會保留供 WIA 服務單獨使用。 迷你驅動程式應該改為將數據寫入緩衝區,然後呼叫 wiasWritePageBufToFile 來完成檔傳輸,而不是使用此成員進行文件傳輸。
minidriver 會從特定通用或掃描器專案屬性取得值,以設定下表所示的成員:
成員 | 設定者 |
---|---|
lWidthInPixels | WIA_IPA_PIXELS_PER_LINE |
lLines | WIA_IPA_NUMBER_OF_LINES |
lDepth | WIA_IPA_DEPTH |
lXRes | WIA_IPS_XRES |
lYRes | WIA_IPS_YRES |
lCompression | WIA_IPA_COMPRESSION |
guidFormatID | WIA_IPA_FORMAT |
tymed | WIA_IPA_TYMED |
通常,迷你驅動程式會直接從專案屬性的值設定上述結構成員。 應用程式或迷你驅動程式會稍早設定項目屬性。 WIA 服務會使用 屬性值填入其服務內容。 驅動程式可以使用儲存在此內容中的值來快速參考。
WIA 服務會設定下列結構成員:
hFile
bTransferDataCB
bClassDrvAllocBuf
minidriver 或 wiasGetImageInformation 服務連結庫函式會設定下列結構成員:
lImageSize
lHeaderSize
lItemSize
cbWidthInBytes
此結構的下列成員用於數據傳輸回呼。 WIA 服務或迷你驅動程式會設定這些成員。 在數種情況下, 儲存在 bClassDrvAllocBuf 中的值會決定 WIA 服務還是迷你驅動程式設定成員。
成員 | 設定者 |
---|---|
cbOffset | Minidriver |
lBufferSize | WIA 服務或迷你驅動程式。 如果 bClassDrvAllocBuf 為 TRUE,WIA 服務會設定此成員;否則,迷你驅動程式會加以設定。 |
lActiveBuffer | WIA 服務。 迷你驅動程式不得修改此成員。 |
lNumBuffers | WIA 服務。 迷你驅動程式不得修改此成員。 |
pBaseBuffer | WIA 服務或迷你驅動程式。 如果 bClassDrvAllocBuf 為 TRUE,WIA 服務會設定此成員;否則,迷你驅動程式會加以設定。 |
pTransferBuffer | WIA 服務或迷你驅動程式。 如果 bClassDrvAllocBuf 為 TRUE,WIA 服務會設定此成員;否則,迷你驅動程式會加以設定。 |
lClientAddress | WIA 服務。 迷你驅動程式不得修改此成員。 |
pIWiaMiniDrvCallBack | WIA 服務 |
規格需求
需求 | 值 |
---|---|
標頭 | wiamindr_lh.h (包含 Wiamindr.h) |
另請參閱
IWiaMiniDrv::d rvAcquireItemData