共用方式為


通知回呼

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