Aracılığıyla paylaş


Cihaz bakımı

Önemli

Modern yazdırma platformu, Windows'un yazıcılarla iletişim kurmak için tercih ettiği araçlardır. Yazıcı cihazı geliştirme için Windows 10 ve 11'deki yazdırma deneyimini özelleştirmek için Yazdırma Desteği Uygulamaları (PSA) ile birlikte Microsoft'un IPP gelen kutusu sınıf sürücüsünü kullanmanızı öneririz.

Daha fazla bilgi için bkz. Yazdırma Desteği Uygulaması v1 ve v2 tasarım kılavuzu.

Windows 8.1 ve sonraki Windows sürümlerinde bir cihaz bakım özelliği kullanıma sunulmuştur.

Bu özellik, UWP cihaz uygulamasından veya yazıcı uzantısından yazıcı alt sistemine cihaz bakım komutları göndermenizi sağlamak için çift yönlü iletişimi (Bidi) kullanır. Örneğin, mürekkep nozullarını temizlemek için yazdırma cihazınıza komutlar gönderebilirsiniz.

Bağlantı noktası izleyicisi, satıcı tarafından sağlanan Bidi uzantı dosyalarıyla birlikte çalışarak bu Bidi isteklerini cihaza ve protokole özgü komutlara çevirir ve ardından bunları yazdırma cihazına iletir. Cihaz bakım görevi, yazdırma cihazına Bidi "Set" sorguları gönderilerek gerçekleştirilir ve cihazdan alınan Bidi yanıtı işlemin başarılı mı yoksa başarısız mı olduğunu gösterir.

Bu özelliğin uygulanmasına yardımcı olan yeni zaman uyumsuz arabirim, XML verilerini dize parametresi ve geri çağırma nesnesi biçiminde alır.

Arabirim zaman uyumsuz olduğundan, çağıranın yanıt beklemesi gerekmez. Bidi işlemi tamamlandığında geri çağırma nesnesi çağrılır.

Yeni arabirimler

Cihaz bakım özelliğini uygulamak için Windows'ta (kod adı "Mavi") aşağıdaki arabirimler kullanıma sunulmuştur.

IPrinterBidiSetRequestCallback

IPrinterExtensionAsyncOperation

IPrinterQueue2

Cihaz bakımı oturumu başlatma

Cihaz bakım oturumu başlatmak için önce komut dizenizi XML verileri olarak oluşturmanız gerekir. Ardından, zaman uyumsuz Bidi işlemi tamamlandıktan sonra çağrılacak geri çağırma nesnesinin bir örneğini oluşturmanız gerekir.

İşlem tamamlandıktan sonra, geri çağırma nesnesi IPrinterBidiSetRequestCallback::Completed yönteminde çağrılır ve işlemin HRESULT değerini sağlar. Daha sonra bu HRESULT değerini ayrıştırabilir ve diğer gerekli görevleri gerçekleştirebilirsiniz.

Aşağıdaki C# kod parçacığında bir UWP cihaz uygulamasından cihaz bakım görevinin nasıl verildiği özetlenmiştir.

//
// 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'
        }
    }
} 

Cihaz bakımı, uygulama üç giriş noktasından herhangi biri aracılığıyla çağrıldıktan sonra UWP cihaz uygulamalarında desteklenir.

IPrinterBidiSetRequestCallback

IPrinterExtensionAsyncOperation

IPrinterQueue2