共用方式為


通知回呼

任何有興趣接收通知的列印元件或接聽應用程式都必須提供公開 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訊息。