Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Qualsiasi componente di stampa o applicazione in ascolto interessato alla ricezione di notifiche deve fornire oggetti che espongono l'interfaccia IPrintAsyncNotifyCallback . L'interfaccia eredita da IUnknown in modo che i client del meccanismo di notifica dello spooler possano implementare un oggetto COM o C++.
Un'applicazione in ascolto deve fornire un puntatore a un'interfaccia IPrintAsyncNotifyCallback quando esegue la registrazione per ricevere notifiche. Il mittente della notifica deve fornire un puntatore a un'interfaccia IPrintAsyncNotifyCallback se è interessato a una risposta e crea un canale bidirezionale.
#define INTERFACE IPrintAsyncNotifyCallback
DECLARE_INTERFACE_(IPrintAsyncNotifyCallback, IUnknown)
{
STDMETHOD(QueryInterface)(
THIS_
REFIID riid,
void** ppvObj
) PURE;
STDMETHOD_(ULONG, AddRef)(
THIS
) PURE;
STDMETHOD_(ULONG, Release)(
THIS
) PURE;
STDMETHOD(OnEventNotify)(
THIS_
IN IPrintAsyncNotifyChannel*,
IN IPrintAsyncNotifyDataObject*
) PURE;
STDMETHOD(ChannelClosed)(
THIS_
IN IPrintAsyncNotifyChannel*,
IN IPrintAsyncNotifyDataObject*
) PURE;
};
Quando una notifica viene inviata da un lato del canale, il servizio spooler chiama il metodo IPrintAsyncNotifyCallback::OnEventNotify all'altra estremità del canale per recapitare la notifica.
Quando il canale di notifica viene chiuso a un'estremità, il servizio spooler chiama il metodo IPrintAsyncNotifyCallback::ChannelClosed all'altra estremità per annunciare che il canale è chiuso. Il motivo della chiusura del canale viene recapitato come notifica.
Se il server o l'applicazione in ascolto smette di funzionare, il codice di rundown dello spooler rileva questa condizione e notifica la parte del canale che è ancora funzionante tramite una chiamata IPrintAsyncNotifyCallback::ChannelClosed, in cui viene recapitato un messaggio NOTIFICATION_RELEASE.