Método IPrintAsyncNotifyChannel::CloseChannel (prnasnot.h)
Fecha o canal.
Sintaxe
HRESULT CloseChannel(
[in] IPrintAsyncNotifyDataObject *pData
);
Parâmetros
[in] pData
Ponteiro para uma notificação que especifica por que o canal foi fechado. Esse ponteiro pode ser NULL.
Valor retornado
HRESULT | Severidade | Significado |
---|---|---|
S_OK | SUCCESS | A função foi concluída com êxito. |
CHANNEL_ACQUIRED |
ERROR ou SUCCESS |
Outro ouvinte neste canal já respondeu. Somente o primeiro entrevistado pode continuar a comunicação com o remetente.
Se esse HRESULT tiver uma severidade ERROR, a função de chamada deverá lidar com a condição de erro. |
CHANNEL_ALREADY_CLOSED |
ERROR ou SUCCESS |
O canal já foi fechado. IPrintAsyncNotifyChannel::Release não deverá ser chamado se esse HRESULT for retornado porque o canal já foi fechado e liberado.
Se esse HRESULT tiver uma severidade ERROR, a função de chamada deverá lidar com a condição de erro. |
CHANNEL_CLOSED_BY_ANOTHER_LISTENER | ERROR | Um aplicativo de escuta, diferente do chamador, fechou o canal de comunicação. |
CHANNEL_CLOSED_BY_SAME_LISTENER | ERROR | O chamador já fechou o canal de comunicação. |
INVALID_NOTIFICATION_TYPE | ERROR | O tipo de notificação especificado é inválido. |
Os valores retornados são códigos de erro COM. Como essa função pode concluir a operação com êxito, mas retornar um HRESULT diferente de S_OK você deve usar a macro SUCCEEDED ou FAILED para determinar o sucesso da chamada. Para obter o HRESULT específico que foi retornado pela função , use a macro HRESULT_CODE. O exemplo de código a seguir mostra como essas macros podem ser usadas.
Consulte PrintAsyncNotifyError para obter outros valores retornados possíveis.
Para obter mais informações sobre códigos de erro do COM, confira Tratamento de erros.
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;
}
}
Comentários
CloseChannel pode ser chamado por ambos os lados do canal de comunicação, o componente hospedado pelo spooler de impressão ou pelo aplicativo de escuta.
Se uma chamada IPrintAsyncNotifyChannel::SendNotification for feita enquanto o spooler de impressão estiver processando uma chamada anterior para SendNotification, o spooler de impressão enfileirará as notificações. As notificações enfileiradas serão descartadas se o componente hospedado pelo spooler de impressão ou o aplicativo chamar CloseChannel.
CloseChannel não pode ser chamado imediatamente após a chamada para CreatePrintAsyncNotifyChannel.
Requisitos
Cliente mínimo com suporte | Windows Vista [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | prnasnot.h |
DLL | Prnasnot.dll |