Freigeben über


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

Weitere Informationen

Benachrichtigungsschnittstellen für asynchrones Drucken

IPrintAsyncNotifyChannel

Drucken