Partager via


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

Ferme le canal.

Syntaxe

HRESULT CloseChannel(
  [in] IPrintAsyncNotifyDataObject *pData
);

Paramètres

[in] pData

Pointeur vers une notification qui spécifie la raison de la fermeture du canal. Ce pointeur peut être NULL.

Valeur retournée

HRESULT Gravité Signification
S_OK SUCCESS La fonction s’est terminée avec succès.
CHANNEL_ACQUIRED ERROR

or

SUCCESS

Un autre écouteur sur ce canal a déjà répondu. Seul le premier répondant peut poursuivre la communication avec l’expéditeur.

Si ce HRESULT présente une gravité ERROR, la fonction appelante doit gérer la condition d’erreur.

CHANNEL_ALREADY_CLOSED ERROR

or

SUCCESS

Le canal est déjà fermé. IPrintAsyncNotifyChannel::Release ne doit pas être appelé si ce HRESULT est retourné, car le canal a déjà été fermé et libéré.

Si ce HRESULT présente une gravité ERROR, la fonction appelante doit gérer la condition d’erreur.

CHANNEL_CLOSED_BY_ANOTHER_LISTENER ERROR Une application d’écoute, autre que l’appelant, a fermé le canal de communication.
CHANNEL_CLOSED_BY_SAME_LISTENER ERROR L’appelant a déjà fermé le canal de communication.
INVALID_NOTIFICATION_TYPE ERROR Le type de notification spécifié n’est pas valide.
 

Les valeurs renvoyées sont des codes d’erreur COM. Étant donné que cette fonction peut terminer l’opération correctement tout en renvoyant un HRESULT autre que S_OK vous devez utiliser la macro SUCCEEDED ou FAILED pour déterminer la réussite de l’appel. Pour obtenir le HRESULT spécifique retourné par la fonction, utilisez la macro HRESULT_CODE. L’exemple de code suivant montre comment ces macros peuvent être utilisées.

Consultez PrintAsyncNotifyError pour connaître les autres valeurs de retour possibles.

Pour plus d’informations sur les codes d’erreur COM, consultez Gestion des erreurs.

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;
  }
}

Notes

CloseChannel peut être appelé de part et d’autre du canal de communication: le composant hébergé par le spouleur d’impression ou l’application d’écoute.

Si un appel IPrintAsyncNotifyChannel::SendNotification est effectué pendant que le spouleur d’impression traite un appel antérieur à SendNotification, le spouleur d’impression met en file d’attente les notifications. Les notifications mises en file d’attente sont ignorées si le composant hébergé par le spouleur d’impression ou l’application appelle CloseChannel.

CloseChannel ne peut pas être appelé immédiatement après l’appel à CreatePrintAsyncNotifyChannel.

Spécifications

   
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
Plateforme cible Windows
En-tête prnasnot.h
DLL Prnasnot.dll

Voir aussi

Interfaces de notification d’impression asynchrone

IPrintAsyncNotifyChannel

Impression