Compartilhar via


Manutenção do dispositivo

Importante

Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft, juntamente com o PSA (Aplicativos de Suporte para Impressão), para personalizar a experiência de impressão em Windows 10 e 11 para o desenvolvimento de dispositivos de impressora.

Para obter mais informações, consulte o Guia de design do aplicativo de suporte para impressão.

Um recurso de manutenção do dispositivo foi introduzido em Windows 8.1 e versões posteriores do Windows.

Esse recurso usa a comunicação bidirecional (Bidi) para permitir que você envie comandos de manutenção do dispositivo de dentro de um aplicativo de dispositivo UWP ou uma extensão de impressora para o subsistema de impressão. Por exemplo, você pode enviar comandos para seu dispositivo de impressão para limpo os bocais de tinta.

O monitor de porta funciona em conjunto com os arquivos de extensão Bidi fornecidos pelo fornecedor para converter essas solicitações Bidi em comandos específicos do dispositivo e do protocolo e transmiti-las para o dispositivo de impressão. Uma tarefa de manutenção do dispositivo é executada enviando consultas Bidi "Set" para o dispositivo de impressão e a resposta Bidi do dispositivo indica se a operação foi bem-sucedida ou falhou.

A nova interface assíncrona que ajuda a implementar esse recurso usa dados XML na forma de um parâmetro de cadeia de caracteres e um objeto de retorno de chamada.

Como a interface é assíncrona, o chamador não precisa aguardar uma resposta. Quando a operação Bidi é concluída, o objeto de retorno de chamada é invocado.

As novas interfaces

As interfaces a seguir foram introduzidas no Windows (chamado de código "Azul") para implementar o recurso de manutenção do dispositivo.

IPrinterBidiSetRequestCallback

IPrinterExtensionAsyncOperation

IPrinterQueue2

Iniciando uma sessão de manutenção do dispositivo

Para iniciar uma sessão de manutenção do dispositivo, primeiro você deve criar sua cadeia de caracteres de comando como dados XML. Em seguida, você deve criar uma instância do objeto de retorno de chamada que será invocada depois que a operação Bidi assíncrona for concluída.

Após a conclusão da operação, o objeto de retorno de chamada é invocado no método IPrinterBidiSetRequestCallback::Completed e fornece o valor HRESULT da operação. Em seguida, você pode analisar esse valor HRESULT e executar quaisquer outras tarefas necessárias.

O snippet de código C# a seguir descreve como emitir uma tarefa de manutenção de dispositivo de um aplicativo de dispositivo 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'
        }
    }
} 

Há suporte para a manutenção do dispositivo em aplicativos de dispositivo UWP depois que o aplicativo é invocado por meio de qualquer um dos três pontos de entrada.

IPrinterBidiSetRequestCallback

IPrinterExtensionAsyncOperation

IPrinterQueue2