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 成员中传达与该成员相关的信息。 有关详细信息,请参阅注解。
hFile
指定文件传输期间使用的打开文件的句柄。 微型驱动程序不应使用此成员。 有关详细信息,请参阅注解。
cbOffset
指定在此传输期间使用的下一个缓冲区位置的当前偏移量(以字节为单位)。
lBufferSize
指定传输缓冲区的总大小。
lActiveBuffer
指定用于当前传输的缓冲区。 此成员的值必须在 1 到 lNumBuffers 的范围内。
lNumBuffers
指定可用于数据传输的缓冲区数。 此值当前可以是 1 或 2。
pBaseBuffer
指向基本传输缓冲区的开头。
pTransferBuffer
指向当前传输缓冲区的开头。 对于使用双重缓冲的回调传输,此成员在两个缓冲区之间交替,指向第一个缓冲区的开头,然后指向第二个缓冲区的开头,依此类而行。
bTransferDataCB
指定数据传输是内存回调传输还是文件传输。 如果传输是内存回调传输,则此成员设置为 TRUE ;如果传输是文件传输,则此成员设置为 FALSE 。 对于文件传输,WIA 服务通常提供回调例程,使应用程序能够从微型驱动程序接收有关文件传输状态的更新。 (如果应用程序提供自己的回调例程,WIA 服务将提供回调例程。有关详细信息,请参阅 IWiaMiniDrvCallback COM 接口。) 对于文件传输,微型驱动程序应检查 pIWiaMiniDrvCallBack 成员中存储的值。 如果该成员为 NULL,WIA 服务不提供回调例程,因此驱动程序不得尝试调用它。 对于内存回调传输,WIA 服务始终提供回调。
此成员在 tymed 成员中传达与该成员相关的信息。 有关详细信息,请参阅注解。
bClassDrvAllocBuf
指定 WIA 服务是否已分配传输缓冲区。 如果 WIA 服务分配了缓冲区,则此值为 TRUE ;如果未分配,此值为 FALSE 。 在这种情况下,微型驱动程序负责分配传输缓冲区。
lClientAddress
指定传输的客户端地址空间中的地址。 微型驱动程序不得更改此值。
pIWiaMiniDrvCallBack
指向用于数据或状态回调传输 的 IWiaMiniDrvCallBack 接口 。
lImageSize
指定单个页面中未压缩位的大小(以字节为单位)。
lHeaderSize
指定单个页中图像标头数据的大小(以字节为单位)。
lItemSize
指定位和标头的大小(以字节为单位)。 如果在获取之前项目大小未知,则此值可以为零。
cbWidthInBytes
指定图像行的大小(以字节为单位)。
lPage
指定扫描多页 TIFF 图像时当前页的页码。 页码从零开始。
lCurIfdOffset
指定图像文件目录 (IFD) 多页 TIFF 图像的当前页中的偏移量。
lPrevIfdOffset
指定多页 TIFF 图像上一页中 (IFD) 偏移量的图像文件目录。
注解
WIA 服务在调用微型驱动程序的 IWiaMiniDrv::d rvAcquireItemData 方法之前设置此结构的大多数成员。 如果微型驱动程序调用 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 以完成文件传输,而不是使用此成员进行文件传输。
微型驱动程序从特定的通用或扫描程序项属性获取值,以设置下表中显示的成员:
成员 | 设置者 |
---|---|
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
微型驱动程序或 wiasGetImageInformation 服务库函数设置以下结构成员:
lImageSize
lHeaderSize
lItemSize
cbWidthInBytes
此结构的以下成员用于数据传输回调。 WIA 服务或微型驱动程序设置这些成员。 在几种情况下, 存储在 bClassDrvAllocBuf 中的值将确定 WIA 服务还是微型驱动程序设置成员。
成员 | 设置者 |
---|---|
cbOffset | 微型驱动程序 |
lBufferSize | WIA 服务或微型驱动程序。 如果 bClassDrvAllocBuf 为 TRUE,则 WIA 服务将设置此成员;否则,微型驱动程序会设置它。 |
lActiveBuffer | WIA 服务。 微型驱动程序不得修改此成员。 |
lNumBuffers | WIA 服务。 微型驱动程序不得修改此成员。 |
pBaseBuffer | WIA 服务或微型驱动程序。 如果 bClassDrvAllocBuf 为 TRUE,则 WIA 服务将设置此成员;否则,微型驱动程序会设置它。 |
pTransferBuffer | WIA 服务或微型驱动程序。 如果 bClassDrvAllocBuf 为 TRUE,则 WIA 服务将设置此成员;否则,微型驱动程序会设置它。 |
lClientAddress | WIA 服务。 微型驱动程序不得修改此成员。 |
pIWiaMiniDrvCallBack | WIA 服务 |
要求
要求 | 值 |
---|---|
Header | wiamindr_lh.h (包括 Wiamindr.h) |
另请参阅
IWiaMiniDrv::d rvAcquireItemData