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 成员设置为 TRUE。 IWiaDataTransfer::idtGetBandedData 方法会将数据缓冲区分成两半。 当缓冲区的一半已满时,IWiaDataTransfer::idtGetBandedData 将使用通过 pIWiaDataCallback 参数传入的 IWiaDataCallback 指针向应用程序发送通知。 当应用程序从整个缓冲区中检索数据时,设备驱动程序可以使用数据填充另一半。
数据传输的格式由项的 WIA_IPA_FORMAT 和 WIA_IPA_TYMED 属性的值决定。 应用程序通过调用 IWiaPropertyStorage::WriteMultiple 方法设置这些属性。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 专业版、Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | wia_xp.h (包括 Wia.h) |
Library | Wiaguid.lib |
DLL | Wiaservc.dll |