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 |