Compartilhar via


Manutenção do dispositivo

Importante

A plataforma de impressão moderna é o meio preferencial do Windows para se comunicar com as impressoras. Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft juntamente com PSA (Aplicativos de Suporte à Impressão) para personalizar a experiência de impressão no Windows 10 e 11 para o desenvolvimento de dispositivos de impressora.

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

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

Esse recurso utiliza a comunicação bidirecional (Bidi) para permitir que você envie comandos de manutenção de dispositivo a partir de um aplicativo de dispositivo UWP ou uma extensão de impressora para o subsistema de impressão. Por exemplo, é possível enviar comandos para o dispositivo de impressão para limpar os bicos 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, depois, transmiti-los para o dispositivo de impressão. Uma tarefa de manutenção do dispositivo é realizada ao enviar 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 esperar por uma resposta. Quando a operação Bidi é concluída, o objeto de retorno de chamada é invocado.

As novas interfaces

As seguintes interfaces foram introduzidas no Windows (codinome "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, é necessário primeiro criar sua cadeia de caracteres de comando como dados XML. Depois, é preciso criar uma instância do objeto de retorno de chamada que será invocada após a conclusão da operação Bidi assíncrona.

Após a conclusão da operação, o objeto de retorno de chamada será invocado no método IPrinterBidiSetRequestCallback::Completed e isso fornecerá o valor HRESULT da operação. É possível analisar esse valor HRESULT e executar quaisquer outras tarefas necessárias.

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

A manutenção do dispositivo tem suporte em aplicativos de dispositivo UWP após o aplicativo ser invocado por qualquer um dos três pontos de entrada.

IPrinterBidiSetRequestCallback

IPrinterExtensionAsyncOperation

IPrinterQueue2