IPrintTicketProvider::BindPrinter 方法 (prdrvcom.h)
IPrintTicketProvider::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
系統會將二進位編碼 (BLOB - 二進位大型物件) DEVMODEW 結構的私用部分放入列印票證,以將 DEVMODEW 轉換成列印票證。
PTSHIM_NOSNAPSHOT
系統不會將二進位編碼 (DEVMODEW 結構私用部分的 BLOB) 放入列印票證,以將 DEVMODEW 轉換成列印票證。 如果列印票證中完全代表所有公用和私人 DEVMODEW 成員,請使用此值。
[out] pDevModeFlags
DWORD 型別變數的指標,可接收一組位旗標,指出 DEVMODEW 中的列印票證填充碼不應該處理哪些公用 DEVMODEW 成員,或列印票證到 DEVMODEW 轉換。 此參數中存在的位旗標表示列印機不支援相關聯的 DEVMODEW 成員,或提供者處理 DEVMODEW 特性。 例如,如果在 *pDevModeFlags 中設定DM_MEDIATYPE,印表機不支援多個媒體類型,或提供者負責支援多個媒體類型。 (預設會在 wingdi.h 中定義所有DM_XXX位旗標,並在 Microsoft Windows SDK.) 中描述,列印票證填充碼會處理預設 DEVMODEW 結構 dmFlags 成員中表示的所有成員。
[out] cNamespaces
變數的指標,可接收外掛程式中使用的私用命名空間 URI 數目。 這個數位代表 ppNamespaces 所指向數位中的字串計數。
[out] ppNamespaces
接收 BSTR 陣列第一個項目位址之變數的指標。 外掛程式會以命名空間 URI 填入每個數位位置。 如需此參數的詳細資訊,請參閱下列一節。
傳回值
IPrintTicketProvider::BindPrinter 應該傳回下列其中一個值:
傳回碼 | 描述 |
---|---|
S_OK | 作業成功。 |
E_VERSION_NOT_SUPPORTED | 外掛程式不支援 版本 參數中指定的列印架構版本。 |
備註
系結至裝置可讓提供者快取特定物件,並處理未來在該裝置上列印票證或裝置功能服務所需的物件。 例如,可以快取 hPrinter 參數中的印表機句柄。 IPrintTicketProvider::BindPrinter 方法保證只會呼叫一次。
驅動程式負責配置 ppNamespaces 參數所指向之數位列的記憶體,以及命名空間 URI 字串。 數位應該使用 CoTaskMemAlloc 函式來配置;命名空間字串應該使用 SysAllocString 函式來配置。 這兩個函式都會在 Windows SDK 檔中說明。 ppNamespaces 參數所指向的數位不需要包含列印架構關鍵詞或列印架構架構的命名空間。
IPrintTicketProvider 物件不一定能夠系結一次以上。 列印票證管理員一律使用不同的 IPrintTicketProvider 物件實例來系結至不同的裝置。 當 IPrintTicketProvider 對象的參考計數為零時,應該釋放成功呼叫 IPrintTicketProvider::BindPrinter 的所有資源。 請注意,提供者不應該關閉傳遞至 BindPrinter 呼叫的句柄。 如果支援多個版本,列印票證管理員可能會為相同裝置建立多個提供者在不同的版本中。
規格需求
需求 | 值 |
---|---|
標頭 | prdrvcom.h (包括 Prdrvcom.h) |
另請參閱
IPrintTicketProvider::ConvertDevModeToPrintTicket