Compartir a través de


Método IPrintAsyncNotifyChannel::CloseChannel (prnasnot.h)

Cierra el canal.

Sintaxis

HRESULT CloseChannel(
  [in] IPrintAsyncNotifyDataObject *pData
);

Parámetros

[in] pData

Puntero a una notificación que especifica por qué se cerró el canal. Este puntero puede ser NULL.

Valor devuelto

HRESULT severity Significado
S_OK CORRECTA Si se devuelve este valor, significa que la función se completó correctamente.
CHANNEL_ACQUIRED ERROR

o

CORRECTA

Otro agente de escucha de este canal ya ha respondido. Solo el primer encuestado puede continuar la comunicación con el remitente.

Si este HRESULT tiene una gravedad ERROR, la función que realiza la llamada debe controlar la condición de error.

CHANNEL_ALREADY_CLOSED ERROR

o

CORRECTA

El canal ya se ha cerrado. No se debe llamar a IPrintAsyncNotifyChannel::Release si se devuelve este HRESULT porque el canal ya se ha cerrado y liberado.

Si este HRESULT tiene una gravedad ERROR, la función que realiza la llamada debe controlar la condición de error.

CHANNEL_CLOSED_BY_ANOTHER_LISTENER ERROR Una aplicación de escucha, que no sea el autor de la llamada, cerró el canal de comunicación.
CHANNEL_CLOSED_BY_SAME_LISTENER ERROR El autor de la llamada ya ha cerrado el canal de comunicación.
INVALID_NOTIFICATION_TYPE ERROR El tipo de notificación especificado no es válido.
 

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.

Consulte PrintAsyncNotifyError para ver otros valores devueltos posibles.

Para obtener más información sobre los códigos de error COM, vea Control de errores.

if (SUCCEEDED(hr)) {
  // Call succeeded, check HRESULT value returned
  switch (HRESULT_CODE(hr)){
    case CHANNEL_ACQUIRED:
      // Some action 
      break;
    case CHANNEL_ALREADY_CLOSED:
      // Some action 
      break;
    default:
      // Default action 
      break;
  }
} else {
  // Call failed, check HRESULT value returned
  switch (HRESULT_CODE(hr)){
    case CHANNEL_CLOSED_BY_ANOTHER_LISTENER:
      // Some action 
      break;
    case CHANNEL_CLOSED_BY_SAME_LISTENER:
      // Some action 
      break;
    case INVALID_NOTIFICATION_TYPE:
      // Some action 
      break;
    case CHANNEL_ACQUIRED:
      // This can be an error and a successful return
      //  some action 
      break;
    case CHANNEL_ALREADY_CLOSED:
      // This can be an error and a successful return
      //  some action 
      break;
    default:
      // Default action 
      break;
  }
}

Comentarios

Se puede llamar a CloseChannel en cualquier lado del canal de comunicación, el componente hospedado por el administrador de trabajos de impresión o la aplicación de escucha.

Si se realiza una llamada IPrintAsyncNotifyChannel::SendNotification mientras el administrador de trabajos de impresión está procesando una llamada anterior a SendNotification, el administrador de trabajos de impresión pondrá en cola las notificaciones. Las notificaciones en cola se descartan si el componente hospedado por el administrador de trabajos de impresión o la aplicación llama a CloseChannel.

No se puede llamar a CloseChannel inmediatamente después de la llamada a CreatePrintAsyncNotifyChannel.

Requisitos

   
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
Archivo DLL Prnasnot.dll

Consulte también

Interfaces de notificación de impresión asincrónica

IPrintAsyncNotifyChannel

Impresión