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 常量, 因此 tymedbTransferDataCB 成员存储的信息基本上相同。 对于文件传输,当 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 服务或微型驱动程序。 如果 bClassDrvAllocBufTRUE,则 WIA 服务将设置此成员;否则,微型驱动程序会设置它。
lActiveBuffer WIA 服务。 微型驱动程序不得修改此成员。
lNumBuffers WIA 服务。 微型驱动程序不得修改此成员。
pBaseBuffer WIA 服务或微型驱动程序。 如果 bClassDrvAllocBufTRUE,则 WIA 服务将设置此成员;否则,微型驱动程序会设置它。
pTransferBuffer WIA 服务或微型驱动程序。 如果 bClassDrvAllocBufTRUE,则 WIA 服务将设置此成员;否则,微型驱动程序会设置它。
lClientAddress WIA 服务。 微型驱动程序不得修改此成员。
pIWiaMiniDrvCallBack WIA 服务

要求

要求
Header wiamindr_lh.h (包括 Wiamindr.h)

另请参阅

IWiaMiniDrv::d rvAcquireItemData

IWiaMiniDrvCallBack::MiniDrvCallback

wiasGetImageInformation

wiasWritePageBufToFile