DeviceCapabilitiesW 函式 (wingdi.h)
DeviceCapabilities 函式會擷取印表機驅動程式的功能。
語法
int DeviceCapabilitiesW(
[in] LPCWSTR pDevice,
[in] LPCWSTR pPort,
[in] WORD fwCapability,
[out] LPWSTR pOutput,
[in] const DEVMODEW *pDevMode
);
參數
[in] pDevice
包含印表機名稱之 Null 終止字串的指標。 請注意,這是印表機的名稱,而不是印表機驅動程序的名稱。
[in] pPort
Null 終止字串的指標,其中包含裝置所連接的埠名稱,例如 LPT1。
[in] fwCapability
要查詢的功能。 此參數可以是下列其中一個值。
價值 | 意義 |
---|---|
|
擷取印表機紙箱的名稱。pOutput 緩衝區接收字串緩衝區陣列。 每個字串緩衝區長度為 24 個字元,且包含紙箱的名稱。 傳回值表示陣列中的項目數。 除非名稱長度為 24 個字元,否則名稱字串會以 Null 結束。 如果 pOutputNULL,則傳回值是所需的 bin 項目數目。 |
|
擷取可用紙箱的清單。pOutput 緩衝區會接收 WORD 值陣列,指出印表機可用的紙張來源。 傳回值表示陣列中的項目數。 如需可能的陣列值清單,請參閱 DEVMODE 結構之 dmDefaultSource 成員的描述。 如果 pOutputNULL,則傳回值會指出陣列中所需的項目數目。 |
|
如果印表機支援定序,則傳回值為1;否則,傳回值為零。 不使用 pOutput 參數 |
|
如果印表機支援彩色列印,則傳回值為1;否則,傳回值為零。 不使用 pOutput 參數 |
|
傳回裝置可列印的複本數目。 |
|
傳回印表機驅動程式的版本號碼。 |
|
如果印表機支援雙面列印,則傳回值為1;否則,傳回值為零。 不使用 pOutput 參數 |
|
擷取印表機所支援解析度的清單。 |
|
傳回印表機驅動程式之 DEVMODE 結構中裝置特定部分所需的位元元組數目。 |
|
會傳回印表機驅動程式 DEVMODE 結構 dmFields 成員。 dmFields 成員表示列印機驅動程式支援結構裝置無關部分的成員。 |
|
擷取安裝驅動程式時需要載入之任何其他檔案的名稱。
pOutput 緩衝區接收字串緩衝區陣列。 每個字串緩衝區的長度為64個字元,且包含檔案的名稱。 傳回值表示陣列中的項目數。 除非名稱長度為 64 個字元,否則名稱字串會以 Null 結尾。 如果 pOutput |
|
會傳回印表機驅動程式 DEVMODE 結構的成員 dmPaperLength 和 dmPaperWidth 的最大紙張大小。 傳回值的 LOWORD 包含 dmPaperWidth 值 |
|
擷取目前可供使用的紙張窗體名稱。 pOutput 緩衝區接收字串緩衝區陣列。 每個字串緩衝區長度為64個字元,且包含紙張窗體的名稱。 傳回值表示陣列中的項目數。 除非名稱長度為 64 個字元,否則名稱字串會以 Null 結尾。 如果 pOutputNULL,則傳回值會是紙張窗體的數目。 |
|
擷取支援的媒體類型名稱。 pOutput 緩衝區接收字串緩衝區陣列。 每個字串緩衝區長度為64個字元,且包含支援的媒體類型名稱。 傳回值表示陣列中的項目數。 除非名稱長度為 64 個字元,否則字串會以 Null 結尾。 如果 pOutputNULL,則傳回值是所需的媒體類型名稱數目。 |
|
擷取支援的媒體類型清單。 pOutput 緩衝區會接收指出支援的媒體類型的 DWORD 值陣列。 傳回值表示陣列中的項目數。 如需可能的陣列值清單,請參閱 DEVMODE 結構 dmMediaType 成員的描述。 如果 pOutputNULL,則傳回值會指出陣列中所需的項目數目。 |
|
傳回印表機驅動程式 DEVMODE 結構可以指定之 dmPaperLength 和 dmPaperWidth 成員的紙張大小下限。 傳回值的 LOWORD 包含最小 dmPaperWidth 值,而 HIWORD 則包含最小 dmPaperLength 值。 |
|
傳回裝置的直向和橫向方向之間的關聯性,就直向方向旋轉逆時針旋轉的度數,以產生橫向方向。 傳回值可以是下列其中一項:
|
|
擷取整數數位,指出列印機能夠列印每個印頁面的多個文件頁。 pOutput 緩衝區會接收 DWORD 值的陣列。 每個值都代表每個列印頁面支援的文件頁數。 傳回值表示陣列中的項目數。 如果 pOutputNULL,則傳回值會指出陣列中所需的項目數目。 |
|
擷取支援的紙張名稱清單(例如 Letter 或 Legal)。 pOutput 緩衝區接收字串緩衝區陣列。 每個字串緩衝區長度為64個字元,且包含紙張窗體的名稱。 傳回值表示陣列中的項目數。 除非名稱長度為 64 個字元,否則名稱字串會以 Null 結尾。 如果 pOutputNULL,則傳回值會是紙張窗體的數目。 |
|
擷取支援的紙張大小清單。
pOutput 緩衝區會接收指出印表機可用紙張大小的 WORD 值陣列。 傳回值表示陣列中的項目數。 如需可能的陣列值清單,請參閱 |
|
擷取每個支援紙張大小的十分之一毫米的維度。 pOutput 緩衝區會接收一個 POINT 結構的陣列。 每個結構都包含紙張大小的寬度(x 維度)和長度(y 維度),就像紙張在 DMORIENT_PORTRAIT 方向一樣。 傳回值表示陣列中的項目數。 |
|
擷取印表機所支援的印表機描述語言清單。 pOutput 緩衝區接收字串緩衝區陣列。 每個緩衝區長度為 32 個字元,且包含印表機描述語言的名稱。 傳回值表示陣列中的項目數。 除非名稱長度為 32 個字元,否則名稱字串會以 Null 結尾。 如果 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 |