Función CreatePrintAsyncNotifyChannel (prnasnot.h)
Crea un canal de comunicación entre un componente de impresión hospedado por el administrador de impresión, como un controlador de impresión o un monitor de puerto, y una aplicación que recibe notificaciones del componente.
Sintaxis
HRESULT CreatePrintAsyncNotifyChannel(
[in] PCWSTR pszName,
[in] PrintAsyncNotificationType *pNotificationType,
[in] PrintAsyncNotifyUserFilter eUserFilter,
[in] PrintAsyncNotifyConversationStyle eConversationStyle,
[in] IPrintAsyncNotifyCallback *pCallback,
[out] IPrintAsyncNotifyChannel **ppIAsynchNotification
);
Parámetros
[in] pszName
Puntero al nombre de un servidor de impresión o una cola de impresión.
[in] pNotificationType
Puntero al GUID del esquema de datos para el tipo de notificaciones que se enviarán en el canal.
[in] eUserFilter
Valor que especifica si las notificaciones se enviarán a:
- Solo las aplicaciones que se ejecutan como el mismo usuario que el remitente del complemento hospedado en Spooler de impresión.
- Un conjunto más amplio de aplicaciones de escucha.
[in] eConversationStyle
Valor que especifica si la comunicación es bidireccional o unidireccional.
[in] pCallback
Puntero a un objeto que la aplicación de escucha usará para devolver el componente hospedado en cola de impresión. Debe ser NULL si la direccionalidad es kUniDirectional.
[out] ppIAsynchNotification
Puntero al nuevo canal.
Valor devuelto
HRESULT | severity | Significado |
---|---|---|
S_OK | CORRECTA | Si se devuelve este valor, significa que la función se completó correctamente. |
CHANNEL_ALREADY_OPENED | ERROR | El canal ya se ha abierto. |
MAX_CHANNEL_COUNT_EXCEEDED | ERROR | El número máximo de aplicaciones de escucha ya se han registrado para el tipo de notificación especificado con la cola o el servidor de impresión especificados. El máximo predeterminado es 10 000. |
Los valores devueltos son códigos de error COM. Dado que esta función puede completar correctamente la operación pero devolver un VALOR HRESULT distinto de S_OK debe usar la macro SUCCEEDED o FAILED para determinar el éxito de la llamada. Para obtener el HRESULT específico devuelto por la función, use la macro HRESULT_CODE.
En el ejemplo de código siguiente se muestra cómo se pueden usar estas macros para evaluar el valor devuelto.
if (SUCCEEDED(hr)){
//Call was successful
}
if (FAILED(hr)) {
// Call failed
}
if (FAILED(hr)) {
// Call failed
switch (HRESULT_CODE(hr)){
case CHANNEL_ALREADY_OPENED:
// Some action
break;
case MAX_CHANNEL_COUNT_EXCEEDED:
// Some action
break;
default:
//Default action
break;
}
} else {
//call succeeded
}
Para obtener más información sobre los códigos de error COM, vea Control de errores.
Consulte PrintAsyncNotifyError para ver otros valores devueltos posibles.
Comentarios
Para cerrar un canal, llame a IPrintAsyncNotifyChannel::CloseChannel; sin embargo, no se puede llamar a IPrintAsyncNotifyChannel::CloseChannel inmediatamente después de la llamada a CreatePrintAsyncNotifyChannel.
Llame solo a IPrintAsyncNotifyChannel::Release():
- si es una coincidencia explícita con una llamada anterior a IPrintAsyncNotifyChannel::AddRef().
- si el canal es un canal unidireccional y abandona el puntero recibido en una llamada correcta a CreatePrintAsyncNotifyChannel.
- Si, después de crear un canal bidireccional o en la implementación de IPrintNotifyAsyncCallback::OnEventNotify y:
- no llamó a IPrintAsyncNotifyChannel::SendNotification o IPrintAsyncNotifyChannel::CloseChannel OR
- no ha reintento una llamada a IPrintAsyncNotifyChannel::SendNotification o IPrintAsyncNotifyChannel::CloseChannel con errores or
- en el lado servidor, no reintento una llamada a IPrintAsyncNotifyChannel::SendNotification que se realizó correctamente con el valor devuelto NO_LISTENER OR
- en el lado cliente, no ha reintento una llamada a IPrintAsyncNotifyChannel::SendNotification que se realizó correctamente con el valor devuelto CHANNEL_ACQUIRED.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2008 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | prnasnot.h |
Library | Winspool.lib |
Archivo DLL | Spoolss.dll |
Consulte también
Funciones de la API del administrador de trabajos de impresión