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 |