裝置維護
重要
建議您使用 Microsoft 的 IPP 收件匣類別驅動程式以及 PRINT Support Apps () ,自定義印表機裝置開發 Windows 10 和 11 中的列印體驗。
如需詳細資訊,請參閱 列印支援應用程式設計指南。
Windows 8.1 和更新版本的 Windows 中引進了裝置維護功能。
此功能使用雙向通訊 (Bidi) ,讓您從 UWP 裝置應用程式或印表機延伸模組傳送裝置維護命令到列印子系統。 例如,您可以將命令傳送至列印裝置,以清除筆跡 Nozzle。
埠監視器會與廠商提供的 Bidi 擴充功能檔案搭配運作,將這些 Bidi 要求轉譯成裝置和通訊協定特定命令,然後將這些要求傳輸至列印裝置。 裝置維護工作是藉由將 Bidi「設定」查詢傳送至列印裝置來執行,而來自裝置的 Bidi 回應會指出作業成功或失敗。
可協助實作這項功能的新異步介面會採用字串參數形式的 XML 數據,以及回呼物件。
因為介面是異步的,所以呼叫端不需要等候回應。 當 Bidi 作業完成時,會叫用回呼物件。
新的介面
Windows (程式代碼命名為 “Blue”) 引進下列介面,以實作裝置維護功能。
IPrinterBidiSetRequestCallback
IPrinterExtensionAsyncOperation
起始裝置維護會話
若要起始裝置維護會話,您必須先建立命令字串作為 XML 數據。 然後,您必須建立回呼對象的實例,該物件會在異步 Bidi 作業完成之後叫用。
作業完成後,會在 IPrinterBidiSetRequestCallback::Completed 方法上叫用回呼物件,並提供作業的 HRESULT 值。 然後,您可以剖析此 HRESULT 值,並執行任何其他所需的工作。
下列 C# 代碼段概述如何從 UWP 裝置應用程式發出裝置維護工作。
//
// Declare a global constant that will be used
// to determine whether method calls were successful
//
const int S_OK = 0;
class BidiSendAsyncDemo
{
//
// Create a queue object and also
// create the command string
//
void PerformDeviceMaintenance(
IPrinterQueue2 queue,
string bidiRequestInXml
)
{
BidiSetResultCallback callBack = new BidiSetResultCallback();
IPrinterExtensionAsyncOperation asyncOperation =
queue.SendBidiSetRequestAsync(bidiRequestInXml, callBack);
}
}
/// <summary>
/// This class represents the callback object
/// </summary>
public class BidiSetResultCallback :
IPrinterBidiSetRequestCallback
{
void Completed(
string bidiResponse,
int hr
)
{
if (S_OK == hr)
{
// parse and interpret 'bidiResponse'
}
}
}
透過三個進入點之一叫用應用程式之後,UWP 裝置應用程式支援裝置維護。
相關主題
IPrinterBidiSetRequestCallback
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應