共用方式為


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

要查詢的功能。 此參數可以是下列其中一個值。

價值 意義
DC_BINNAMES
擷取印表機紙箱的名稱。pOutput 緩衝區接收字串緩衝區陣列。 每個字串緩衝區長度為 24 個字元,且包含紙箱的名稱。 傳回值表示陣列中的項目數。 除非名稱長度為 24 個字元,否則名稱字串會以 Null 結束。 如果 pOutputNULL,則傳回值是所需的 bin 項目數目。
DC_BINS
擷取可用紙箱的清單。pOutput 緩衝區會接收 WORD 值陣列,指出印表機可用的紙張來源。 傳回值表示陣列中的項目數。 如需可能的陣列值清單,請參閱 DEVMODE 結構之 dmDefaultSource 成員的描述。 如果 pOutputNULL,則傳回值會指出陣列中所需的項目數目。
DC_COLLATE
如果印表機支援定序,則傳回值為1;否則,傳回值為零。 不使用 pOutput 參數
DC_COLORDEVICE
如果印表機支援彩色列印,則傳回值為1;否則,傳回值為零。 不使用 pOutput 參數
DC_COPIES
傳回裝置可列印的複本數目。
DC_DRIVER
傳回印表機驅動程式的版本號碼。
DC_DUPLEX
如果印表機支援雙面列印,則傳回值為1;否則,傳回值為零。 不使用 pOutput 參數
DC_ENUMRESOLUTIONS
擷取印表機所支援解析度的清單。 pOutput 緩衝區會接收long 值 陣列。 針對每個支援的解析度,數位包含一對 LONG 值,以每英吋點為單位指定解析度的 x 和 y 維度。 傳回值表示支援的解析度數目。 如果 pOutputNULL,則傳回值會指出支援的解析度數目。
DC_EXTRA
傳回印表機驅動程式之 DEVMODE 結構中裝置特定部分所需的位元元組數目。
DC_FIELDS
會傳回印表機驅動程式 DEVMODE 結構 dmFields 成員。 dmFields 成員表示列印機驅動程式支援結構裝置無關部分的成員。
DC_FILEDEPENDENCIES
擷取安裝驅動程式時需要載入之任何其他檔案的名稱。 pOutput 緩衝區接收字串緩衝區陣列。 每個字串緩衝區的長度為64個字元,且包含檔案的名稱。 傳回值表示陣列中的項目數。 除非名稱長度為 64 個字元,否則名稱字串會以 Null 結尾。 如果 pOutput NULL,則傳回值為檔案數目。
DC_MAXEXTENT
會傳回印表機驅動程式 DEVMODE 結構的成員 dmPaperLengthdmPaperWidth 的最大紙張大小。 傳回值的 LOWORD 包含 dmPaperWidth 值 上限,而 HIWORD 則包含最大 dmPaperLength 值。
DC_MEDIAREADY
擷取目前可供使用的紙張窗體名稱。 pOutput 緩衝區接收字串緩衝區陣列。 每個字串緩衝區長度為64個字元,且包含紙張窗體的名稱。 傳回值表示陣列中的項目數。 除非名稱長度為 64 個字元,否則名稱字串會以 Null 結尾。 如果 pOutputNULL,則傳回值會是紙張窗體的數目。
DC_MEDIATYPENAMES
擷取支援的媒體類型名稱。 pOutput 緩衝區接收字串緩衝區陣列。 每個字串緩衝區長度為64個字元,且包含支援的媒體類型名稱。 傳回值表示陣列中的項目數。 除非名稱長度為 64 個字元,否則字串會以 Null 結尾。 如果 pOutputNULL,則傳回值是所需的媒體類型名稱數目。
DC_MEDIATYPES
擷取支援的媒體類型清單。 pOutput 緩衝區會接收指出支援的媒體類型的 DWORD 值陣列。 傳回值表示陣列中的項目數。 如需可能的陣列值清單,請參閱 DEVMODE 結構 dmMediaType 成員的描述。 如果 pOutputNULL,則傳回值會指出陣列中所需的項目數目。
DC_MINEXTENT
傳回印表機驅動程式 DEVMODE 結構可以指定之 dmPaperLengthdmPaperWidth 成員的紙張大小下限。 傳回值的 LOWORD 包含最小 dmPaperWidth 值,而 HIWORD 則包含最小 dmPaperLength 值。
DC_ORIENTATION
傳回裝置的直向和橫向方向之間的關聯性,就直向方向旋轉逆時針旋轉的度數,以產生橫向方向。 傳回值可以是下列其中一項:
0
沒有橫向。
90
直向旋轉 90 度以產生景觀。
270
直向旋轉 270 度以產生景觀。
DC_NUP
擷取整數數位,指出列印機能夠列印每個印頁面的多個文件頁。 pOutput 緩衝區會接收 DWORD 值的陣列。 每個值都代表每個列印頁面支援的文件頁數。 傳回值表示陣列中的項目數。 如果 pOutputNULL,則傳回值會指出陣列中所需的項目數目。
DC_PAPERNAMES
擷取支援的紙張名稱清單(例如 Letter 或 Legal)。 pOutput 緩衝區接收字串緩衝區陣列。 每個字串緩衝區長度為64個字元,且包含紙張窗體的名稱。 傳回值表示陣列中的項目數。 除非名稱長度為 64 個字元,否則名稱字串會以 Null 結尾。 如果 pOutputNULL,則傳回值會是紙張窗體的數目。
DC_PAPERS
擷取支援的紙張大小清單。 pOutput 緩衝區會接收指出印表機可用紙張大小的 WORD 值陣列。 傳回值表示陣列中的項目數。 如需可能的陣列值清單,請參閱 DEVMODE 結構 dmPaperSize 成員的描述。 如果 pOutputNULL,則傳回值會指出陣列中所需的項目數目。
DC_PAPERSIZE
擷取每個支援紙張大小的十分之一毫米的維度。 pOutput 緩衝區會接收一個 POINT 結構的陣列。 每個結構都包含紙張大小的寬度(x 維度)和長度(y 維度),就像紙張在 DMORIENT_PORTRAIT 方向一樣。 傳回值表示陣列中的項目數。
DC_PERSONALITY
擷取印表機所支援的印表機描述語言清單。 pOutput 緩衝區接收字串緩衝區陣列。 每個緩衝區長度為 32 個字元,且包含印表機描述語言的名稱。 傳回值表示陣列中的項目數。 除非名稱長度為 32 個字元,否則名稱字串會以 Null 結尾。 如果 pOutputNULL,則傳回值會指出所需的陣列項目數目。
DC_PRINTERMEM
傳回值是以 KB 為單位的可用印表機記憶體數量。 不使用 pOutput 參數
DC_PRINTRATE
傳回值表示印表機的印表速率。 針對 DC_PRINTRATEUNIT 傳回的值表示 DC_PRINTRATE 值的單位。 不使用 pOutput 參數
DC_PRINTRATEPPM
傳回值表示印表機的印表速率,以每分鐘為單位。 不使用 pOutput 參數
DC_PRINTRATEUNIT
傳回值是下列其中一個值,指出 DC_PRINTRATE 旗標所傳回值的列印速率單位。 不使用 pOutput 參數
PRINTRATEUNIT_CPS
每秒的字元數。
PRINTRATEUNIT_IPM
每分鐘英吋。
PRINTRATEUNIT_LPM
每分鐘行數。
PRINTRATEUNIT_PPM
每分鐘分頁數。
DC_SIZE
傳回印表機驅動程式 DEVMODE 結構 dmSize 成員。
DC_STAPLE
如果印表機支援裝訂,傳回值為非零值;否則,傳回值為零。 不使用 pOutput 參數
DC_TRUETYPE
擷取驅動程式使用 TrueType 字型的能力。 針對 DC_TRUETYPEpOutput 參數應 NULL。 傳回值可以是下列其中一或多個:
DCTT_BITMAP
裝置可以將 TrueType 字型列印為圖形。
DCTT_DOWNLOAD
裝置可以下載 TrueType 字型。
DCTT_SUBDEV
裝置可以將裝置字型取代為 TrueType 字型。
DC_VERSION
傳回印表機驅動程式符合的規格版本。

[out] pOutput

陣列的指標。 數位格式取決於 fwCapability 參數的設定。 請參閱上述每個功能,以瞭解如果 pOutput 傳回的內容,NULL

[in] pDevMode

DEVMODE 結構的指標。 如果此參數 NULLDeviceCapabilities 會擷取指定印表機驅動程式目前的預設初始化值。 否則,函式會擷取結構中包含的值,pDevMode 點。

傳回值

如果函式成功,傳回值取決於 fwCapability 參數的設定。 零的傳回值通常表示,雖然函式順利完成,但發生某種類型的失敗,例如不支援的功能。 如需詳細資訊,請參閱 fwCapability 值的描述。

如果函式傳回 -1,這可能表示不支援此功能,或發生一般函式失敗。

言論

注意 這是封鎖或同步函式,可能不會立即傳回。 此函式傳回的速度取決於運行時間因素,例如網路狀態、列印伺服器組態和印表機驅動程序實作—撰寫應用程式時難以預測的因素。 從管理與使用者介面互動的線程呼叫此函式,可能會使應用程式看起來沒有回應。
 
pDevMode 參數所指向的 DEVMODE 結構,可藉由呼叫 DocumentProperties 函式來取得。

如果印表機驅動程式支援自定義裝置功能,驅動程式必須針對每個自定義功能呼叫 SetPrinterData 函式。 SetPrinterData 函式會將適當的印表機數據新增至列印系統,讓 32 位應用程式存取 64 位 Windows 安裝上的自定義功能。

針對每個自定義功能,您必須先新增描述功能類型的印表機數據。 若要這樣做,當您呼叫 SetPrinterData時,請將 pValueName 字串設定為 CustomDeviceCapabilityType_Xxx,其中 “Xxx” 是功能的十六進位表示法。 例如,您可能有「CustomDeviceCapabilityType_1234」。 您設定的登入資料必須是 REG_DWORD 類型,而且您必須將其值設定為下列其中一項:

  • 0,如果自定義功能是 DWORD
  • 1,如果自定義功能是位元組的緩衝區
  • 2,如果自定義功能是項目的陣列
如果自定義功能是專案的陣列,您必須第二次呼叫 SetPinterData,以提供數位中專案大小的相關信息。 若要這樣做,當您呼叫 SetPinterData時,您提供的 pValueName 字串必須是 “CustomDeviceCapabilitySize_Xxx”,其中 Xxx 是功能的十六進位表示法。 例如,您可能有「CustomDeviceCapabilitySize_1234」。 您設定的登錄數據必須是 REG_DWORD 類型,而且您必須將其值設定為陣列中項目位元組的大小。

注意

wingdi.h 標頭會將 DeviceCapabilities 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 窗戶
標頭 wingdi.h (包括 Windows.h)
連結庫 WinSpool.lib
DLL WinSpool.drv

另請參閱

DEVMODE

DOCINFO

DocumentProperties

GetDeviceCaps

GetProcAddress

LoadLibrary

POINT

列印後台處理程式 API 函式

列印

StartDoc