IPrintAsyncNotifyChannel::CloseChannel-Methode (prnasnot.h)
Schließt den Kanal.
Syntax
HRESULT CloseChannel(
[in] IPrintAsyncNotifyDataObject *pData
);
Parameter
[in] pData
Zeiger auf eine Benachrichtigung, die angibt, warum der Kanal geschlossen wurde. Dieser Zeiger kann NULL sein.
Rückgabewert
HRESULT | Schweregrad | Bedeutung |
---|---|---|
S_OK | SUCCESS | Die Funktion wurde erfolgreich abgeschlossen. |
CHANNEL_ACQUIRED |
ERROR oder SUCCESS |
Ein anderer Listener auf diesem Kanal hat bereits geantwortet. Nur der erste Befragte kann die Kommunikation mit dem Absender fortsetzen.
Wenn dieses HRESULT den Fehlerschweregrad aufweist, sollte die aufrufende Funktion die Fehlerbedingung behandeln. |
CHANNEL_ALREADY_CLOSED |
ERROR oder SUCCESS |
Der Kanal wurde bereits geschlossen. IPrintAsyncNotifyChannel::Release darf nicht aufgerufen werden, wenn dieses HRESULT zurückgegeben wird, da der Kanal bereits geschlossen und freigegeben wurde.
Wenn dieses HRESULT den Fehlerschweregrad aufweist, sollte die aufrufende Funktion die Fehlerbedingung behandeln. |
CHANNEL_CLOSED_BY_ANOTHER_LISTENER | ERROR | Eine lauschend-Anwendung, die nicht der Aufrufer ist, schloss den Kommunikationskanal. |
CHANNEL_CLOSED_BY_SAME_LISTENER | ERROR | Der Anrufer hat den Kommunikationskanal bereits geschlossen. |
INVALID_NOTIFICATION_TYPE | ERROR | Der angegebene Benachrichtigungstyp ist ungültig. |
Die Rückgabewerte sind COM-Fehlercodes. Da diese Funktion den Vorgang möglicherweise erfolgreich abgeschlossen hat, aber ein anderes HRESULT als S_OK sollten Sie das Makro SUCCEEDED oder FAILED verwenden, um den Erfolg des Aufrufs zu bestimmen. Verwenden Sie das Makro HRESULT_CODE, um das spezifische HRESULT abzurufen, das von der Funktion zurückgegeben wurde. Das folgende Codebeispiel zeigt, wie diese Makros verwendet werden können.
Weitere mögliche Rückgabewerte finden Sie unter PrintAsyncNotifyError .
Weitere Informationen zu COM-Fehlercodes finden Sie unter Fehlerbehandlung.
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;
}
}
Hinweise
CloseChannel kann von beiden Seiten des Kommunikationskanals aufgerufen werden, also von der Komponente, die vom Druckspooler oder der lauschenden Anwendung gehostet wird.
Wenn ein IPrintAsyncNotifyChannel::SendNotification-Aufruf erfolgt, während der Druckspooler einen früheren Aufruf von SendNotification verarbeitet, wird der Druckspooler die Benachrichtigungen in die Warteschlange stellen. Benachrichtigungen in der Warteschlange werden verworfen, wenn die vom Druckspooler gehostete Komponente oder die Anwendung CloseChannel aufruft.
CloseChannel kann nicht sofort nach dem Aufruf von CreatePrintAsyncNotifyChannel aufgerufen werden.
Anforderungen
Unterstützte Mindestversion (Client) | Windows Vista [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | prnasnot.h |
DLL | Prnasnot.dll |