扫描函数 (wiamicro.h)

Scan 函数从设备读取数据,并将数据返回到 WIA Flatbed 驱动程序。

语法

WIAMICRO_API HRESULT Scan(
  [in, out] PSCANINFO pScanInfo,
            LONG      lPhase,
  [out]     PBYTE     pBuffer,
            LONG      lLength,
  [out]     LONG      *plReceived
);

参数

[in, out] pScanInfo

指定表示 microdriver 设置的 SCANINFO 结构。 这由 WIA Flatbed 驱动程序存储,以确保微驱动程序和 WIA Flatbed 驱动程序之间的设置已同步。

lPhase

指定请求的扫描阶段。 此参数可以设置为以下值之一。

价值 意义
SCAN_FIRST 这表示扫描的第一个阶段。 microdriver 执行三项任务:它初始化设备,它使用 SCANINFO 结构中的数据来设置扫描(例如,设置分辨率、开始位置、设备上的宽度和高度),并启动扫描。 必须从此调用返回数据。 必须将数据放入 pBuffer 指向的缓冲区中,pReceived 参数必须设置为缓冲区中放置的数据量。
SCAN_NEXT 在数据传输期间,将重复调用此作。 数据应放入 pBuffer 指向的缓冲区中,pReceived 参数必须设置为缓冲区中放置的数据量。
SCAN_FINISHED 这将在扫描结束时调用以终止扫描过程。 不应传输任何数据。 即使用户取消扫描,也会始终调用SCAN_FINISHED。 微驱动程序应停止传输数据,并且应重置扫描程序,以便它准备好进行下一次扫描。 从此函数返回的数据应采用原始格式,不带任何标头。 数据可以打包或平面、对齐或未对齐,并按 RGB 或 BGR 顺序排列。 设置 RawDataFormatRawPixelOrder,以及 bNeedDataAlignmentSCANINFO 结构的成员,以响应 CMD_INITIALIZE 命令。

[out] pBuffer

指定将由微驱动程序填充扫描数据的缓冲区。 此缓冲区由 WIA 平面驱动程序分配,并保证长度至少 lLength 字节。

lLength

指定要扫描的请求数据量。 微型驱动程序绝不能过度填充 pBuffer指向的缓冲区。

[out] plReceived

指定实际扫描到 pBuffer的数据量。 此值不应超过 lLength的值,但可以更少。

返回值

如果函数成功,它将返回S_OK。 如果函数失败,它将返回标准 COM 错误代码。

要求

要求 价值
目标平台 桌面
标头 wiamicro.h (包括 Wiamicro.h)
NtosKrnl.lib
DLL NtosKrnl.exe

另请参阅

SCANINFO

WIA Microdriver 命令

WIA Microdriver 结构