wiasWritePageBufToFile 函数 (wiamdef.h)

wiasWritePageBufToFile 函数将临时页面缓冲区的内容写入图像文件。

语法

HRESULT wiasWritePageBufToFile(
  [in] PMINIDRV_TRANSFER_CONTEXT pmdtc
);

参数

[in] pmdtc

指向 MINIDRV_TRANSFER_CONTEXT 结构的指针。

返回值

成功后,函数返回S_OK。 如果该函数失败,它将返回标准 COM 错误或Microsoft Windows SDK文档) 中所述 (WIA_ERROR_XXX错误之一。

注解

函数将数据从微型驱动程序分配的临时页缓冲区写入 WIA 服务打开的图像文件。 微型驱动程序通常在获取微型驱动程序为其分配了临时缓冲区的数据页后调用此函数。

此函数类似于 wiasWriteBufToFile,可用于将图像数据的缓冲区写入任何类型的图像文件。 如果 WIA 微型驱动程序打算将图像数据页写入多页 TIFF 文件,包括所有适当的标记、图像文件目录 (IFD) 条目以及其他非图像数据,则应调用此函数,而不是 wiasWriteBufToFile

表达式 pmdtc-hFile> 包含TYMED_FILE (和TYMED_MULTIPAGE_FILE) 传输中的文件的句柄。 这可用于直接访问要写入的文件。

如何使用它的一个示例是:

SetFilePointer((HANDLE)(LONG_PTR)pmdtc->hFile,0,NULL,FILE_BEGIN);
if (!WriteFile((HANDLE)(LONG_PTR)pmdtc->hFile,
    pMyBuffer,
    dwNumBytesToWrite,
   &dwNumBytesWritten,
    NULL)) {
     //
     // Some error happened
     //
     .
     .
     .
    }

但是,如果你正在考虑仅在TYMED_FILE中使用文件句柄,并且TYMED_MULTIPAGE_FILE传输 (,以便使用文件句柄将数据直接写入文件,而不是调用 wiasWritePageBufToFile) ,而是使用 wiasWriteBufToFile。 此函数执行等效项:

bRet = WriteFile((HANDLE)ULongToPtr(pmdtc->hFile),
    pmdtc->pTransferBuffer,
    pmdtc->lItemSize,
    &ulWritten,
    NULL);

这实质上是直接使用文件句柄时要执行的操作。 第一个示例的优点是,如果在 WIA (的未来版本中更改了实现,例如,如果 WIA 服务在内部) 开始使用管道而不是文件,则无需更新驱动程序。

要求

要求
最低受支持的客户端 在 Microsoft Windows Me 和 Windows XP 及更高版本的 Windows 操作系统中可用。
目标平台 桌面
标头 wiamdef.h (包括 Wiamdef.h)
Library Wiaservc.lib
DLL Wiaservc.dll

另请参阅

MINIDRV_TRANSFER_CONTEXT

wiasWriteBufToFile

wiasWritePageBufToStream