共用方式為


IPrintTicketProvider2::BindPrinter 方法 (prdrvcom.h)

IPrintTicketProvider2::BindPrinter 方法會將印表機或列印佇列系結至特定版本的列印票證架構,這可讓核心驅動程式將一組私人命名空間統一資源標識符 (URI) 與裝置產生關聯。

語法

HRESULT BindPrinter(
  [in]  IN HANDLE     hPrinter,
  [in]  IN INT        version,
  [out] OUT PSHIMOPTS pOptions,
  [out] OUT DWORD     *pDevModeFlags,
  [out] OUT INT       *cNamespaces,
  [out] OUT BSTR      **ppNamespaces
);

參數

[in] hPrinter

多任務緩衝處理程式的列印控點,由核心驅動程式提供。 提供者不應該隨時關閉此句柄,因為提供者的客戶端負責管理此句柄的存留期。 提供者可以快取列印句柄;所有未來的呼叫都會相對於與此句柄相關聯的印表機。

[in] version

列印票證或列印票證管理員要求 OEM 外掛程式提供者支援的主要列印票證或列印票證架構版本號碼。 Windows Vista 僅支援第 1 版。 提供者應該無法嘗試系結至不支持或辨識的版本。

[out] pOptions

接收下列其中一個列舉值的變數指標:

  • PTSHIM_DEFAULT

    系統會將 DEVMODEW 結構私用部分的二進位編碼(BLOB - 二進位大型物件)放在列印票證中,將 DEVMODEW 轉換成列印票證。

  • PTSHIM_NOSNAPSHOT

    系統不會將 DEVMODEW 結構私用部分的二進位編碼 (BLOB) 放在列印票證中,將 DEVMODEW 轉換成列印票證。 如果在列印票證中完整表示所有公用和私人 DEVMODEW 成員,請使用此值。

[out] pDevModeFlags

接收一組位旗標的 DWORD 型別變數指標,指出 DEVMODEW 成員中的列印票證填充碼不應處理哪些公用 DEVMODEW 或列印票證對 DEVMODEW 轉換。 此參數中存在的位旗標表示列印機不支援相關聯的 DEVMODEW 成員,或是提供者處理該 DEVMODEW 特性。 例如,如果在 *pDevModeFlags 中設定DM_MEDIATYPE,印表機不支援多個媒體類型,或提供者負責支援多個媒體類型。 (所有DM_XXX位旗標都是在 wingdi.h 中定義,並在 Microsoft Windows SDK 中描述。根據預設,列印票證填充碼會處理在 dmFlags 中表示的所有成員, 預設 DEVMODEW 結構的成員。

[out] cNamespaces

變數的指標,可接收外掛程式中使用的私用命名空間 URI 數目。 這個數位代表陣列中 ppNamespaces 所指向的字串計數,

[out] ppNamespaces

接收 BSTR 陣列第一個項目位址之變數的指標。 外掛程式會以命名空間 URI 填入每個數位位置。 如需此參數的詳細資訊,請參閱下列一節。

傳回值

IPrintTicketProvider2::BindPrinter 應該傳回下列其中一個值:

傳回碼 描述
S_OK 作業成功。
E_VERSION_NOT_SUPPORTED 外掛程式不支援 版本 參數中指定的列印架構版本。

言論

系結至裝置可讓提供者快取特定物件,並處理該裝置上未來列印票證或裝置功能服務所需的物件。 例如,可以快取 hPrinter 參數中的印表機句柄。 IPrintTicketProvider2::BindPrinter 方法保證只會呼叫一次。

驅動程式負責配置 ppNamespaces 參數所指向之數位列的記憶體,以及命名空間 URI 字串。 數位應該使用 CoTaskMemAlloc 函式來配置;命名空間字串應該使用 SysAllocString 函式來配置。 Windows SDK 檔中會說明這兩個函式。 ppNamespaces 參數所指向的陣列不需要包含 Print Schema Keywords 或 Print Schema Framework 的命名空間。

IPrintTicketProvider2 物件不必多次系結。 列印票證管理員一律會使用不同的 IPrintTicketProvider2 物件實例來系結至不同的裝置。 在成功呼叫 IPrintTicketProvider2::BindPrinter 時,應該釋放成功呼叫 IPrintTicketProvider2 對象的參考 計數時取得的所有資源。 請注意,提供者不應該關閉傳遞至 bindPrinter 呼叫的句柄,BindPrinter。 如果支援多個版本,列印票證管理員可能會為相同裝置,在不同的版本中建立多個提供者。

要求

要求 價值
標頭 prdrvcom.h (包括 Prdrvcom.h)

另請參閱

IPrintTicketProvider2

IPrintTicketProvider2::ConvertDevModeToPrintTicket

IPrintTicketProvider2::ConvertPrintTicketToDevMode

IPrintTicketProvider2::GetSupportedVersions