CreatePrintAsyncNotifyChannel-Funktion (prnasnot.h)
Erstellt einen Kommunikationskanal zwischen einer von Print Spooler gehosteten Druckkomponente, z. B. einem Drucktreiber oder Portmonitor, und einer Anwendung, die Benachrichtigungen von der Komponente empfängt.
Syntax
HRESULT CreatePrintAsyncNotifyChannel(
[in] PCWSTR pszName,
[in] PrintAsyncNotificationType *pNotificationType,
[in] PrintAsyncNotifyUserFilter eUserFilter,
[in] PrintAsyncNotifyConversationStyle eConversationStyle,
[in] IPrintAsyncNotifyCallback *pCallback,
[out] IPrintAsyncNotifyChannel **ppIAsynchNotification
);
Parameter
[in] pszName
Ein Zeiger auf den Namen eines Druckservers oder einer Druckwarteschlange.
[in] pNotificationType
Ein Zeiger auf die GUID des Datenschemas für den Typ der Benachrichtigungen, die im Kanal gesendet werden sollen.
[in] eUserFilter
Ein Wert, der angibt, ob Benachrichtigungen gesendet werden:
- Nur Anwendungen, die als derselbe Benutzer wie der vom Print Spooler gehostete Plug-In-Absender ausgeführt werden.
- Eine breitere Palette von Lauschanwendungen.
[in] eConversationStyle
Ein Wert, der angibt, ob die Kommunikation bidirektional oder unidirektional ist.
[in] pCallback
Ein Zeiger auf ein Objekt, das die lauschende Anwendung verwendet, um die von Print Spooler gehostete Komponente zurückzurufen. Dies sollte NULL sein, wenn die RichtungkUniDirectional ist.
[out] ppIAsynchNotification
Ein Zeiger auf den neuen Kanal.
Rückgabewert
HRESULT | Schweregrad | Bedeutung |
---|---|---|
S_OK | SUCCESS | Die Funktion wurde erfolgreich abgeschlossen. |
CHANNEL_ALREADY_OPENED | ERROR | Der Kanal wurde bereits geöffnet. |
MAX_CHANNEL_COUNT_EXCEEDED | ERROR | Die maximale Anzahl von Lauschanwendungen, die bereits für den angegebenen Benachrichtigungstyp bei der angegebenen Warteschlange oder dem angegebenen Druckserver registriert wurden. Das Standardmaximum ist 10.000. |
Die Rückgabewerte sind COM-Fehlercodes. Da diese Funktion den Vorgang möglicherweise erfolgreich abgeschlossen hat und dennoch 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 zum Auswerten des Rückgabewerts verwendet werden können.
if (SUCCEEDED(hr)){
//Call was successful
}
if (FAILED(hr)) {
// Call failed
}
if (FAILED(hr)) {
// Call failed
switch (HRESULT_CODE(hr)){
case CHANNEL_ALREADY_OPENED:
// Some action
break;
case MAX_CHANNEL_COUNT_EXCEEDED:
// Some action
break;
default:
//Default action
break;
}
} else {
//call succeeded
}
Weitere Informationen zu COM-Fehlercodes finden Sie unter Fehlerbehandlung.
Weitere mögliche Rückgabewerte finden Sie unter PrintAsyncNotifyError .
Hinweise
Um einen Kanal zu schließen, rufen Sie IPrintAsyncNotifyChannel::CloseChannel auf. IPrintAsyncNotifyChannel::CloseChannel kann jedoch nicht sofort nach dem Aufruf von CreatePrintAsyncNotifyChannel aufgerufen werden.
Rufen Sie nur IPrintAsyncNotifyChannel::Release() auf:
- , wenn es sich um eine explizite Übereinstimmung mit einem früheren IPrintAsyncNotifyChannel::AddRef()-Aufruf handelt.
- , wenn es sich bei dem Kanal um einen uniDirektionalen Kanal handelt und Sie den Zeiger verlassen, der in einem erfolgreichen Aufruf von CreatePrintAsyncNotifyChannel empfangen wurde.
- , wenn Sie nach dem Erstellen eines BiDirectional-Kanals oder in der Implementierung von IPrintNotifyAsyncCallback::OnEventNotify und:
- Sie haben IPrintAsyncNotifyChannel::SendNotification oder IPrintAsyncNotifyChannel::CloseChannel OR nicht aufgerufen.
- Sie haben keinen erneuten Aufruf von IPrintAsyncNotifyChannel::SendNotification oder IPrintAsyncNotifyChannel::CloseChannel wiederholt, bei dem ein Fehler ODER aufgetreten ist.
- Auf der Serverseite haben Sie keinen erneuten Aufruf von IPrintAsyncNotifyChannel::SendNotification wiederholt, der mit dem Rückgabewert NO_LISTENER OR erfolgreich war.
- Auf der Clientseite haben Sie keinen erneuten Aufruf von IPrintAsyncNotifyChannel::SendNotification wiederholt, der mit dem Rückgabewert CHANNEL_ACQUIRED erfolgreich war.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | prnasnot.h |
Bibliothek | Winspool.lib |
DLL | Spoolss.dll |