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