다음을 통해 공유


디바이스 유지 관리

Important

최신 인쇄 플랫폼은 Windows에서 프린터와 통신하는 데 선호되는 수단입니다. 프린터 장치 개발을 위해 Windows 10 및 11의 인쇄 환경을 사용자 지정하려면 MICROSOFT의 IPP 받은 편지함 클래스 드라이버와 PSA(인쇄 지원 앱)를 사용하는 것이 좋습니다.

자세한 내용은 최신 인쇄 플랫폼 및 인쇄 지원 앱 디자인 가이드를 참조하세요.

디바이스 유지 관리 기능은 Windows 8.1 이상 버전의 Windows에서 도입되었습니다.

이 기능은 양방향 통신(Bidi)을 사용하여 UWP 디바이스 앱 또는 프린터 확장 내에서 인쇄 하위 시스템에 디바이스 유지 관리 명령을 보낼 수 있도록 합니다. 예를 들어 인쇄 장치에 명령을 보내 잉크 노즐을 정리할 수 있습니다.

포트 모니터는 공급업체에서 제공하는 Bidi 확장 파일과 함께 작동하여 이러한 Bidi 요청을 디바이스 및 프로토콜 관련 명령으로 변환한 다음 인쇄 디바이스로 전송합니다. 디바이스 유지 관리 작업은 Bidi "Set" 쿼리를 인쇄 디바이스로 전송하여 수행되며 디바이스의 Bidi 응답은 작업이 성공했는지 또는 실패했는지를 나타냅니다.

이 기능을 구현하는 데 도움이 되는 새로운 비동기 인터페이스는 문자열 매개 변수 및 콜백 개체의 형태로 XML 데이터를 사용합니다.

인터페이스는 비동기이므로 호출자는 응답을 기다릴 필요가 없습니다. Bidi 작업이 완료되면 콜백 개체가 호출됩니다.

새 인터페이스

디바이스 유지 관리 기능을 구현하기 위해 Windows(코드명 "Blue")에 도입된 인터페이스는 다음과 같습니다.

IPrinterBidiSetRequestCallback

IPrinterExtensionAsyncOperation

IPrinterQueue2

디바이스 유지 관리 세션 시작

디바이스 유지 관리 세션을 시작하려면 먼저 명령 문자열을 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

IPrinterExtensionAsyncOperation

IPrinterQueue2