wiasWritePageBufToFile 函数 (wiamdef.h)

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

语法

HRESULT wiasWritePageBufToFile(
  [in] PMINIDRV_TRANSFER_CONTEXT pmdtc
);

参数

[in] pmdtc

指向 MINIDRV_TRANSFER_CONTEXT 结构的指针。

返回值

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

言论

该函数将数据从微型驱动程序分配的临时页面缓冲区写入 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)
Wiaservc.lib
DLL Wiaservc.dll

另请参阅

MINIDRV_TRANSFER_CONTEXT

wiasWriteBufToFile

wiasWritePageBufToStream