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 服务始终提供回调。
此成员传达与 成员中相关的信息。 有关详细信息,请参阅 备注。
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 方法之前设置此结构的大多数成员。 如果微型驱动程序调用 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 |
WIA_IPA_TYMED |
通常,微型驱动程序直接从项属性的值设置前面的结构成员。 应用程序或微型驱动程序将提前设置项属性。 WIA 服务使用属性值填充其服务上下文。 驱动程序可以使用此上下文中存储的值进行快速参考。
WIA 服务设置以下结构成员:
hFile
bTransferDataCB
bClassDrvAllocBuf
微型驱动程序或 wiasGetImageInformation 服务库函数设置以下结构成员:
lImageSize
lHeaderSize
lItemSize
cbWidthInBytes
此结构的以下成员用于数据传输回调。 WIA 服务或微型驱动程序设置这些成员。 在某些情况下,存储在 bClassDrvAllocBuf 中的值 确定 WIA 服务还是微型驱动程序设置成员。
成员 | 设置者 |
---|---|
cbOffset | 微型驱动程序 |
lBufferSize | WIA 服务或微型驱动程序。 如果 bClassDrvAllocBufTRUE,WIA 服务将设置此成员;否则,微型驱动程序会设置它。 |
lActiveBuffer | WIA 服务。 微型驱动程序不得修改此成员。 |
lNumBuffers | WIA 服务。 微型驱动程序不得修改此成员。 |
pBaseBuffer | WIA 服务或微型驱动程序。 如果 bClassDrvAllocBufTRUE,WIA 服务将设置此成员;否则,微型驱动程序会设置它。 |
pTransferBuffer | WIA 服务或微型驱动程序。 如果 bClassDrvAllocBufTRUE,WIA 服务将设置此成员;否则,微型驱动程序会设置它。 |
lClientAddress | WIA 服务。 微型驱动程序不得修改此成员。 |
pIWiaMiniDrvCallBack | WIA 服务 |
要求
要求 | 价值 |
---|---|
标头 | wiamindr_lh.h (包括 Wiamindr.h) |
另请参阅
IWiaMiniDrv::d rvAcquireItemData