IWiaDataTransfer::idtGetBandedData 方法 (wia_xp.h)

IWiaDataTransfer::idtGetBandedData 方法将带数据从硬件设备传输到应用程序。 为了提高效率,应用程序从 Windows 映像采集 (WIA) 硬件设备中连续取回数据。

语法

HRESULT idtGetBandedData(
  [in] PWIA_DATA_TRANSFER_INFO pWiaDataTransInfo,
  [in] IWiaDataCallback        *pIWiaDataCallback
);

参数

[in] pWiaDataTransInfo

类型: PWIA_DATA_TRANSFER_INFO

指向 WIA_DATA_TRANSFER_INFO 结构的指针。

[in] pIWiaDataCallback

类型: IWiaDataCallback*

指向 IWiaDataCallback 接口的 指针。 此方法会定期调用 BandedDataCallback 方法,以便向应用程序提供数据传输状态通知。

返回值

类型: HRESULT

此方法可以返回以下任何一个值:

返回值 含义
E_INVALIDARG 此方法的一个或多个参数包含无效数据。
E_OUTOFMEMORY 此方法无法分配足够的内存来完成其操作。
E_UNEXPECTED 出现未知错误。
S_FALSE 应用程序取消了该操作。
S_OK 已成功获取映像。
STG_E_MEDIUMFULL 应用程序用于获取映像的存储介质已满。
WIA_S_NO_DEVICE_AVAILABLE 没有 WIA 硬件设备附加到用户的计算机。
 

此方法将返回 错误代码中指定的值,如果由于上表中指定的原因以外的任何原因而失败,则返回标准 COM 错误。

注解

IWiaDataTransfer::idtGetBandedData 方法分配一部分内存以传输数据,而无需通过组件对象模型/远程过程调用 (COM/RPC) 封送层进行额外的数据复制。 此内存部分在应用程序和硬件设备的项树之间共享。

(可选)应用程序可以传入指向 IWiaDataTransfer::idtGetBandedData 将用作其共享节的内存块的指针。 应用程序通过在调用 IWiaDataTransfer::idtGetBandedData 之前将指针存储在 WIA_DATA_TRANSFER_INFO 结构的 ulSection 成员中来传递此句柄。

应用程序可以通过使用双重缓冲来提高性能。 为此,应用程序必须将 WIA_DATA_TRANSFER_INFO 结构的 bDoubleBuffer 成员设置为 TRUEIWiaDataTransfer::idtGetBandedData 方法会将数据缓冲区分成两半。 当缓冲区的一半已满时,IWiaDataTransfer::idtGetBandedData 将使用通过 pIWiaDataCallback 参数传入的 IWiaDataCallback 指针向应用程序发送通知。 当应用程序从整个缓冲区中检索数据时,设备驱动程序可以使用数据填充另一半。

数据传输的格式由项的 WIA_IPA_FORMATWIA_IPA_TYMED 属性的值决定。 应用程序通过调用 IWiaPropertyStorage::WriteMultiple 方法设置这些属性。

要求

要求
最低受支持的客户端 Windows 2000 专业版、Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 wia_xp.h (包括 Wia.h)
Library Wiaguid.lib
DLL Wiaservc.dll