Condividi tramite


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

Vedi anche

Interfacce di notifica di stampa asincrone

IPrintAsyncNotifyChannel

Stampa