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
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.
Tópicos relacionados
IPrinterBidiSetRequestCallback