DrvConvertDevMode 函数 (winddiui.h)
打印机接口 DLL 的 DrvConvertDevMode 函数将打印机的 DEVMODEW 结构从一个版本转换为另一个版本。
语法
BOOL DrvConvertDevMode(
[in] LPTSTR pPrinterName,
[in] PDEVMODE pdmIn,
[out] PDEVMODE pdmOut,
[in, out] PLONG pcbNeeded,
[in] DWORD fMode
);
参数
[in] pPrinterName
调用方提供的指向打印机名称字符串的指针。 有关此参数的详细信息,请参阅以下“备注”部分。
[in] pdmIn
调用方提供的指向输入 DEVMODEW 结构的指针。 如果 fMode 为CDM_DRIVER_DEFAULT,则此指针为 NULL。
[out] pdmOut
调用方提供的指向缓冲区的指针,用于接收输出 DEVMODEW 结构。 如果 fMode CDM_CONVERT缓冲区在输入时包含有效的 DEVMODEW 结构,指示目标驱动程序版本。
[in, out] pcbNeeded
调用方提供的指针,指向 pdmOut 指向的缓冲区的大小(以字节为单位)。 输出时,打印机接口 DLL 应使用转换后的 DEVMODEW 结构的实际大小覆盖接收的大小值。 如果收到的缓冲区太小,打印机接口 DLL 应使用所需的缓冲区大小覆盖接收的大小值。
[in] fMode
调用方提供的位标志,指示要执行的操作类型。 这可以是以下标志之一:
CDM_CONVERT
函数应将 pdmIn) 指向 (输入 DEVMODEW 结构的内容转换为新的 DEVMODEW 结构,并将结果置于 pdmOut 指向的 DEVMODEW 结构中。 应使用 pdmOut () 指向的接收输出 DEVMODEW 结构的初始内容来确定输出版本。
CDM_CONVERT351
函数应转换 pdmIn) 指向 (输入 DEVMODEW 结构的内容,创建与 Windows NT 3.51 兼容的输出 DEVMODEW 结构,并将结果置于 pdmOut 指向的 DEVMODEW 结构中。
如果驱动程序不支持 Windows NT 3.51 的 DEVMODEW 结构,则函数应将输入 DEVMODEW 转换为当前版本。
CDM_DRIVER_DEFAULT
函数应将其默认 DEVMODEW 结构的当前版本复制到 pdmOut 指向的缓冲区。
返回值
如果操作成功,函数应返回 TRUE;否则,它应调用 SetLastError 来设置错误代码,并返回 FALSE。
注解
在客户端/服务器环境中,客户端可能运行一个版本的操作系统或打印机驱动程序,而服务器 (后台处理程序) 正在运行另一个版本,这意味着打印机的 DEVMODEW 结构定义在客户端和服务器之间可能不一致。 DrvConvertDevMode 函数必须能够执行从打印机的 DEVMODEW 结构的一个版本到另一个版本的转换。
从一个 DEVMODEW 版本转换为另一个版本时,必须包含公共和专用 DEVMODEW 成员。
pPrinterName 指向的打印机名称可用作 openPrinter 函数的输入参数, (Microsoft Windows SDK文档) 中所述,可以在收到CDM_DRIVER_DEFAULT标志时调用它来获取存储的默认值。 请注意,在调用 OpenPrinter 之前,不得以任何方式修改打印机名称字符串。 此外,对 OpenPrinter 的调用必须与用于调用 DrvConvertDevMode 的线程位于同一线程中。
函数应验证 pdmIn 和 pdmOut ((如果适用),) 指向有效的 DEVMODEW 结构。 否则,函数应调用 SetLastError (ERROR_INVALID_PARAMETER) 并返回 FALSE。 如果 由 (ERROR_INSUFFICIENT_BUFFER) 指定的输出 DEVMODEW 大小太小,驱动程序应用所需的缓冲区大小覆盖 由印刷机 提供的大小值,调用 SetLastError (ERROR_INSUFFICIENT_BUFFER) ,并返回 FALSE。
DrvConvertDevMode 函数在后台处理程序的上下文中运行,因此不得显示用户界面。
当使用 pdmOut 参数中的 NULL DEVMODEW 结构指针调用 DrvConvertDevMode 以获取缓冲区大小时,驱动程序应将最后一个错误设置为ERROR_INSUFFICIENT_BUFFER。 如果未将上一个错误设置为此值,则后台处理程序会假定出现一般错误。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | winddiui.h (包括 Winddiui.h) |