Mantenimiento del dispositivo
Importante
La plataforma de impresión moderna es el medio preferido de Windows para comunicarse con impresoras. Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con aplicaciones de soporte técnico de impresión (PSA), para personalizar la experiencia de impresión en Windows 10 y 11 para el desarrollo de dispositivos de impresora.
Para obtener más información, consulte Plataforma de impresión moderna y la Guía de diseño de aplicaciones para compatibilidad con impresión.
Se ha introducido una característica de mantenimiento de dispositivos en Windows 8.1 y versiones posteriores de Windows.
Esta característica usa la comunicación bidireccional (bidi) para permitirle enviar comandos de mantenimiento de dispositivos desde dentro de una aplicación de dispositivo para UWP o una extensión de impresora al subsistema de impresión. Por ejemplo, podría enviar comandos al dispositivo de impresión para limpiar los inyectores de tinta.
El monitor de puerto funciona junto con los archivos de extensión bidi proporcionados por el proveedor para traducir estas solicitudes bidi en comandos específicos del dispositivo y del protocolo y, a continuación, transmitirlas al dispositivo de impresión. Una tarea de mantenimiento de dispositivos se realiza mediante el envío de consultas de bidi "Set" al dispositivo de impresión y la respuesta bidi del dispositivo indica si la operación se realizó correctamente o no.
La nueva interfaz asincrónica que ayuda a implementar esta característica toma datos XML en forma de parámetro de cadena y un objeto de devolución de llamada.
Dado que la interfaz es asincrónica, el llamador no tiene que esperar una respuesta. Cuando se completa la operación bidi, se invoca el objeto de devolución de llamada.
Las nuevas interfaces
Las siguientes interfaces se han introducido en Windows (nombre en clave "Blue") para implementar la característica de mantenimiento del dispositivo.
IPrinterBidiSetRequestCallback
IPrinterExtensionAsyncOperation
Inicio de una sesión de mantenimiento de dispositivos
Para iniciar una sesión de mantenimiento de dispositivos, primero debe crear la cadena de comandos como datos XML. A continuación, debe crear una instancia del objeto de devolución de llamada que se invocará una vez completada la operación bidi asincrónica.
Una vez completada la operación, se invoca el objeto de devolución de llamada en el método IPrinterBidiSetRequestCallback::Completed y que proporciona el valor HRESULT de la operación. A continuación, puede analizar este valor HRESULT y realizar cualquier otra tarea necesaria.
En el siguiente fragmento de código de C# se describe cómo emitir una tarea de mantenimiento de dispositivos desde una aplicación de dispositivo para 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'
}
}
}
El mantenimiento de dispositivos se admite en aplicaciones de dispositivos para UWP después de invocar la aplicación a través de cualquiera de los tres puntos de entrada.
Temas relacionados
IPrinterBidiSetRequestCallback