DrvDeviceCapabilities 函数 (winddiui.h)

打印机接口 DLL 的 DrvDeviceCapabilities 函数返回有关打印机功能的请求信息。

语法

DWORD DrvDeviceCapabilities(
                 HANDLE   hPrinter,
  [in]           PWSTR    pszDeviceName,
                 WORD     Capability,
  [out]          PVOID    pOutput,
  [in, optional] PDEVMODE pDevmode
);

参数

hPrinter

调用方提供的打印机句柄。

[in] pszDeviceName

调用方提供的指向打印机名称字符串的指针。

Capability

调用方提供的位标志,指示所请求的信息。 这可以是下表中列出的标志之一。 (标志在头文件 Wingdi.h.中定义)

定义
DC_BINADJUST 不用于基于 NT 的作系统。
DC_BINNAMES pOutput 参数指向函数应用字符串缓冲区数组填充的缓冲区,每个缓冲区长度为 24 个字符。 数组中的每个字符串缓冲区应包含一个以 NULL 结尾的宽字符字符串,指定纸张源箱的名称。 函数的返回值应为返回数组中的元素数。 如果 pOutputNULL,则该函数应只返回所需的数组元素数。
DC_BINS pOutput 参数指向函数应填充 WORD 数组的缓冲区。 每个数组元素应包含一个 DMBIN 前缀常量(或自定义值),表示支持的纸张源箱。 函数的返回值应为返回数组中的元素数。 如果 pOutputNULL,则该函数应只返回所需的数组元素数。
DC_COLLATE 不使用 pOutput 参数。 如果打印机支持排序,函数的返回值应为 1;否则,返回值应为零。
DC_COLORDEVICE 不使用 pOutput 参数。 如果打印机支持彩色打印,则函数的返回值应为 1;否则,返回值应为零。
DC_COPIES 不使用 pOutput 参数。 函数的返回值应该是打印机可以支持的最大副本数。
DC_DATATYPE_PRODUCED 不用于基于 NT 的作系统。
DC_DRIVER 不使用 pOutput 参数。 函数的返回值应该是驱动程序内部 [DEVMODEW](/windows/win32/api/wingdi/ns-wingdi-devmodew) 结构的 dmDriverVersion 成员。
DC_DUPLEX 不使用 pOutput 参数。 如果打印机支持双面打印,函数的返回值应为 1;否则,返回值应为零。
DC_EMF_COMPLIANT 不用于基于 NT 的作系统。
DC_ENUMRESOLUTIONS pOutput 参数指向函数应填充 LONG 数组的缓冲区。 对于打印机支持的每个分辨率,该函数应返回两个长字(一个用于分辨率的 x 维度,一个用于分辨率的 y 维度),以每英寸点为单位。 函数的返回值应为支持的分辨率数。 如果 pOutputNULL,则该函数应只返回支持的分辨率数。
DC_EXTRA 不使用 pOutput 参数。 函数的返回值应该是驱动程序内部 [DEVMODEW](/windows/win32/api/wingdi/ns-wingdi/ns-wingdi-devmodew) 结构的 dmDriverExtra 成员。
DC_FIELDS 不使用 pOutput 参数。 函数的返回值应该是驱动程序内部 [DEVMODEW](/windows/win32/api/wingdi/ns-wingdi-devmodew) 结构的 dmFields 成员。 dmFields 成员指示打印机驱动程序支持与 DEVMODEW 结构设备无关部分的成员。
DC_FILEDEPENDENCIES pOutput 参数指向函数应用字符串缓冲区数组填充的缓冲区,每个缓冲区长度为 64 个字符。 数组中的每个字符串缓冲区都应包含一个宽字符、以 NULL 结尾的字符串,该字符串指定必须随驱动程序一起安装的文件的名称。 函数的返回值应为返回数组中的元素数。 如果 pOutputNULL,则该函数应只返回所需的数组元素数。
DC_MANUFACTURER 不用于基于 NT 的作系统。
DC_MAXEXTENT 不使用 pOutput 参数。 该函数应返回 POINTS 结构(Microsoft Windows SDK 文档中所述)。 该结构应包含打印机 DEVMODEW 结构的 dmPaperWidthx 维度)和 dmPaperLengthy 维度)成员的最大允许值。
DC_MEDIAREADY pOutput 参数指向函数应用字符串缓冲区数组填充的缓冲区,每个缓冲区长度为 64 个字符。 数组中的每个字符串缓冲区都应包含一个宽字符、以 NULL 结尾的字符串,该字符串指定可用于使用的纸张窗体的名称。 函数的返回值应为返回数组中的元素数。 如果 pOutputNULL,则该函数应只返回所需的数组元素数。
DC_MEDIATYPENAMES pOutput 参数指向函数应用字符串缓冲区数组填充的缓冲区,每个缓冲区长度为 64 个字符。 数组中的每个字符串缓冲区应包含一个宽字符的 NULL 终止字符串,指定支持的媒体类型的名称。 函数的返回值应为返回数组中的元素数。 如果 pOutputNULL,则该函数应只返回所需的数组元素数。
DC_MEDIATYPES pOutput 参数指向函数应填充 DWORD 数组的缓冲区。 每个数组元素应包含一个 DMMEDIA 前缀常量(请参阅 [DEVMODEW](/windows/win32/api/wingdi/ns-wingdi-devmodew) 结构)或表示支持的媒体类型的自定义值。 函数的返回值应为返回数组中的元素数。 如果 pOutputNULL,则该函数应只返回所需的数组元素数。
DC_MINEXTENT 不使用 pOutput 参数。 该函数应返回 POINTS 结构(在 Windows SDK 文档中介绍)。 该结构应包含打印机 DEVMODEW 结构的 dmPaperWidthx 维度)和 dmPaperLengthy 维度)成员的最小允许值。
DC_MODEL 不用于基于 NT 的作系统。
DC_NUP pOutput 参数指向函数应填充 DWORD 数组的缓冲区。 每个数组元素应包含一个表示 N 向上选项的整数(也就是说,每个整数应表示每个物理页支持的文档页数)。 函数的返回值应为返回数组中的元素数。 如果 pOutputNULL,则该函数应只返回所需的数组元素数。
DC_ORIENTATION 不使用 pOutput 参数。 函数的返回值应该是从纵向生成横向方向所需的旋转度数。 值为零表示不支持横向。
DC_PAPERNAMES pOutput 参数指向函数应用字符串缓冲区数组填充的缓冲区,每个缓冲区长度为 64 个字符。 数组中的每个字符串缓冲区应包含一个以 NULL 结尾的宽字符字符串,用于指定纸张窗体的名称。 函数的返回值应为返回数组中的元素数。 如果 pOutputNULL,则该函数应只返回所需的数组元素数。
DC_PAPERS pOutput 参数指向函数应填充 WORD 数组的缓冲区。 每个数组元素应包含一个 DMPAPER 前缀常量(或自定义值),表示支持的纸张窗体。 函数的返回值应为返回数组中的元素数。 如果 pOutputNULL,则该函数应只返回所需的数组元素数。
DC_PAPERSIZE pOutput 参数指向函数应填充 POINT 数组的缓冲区。 每个数组元素应包含窗体纸张大小的 xy 尺寸(以 0.1 毫米为单位)的纵向方向。 函数的返回值应为返回数组中的元素数。 如果 pOutputNULL,则该函数应只返回所需的数组元素数。
DC_PERSONALITY pOutput 参数指向函数应用字符串缓冲区数组填充的缓冲区,每个缓冲区长度为 32 个字符。 数组中的每个字符串缓冲区应包含一个宽字符的 NULL 终止字符串,指定打印机支持的打印机说明语言(例如 L“HP-GL/2”)。 函数的返回值应为返回数组中的元素数。 如果 pOutputNULL,则该函数应只返回所需的数组元素数。
DC_PRINTERMEM 不使用 pOutput 参数。 函数的返回值应是一个整数,表示可用打印机内存量(以千字节为单位)。
DC_PRINTRATE 不使用 pOutput 参数。 函数的返回值应为表示打印速率的整数,以为DC_PRINTRATEUNIT指定的单位表示。
DC_PRINTRATEPPM 不使用 pOutput 参数。 函数的返回值应是表示打印速率的整数,以每分钟页为单位。
DC_PRINTRATEUNIT 不使用 pOutput 参数。 函数的返回值应标识用于指定为DC_PRINTRATE返回的值的单位。 必须指定以下常量之一:PRINTRATEUNIT_PPM - pages/min。 PRINTRATEUNIT_CPS - chars./sec. PRINTRATEUNIT_LPM - lines/min。 PRINTRATEUNIT_IPM - 英寸/分钟。
DC_SIZE 不使用 pOutput 参数。 函数的返回值应该是驱动程序内部 [DEVMODEW](/windows/win32/api/wingdi/ns-wingdi-devmodew) 结构的 dmSize 成员。
DC_STAPLE 不使用 pOutput 参数。 如果打印机支持装订,则函数的返回值应 TRUE;如果打印机不支持装订,则 FALSE
DC_TRUETYPE 不使用 pOutput 参数。 函数的返回值可以是零、一个或多个以下标志:DCTT_BITMAP:设备可以将 TrueType 字体打印为图形。 DCTT_DOWNLOAD:设备可以接受下载的 TrueType 字体。 DCTT_DOWNLOAD_OUTLINE:(仅限 Windows 95/98/我) 设备可以下载大纲 TrueType 字体。 DCTT_SUBDEV:设备可以将设备字体替换为 TrueType 字体。
DC_VERSION 不使用 pOutput 参数。 函数的返回值应该是驱动程序内部 [DEVMODEW](/windows/win32/api/wingdi/ns-wingdi/ns-wingdi-devmodew) 结构的 dmSpecVersion 成员。

[out] pOutput

调用方提供的指向缓冲区的指针,用于接收函数提供的信息。 缓冲区的使用取决于为 Capability 参数接收的值。

[in, optional] pDevmode

指向描述当前打印作业特征的 DEVMODEW 结构的调用方提供的指针。 如果此参数 NULLDrvDeviceCapabilities 检索指定打印机驱动程序的当前默认初始化值,例如打印队列的用户默认 DEVMODEW 结构。

返回值

函数的返回值取决于为 Capability 参数接收的值。 如果收到的 功能 值表示驱动程序不支持的功能,或者遇到错误,函数应返回GDI_ERROR。

要求

要求 价值
目标平台 桌面
标头 winddiui.h (包括 Winddiui.h)