通知回呼
任何有興趣接收通知的列印元件或接聽應用程式都必須提供公開 IPrintAsyncNotifyCallback 介面的物件。 介面繼承自 IUnknown ,讓多工緩衝處理常式通知機制的用戶端可以實作 COM 或 C++ 物件。
接聽應用程式必須在註冊以接收通知時,提供 IPrintAsyncNotifyCallback 介面的指標。 如果通知傳送者對回應有興趣,而且它建立雙向通道,則通知傳送者必須提供 IPrintAsyncNotifyCallback 介面的指標。
#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;
};
從通道的一端傳送通知時,多工緩衝處理常式服務會在通道的另一端呼叫 IPrintAsyncNotifyCallback::OnEventNotify 方法以傳遞通知。
當通知通道在一端關閉時,多工緩衝處理常式服務會在另一端呼叫 IPrintAsyncNotifyCallback::ChannelClosed 方法,以宣告通道已關閉。 關閉通道的原因會以通知的形式傳遞。
如果伺服器或接聽應用程式失敗,多工緩衝處理常式取消程式碼會偵測到此條件,而且 IPrintAsyncNotifyCallback::ChannelClosed 呼叫會通知通道的「仍在運作中」結束,其中會傳遞NOTIFICATION_RELEASE訊息。