打印机接口 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 结构的 dmPaperWidth(x 维度)和 dmPaperLength(y 维度)成员的最大允许值。 |
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 结构的 dmPaperWidth(x 维度)和 dmPaperLength(y 维度)成员的最小允许值。 |
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 数组的缓冲区。 每个数组元素应包含窗体纸张大小的 x 和 y 尺寸(以 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 结构的调用方提供的指针。 如果此参数 NULL,DrvDeviceCapabilities 检索指定打印机驱动程序的当前默认初始化值,例如打印队列的用户默认 DEVMODEW 结构。
返回值
函数的返回值取决于为 Capability 参数接收的值。 如果收到的 功能 值表示驱动程序不支持的功能,或者遇到错误,函数应返回GDI_ERROR。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | winddiui.h (包括 Winddiui.h) |