DeviceCapabilitiesA 函数 (wingdi.h)
DeviceCapabilities 函数检索打印机驱动程序的功能。
语法
int DeviceCapabilitiesA(
[in] LPCSTR pDevice,
[in] LPCSTR pPort,
[in] WORD fwCapability,
[out] LPSTR pOutput,
[in] const DEVMODEA *pDevMode
);
参数
[in] pDevice
指向包含打印机名称的以 null 结尾的字符串的指针。 请注意,这是打印机的名称,而不是打印机驱动程序的名称。
[in] pPort
指向以 null 结尾的字符串的指针,该字符串包含设备连接到的端口的名称,例如 LPT1。
[in] fwCapability
要查询的功能。 此参数的取值可为下列值之一:
值 | 含义 |
---|---|
|
检索打印机的纸箱的名称。 pOutput 缓冲区接收字符串缓冲区数组。 每个字符串缓冲区长度为 24 个字符,包含纸箱的名称。 返回值指示数组中的条目数。 除非名称长度为 24 个字符,否则名称字符串以 null 结尾。 如果 pOutput 为 NULL,则返回值是所需的 bin 条目数。 |
|
检索可用纸箱的列表。 pOutput 缓冲区接收 一个 WORD 值数组,这些值指示打印机的可用纸张来源。 返回值指示数组中的条目数。 有关可能数组值的列表,请参阅 DEVMODE 结构的 dmDefaultSource 成员的说明。 如果 pOutput 为 NULL,则返回值指示数组中所需的条目数。 |
|
如果打印机支持排序,则返回值为 1;否则,返回值为零。 不使用 pOutput 参数。 |
|
如果打印机支持彩色打印,则返回值为 1;否则,返回值为零。 不使用 pOutput 参数。 |
|
返回设备可以打印的副本数。 |
|
返回打印机驱动程序的版本号。 |
|
如果打印机支持双面打印,则返回值为 1;否则,返回值为零。 不使用 pOutput 参数。 |
|
检索打印机支持的分辨率列表。 pOutput 缓冲区接收 LONG 值数组。 对于每个支持的分辨率,数组包含一对 LONG 值,用于指定分辨率的 x 和 y 维度(以每英寸点为单位)。 返回值指示支持的分辨率数。 如果 pOutput 为 NULL,则返回值指示支持的分辨率数。 |
|
返回打印机驱动程序的 DEVMODE 结构的特定于设备的部分所需的字节数。 |
|
返回打印机驱动程序的 DEVMODE 结构的 dmFields 成员。 dmFields 成员指示打印机驱动程序支持结构中与设备无关部分的成员。 |
|
检索安装驱动程序时需要加载的任何其他文件的名称。 pOutput 缓冲区接收字符串缓冲区数组。 每个字符串缓冲区长度为 64 个字符,包含文件的名称。 返回值指示数组中的条目数。 除非名称长度为 64 个字符,否则名称字符串以 null 结尾。 如果 pOutput 为 NULL,则返回值为文件数。 |
|
返回打印机驱动程序的 DEVMODE 结构的 dmPaperLength 和 dmPaperWidth 成员可以指定的最大纸张大小。 返回值的 LOWORD 包含最大 dmPaperWidth 值,HIWORD 包含最大 dmPaperLength 值。 |
|
检索当前可供使用的纸质表单的名称。 pOutput 缓冲区接收字符串缓冲区数组。 每个字符串缓冲区长度为 64 个字符,包含纸质窗体的名称。 返回值指示数组中的条目数。 除非名称长度为 64 个字符,否则名称字符串以 null 结尾。 如果 pOutput 为 NULL,则返回值为纸质表单的数量。 |
|
检索支持的媒体类型的名称。 pOutput 缓冲区接收字符串缓冲区数组。 每个字符串缓冲区长度为 64 个字符,包含支持的媒体类型的名称。 返回值指示数组中的条目数。 除非名称长度为 64 个字符,否则字符串以 null 结尾。 如果 pOutput 为 NULL,则返回值是所需的媒体类型名称数。 |
|
检索支持的媒体类型的列表。 pOutput 缓冲区接收指示支持的媒体类型的 DWORD 值数组。 返回值指示数组中的条目数。 有关可能数组值的列表,请参阅 DEVMODE 结构的 dmMediaType 成员的说明。 如果 pOutput 为 NULL,则返回值指示数组中所需的条目数。 |
|
返回打印机驱动程序的 DEVMODE 结构的 dmPaperLength 和 dmPaperWidth 成员可以指定的最小纸张大小。 返回值的 LOWORD 包含最小 dmPaperWidth 值,HIWORD 包含最小 dmPaperLength 值。 |
|
根据纵向逆时针旋转以生成横向方向的度数返回设备的纵向和横向方向之间的关系。 返回值可以是下列值之一:
|
|
检索一个整数数组,这些整数指示打印机能够打印每个打印页的多个文档页。 pOutput 缓冲区接收 DWORD 值的数组。 每个值表示每个打印页支持的文档页数。 返回值指示数组中的条目数。 如果 pOutput 为 NULL,则返回值指示数组中所需的条目数。 |
|
检索受支持纸张名称的列表, (例如 Letter 或 Legal) 。 pOutput 缓冲区接收字符串缓冲区数组。 每个字符串缓冲区长度为 64 个字符,包含纸质窗体的名称。 返回值指示数组中的条目数。 除非名称长度为 64 个字符,否则名称字符串以 null 结尾。 如果 pOutput 为 NULL,则返回值为纸质表单的数量。 |
|
检索支持的纸张大小的列表。 pOutput 缓冲区接收一个 WORD 值数组,这些值指示打印机的可用纸张大小。 返回值指示数组中的条目数。 有关可能数组值的列表,请参阅 DEVMODE 结构的 dmPaperSize 成员的说明。 如果 pOutput 为 NULL,则返回值指示数组中所需的条目数。 |
|
检索每个支持的纸张尺寸(以十分之一毫米为单位)。 pOutput 缓冲区接收 POINT 结构的数组。 每个结构都包含宽度 (x 维) 和长度 (纸张大小的 y 维) ,就像纸张处于 DMORIENT_PORTRAIT 方向一样。 返回值指示数组中的条目数。 |
|
检索打印机支持的打印机说明语言的列表。 pOutput 缓冲区接收字符串缓冲区数组。 每个缓冲区长度为 32 个字符,包含打印机描述语言的名称。 返回值指示数组中的条目数。 除非名称长度为 32 个字符,否则名称字符串以 null 结尾。 如果 pOutput 为 NULL,则返回值指示所需的数组条目数。 |
|
返回值是可用打印机内存量(以 KB 为单位)。 不使用 pOutput 参数。 |
|
返回值指示打印机的打印速率。 为 DC_PRINTRATEUNIT 返回的值指示 DC_PRINTRATE 值的单位。 不使用 pOutput 参数。 |
|
返回值指示打印机的打印速率(以每分钟页为单位)。 不使用 pOutput 参数。 |
|
返回值是以下值之一,用于指示 为 DC_PRINTRATE 标志返回的值的打印速率单位。 不使用 pOutput 参数。
|
|
返回打印机驱动程序的 DEVMODE 结构的 dmSize 成员。 |
|
如果打印机支持装订,则返回值为非零值;否则,返回值为零。 不使用 pOutput 参数。 |
|
检索驱动程序使用 TrueType 字体的能力。 对于DC_TRUETYPE,pOutput 参数应为 NULL。 返回值可以是以下一个或多个:
|
|
返回打印机驱动程序符合的规范版本。 |
[out] pOutput
指向数组的指针。 数组的格式取决于 fwCapability 参数的设置。 请参阅上述每个功能,了解 pOutput 为 NULL 时返回的内容。
[in] pDevMode
指向 DEVMODE 结构的指针。 如果此参数为 NULL,DeviceCapabilities 将检索指定打印机驱动程序的当前默认初始化值。 否则,该函数将检索 pDevMode 指向的结构中包含的值。
返回值
如果函数成功,则返回值取决于 fwCapability 参数的设置。 返回值零通常表示函数成功完成时,存在某种类型的故障,例如不支持的功能。 有关更多详细信息,请参阅 fwCapability 值的说明。
如果函数返回 -1,这可能意味着该功能不受支持或存在常规函数故障。
注解
如果打印机驱动程序支持自定义设备功能,则驱动程序必须为每个自定义功能调用 SetPrinterData 函数。 SetPrinterData 函数将相应的打印机数据添加到打印系统,使 32 位应用程序能够访问 64 位 Windows 安装上的自定义功能。
对于每个自定义功能,必须首先添加描述功能类型的打印机数据。 为此,在调用 SetPrinterData 时,请将 pValueName 字符串设置为 CustomDeviceCapabilityType_Xxx,其中“Xxx”是功能的十六进制表示形式。 例如,你可能有“CustomDeviceCapabilityType_1234”。 设置的注册表数据必须是 REG_DWORD 类型,并且必须将其值设置为下列值之一:
- 如果自定义功能为 DWORD,则为 0
- 1,如果自定义功能是字节缓冲区
- 2,如果自定义功能是项数组
注意
wingdi.h 标头将 DeviceCapabilities 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | wingdi.h (包括 Windows.h) |
Library | WinSpool.lib |
DLL | WinSpool.drv |