Metodo IPrintAsyncNotifyChannel::CloseChannel (prnasnot.h)
Chiude il canale.
Sintassi
HRESULT CloseChannel(
[in] IPrintAsyncNotifyDataObject *pData
);
Parametri
[in] pData
Puntatore a una notifica che specifica il motivo per cui il canale è chiuso. Questo puntatore può essere NULL.
Valore restituito
HRESULT | Gravità | Significato |
---|---|---|
S_OK | SUCCESS | La funzione è stata completata correttamente. |
CHANNEL_ACQUIRED |
ERRORE oppure SUCCESS |
Un altro listener su questo canale ha già risposto. Solo il primo rispondente può continuare la comunicazione con il mittente.
Se questo HRESULT ha una gravità ERROR, la funzione chiamante deve gestire la condizione di errore. |
CHANNEL_ALREADY_CLOSED |
ERRORE oppure SUCCESS |
Il canale è già chiuso. IPrintAsyncNotifyChannel::Release non deve essere chiamato se questo HRESULT viene restituito perché il canale è già stato chiuso e rilasciato.
Se questo HRESULT ha una gravità ERROR, la funzione chiamante deve gestire la condizione di errore. |
CHANNEL_CLOSED_BY_ANOTHER_LISTENER | ERRORE | Un'applicazione in ascolto, diversa dal chiamante, ha chiuso il canale di comunicazione. |
CHANNEL_CLOSED_BY_SAME_LISTENER | ERRORE | Il chiamante ha già chiuso il canale di comunicazione. |
INVALID_NOTIFICATION_TYPE | ERRORE | Il tipo di notifica specificato non è valido. |
I valori restituiti sono codici di errore COM. Poiché questa funzione potrebbe completare correttamente l'operazione ma restituisce un HRESULT diverso da S_OK è necessario usare la macro SUCCESSED o FAILED per determinare l'esito positivo della chiamata. Per ottenere il valore HRESULT specifico restituito dalla funzione, usare la macro HRESULT_CODE. Nell'esempio di codice seguente viene illustrato come usare queste macro.
Per altri valori restituiti possibili, vedere PrintAsyncNotifyError .
Per altre informazioni sui codici di errore COM, vedere Gestione degli errori.
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;
}
}
Commenti
CloseChannel può essere chiamato da un lato del canale di comunicazione, ovvero il componente ospitato dal spooler di stampa o dall'applicazione in ascolto.
Se viene eseguita una chiamata IPrintAsyncNotifyChannel::SendNotification mentre lo spooler di stampa elabora una chiamata precedente a SendNotification, lo spooler di stampa accoderà le notifiche. Le notifiche in coda vengono rimosse se il componente ospitato dallo spooler di stampa o l'applicazione chiama CloseChannel.
CloseChannel non può essere chiamato immediatamente dopo la chiamata a CreatePrintAsyncNotifyChannel.
Requisiti
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2008 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | prnasnot.h |
DLL | Prnasnot.dll |