Partilhar via


Manutenção de dispositivos

Importante

A moderna plataforma de impressão é o meio preferido do Windows para comunicar com as impressoras. Recomendamos que utilize o controlador de classe da caixa de entrada IPP da Microsoft, juntamente com as Aplicações de Suporte de Impressão (PSA), 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 Guia de design do aplicativo de suporte de impressão v1 e v2.

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

Esse recurso usa comunicação bidirecional (Bidi) para permitir que você envie comandos de manutenção de dispositivo de dentro de um aplicativo de dispositivo UWP ou uma extensão de impressora para o subsistema de impressão. Por exemplo, pode 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 traduzir essas solicitações Bidi em comandos específicos do dispositivo e do protocolo e, em seguida, transmiti-los 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 recebe dados XML na forma de um parâmetro string 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 callback é invocado.

As novas interfaces

As seguintes interfaces foram introduzidas no Windows (codinome "Blue") para implementar o recurso de manutenção do dispositivo.

IPrinterBidiSetRequestCallback

IPrinterExtensionAsyncOperation

IPrinterQueue2

Iniciar uma sessão de manutenção de dispositivos

Para iniciar uma sessão de manutenção de dispositivo, você deve primeiro 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á invocado após a conclusão da operação Bidi assíncrona.

Depois de a operação ser concluída, 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 trecho 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 é suportada em aplicativos de dispositivo UWP depois que o aplicativo é invocado por meio de qualquer um dos três pontos de entrada.

IPrinterBidiSetRequestCallback

IPrinterExtensionAsyncOperation

IPrinterQueue2