註冊以接收通知
接聽用戶端會呼叫 RegisterForPrintAsyncNotifications 方法來註冊以接收通知。 接聽用戶端可以是應用程式,也可以在多工緩衝處理常式內執行。 無論載入何處,Winspool.drv 都會公開這項功能。
Spoolss.lib 會公開這項功能,讓埠監視器可以註冊通知。 在多工緩衝處理常式內執行的元件,且連結到 Spoolss.lib 的元件可以呼叫 RegisterForPrintAsyncNotifications。 下列程式詳細說明必須在呼叫這個函式中傳遞的資訊。 程式的第一個步驟會套用至第一個參數、第二個步驟會套用至第二個參數等等。
HRESULT
RegisterForPrintAsyncNotifications(
IN LPCWSTR,
IN PrintAsyncNotificationType*,
IN PrintAsyncNotifyUserFilter,
IN PrintAsyncNotifyConversationStyle,
IN IPrintAsyncNotifyCallback*,
OUT HANDLE*
);
若要註冊通知,請指定下列專案:
本機/遠端印表機或伺服器名稱。
接聽程式感興趣的通知類型。
使用者篩選,指出用戶端想要接收通知的使用者、與通知寄件者相同的使用者,或所有使用者。
交談樣式篩選。 用戶端可以指定單向或雙向通訊。
當通知從通道的另一端傳回時,要呼叫的 IPrintAsyncNotifyCallback 介面。 此參數不可為 Null。
當此函式傳回時,HANDLE*) 類型的第六個參數 (指向註冊控制碼。 註冊控制碼是用戶端收到的不透明結構。 註冊會與進行註冊呼叫之執行緒的使用者身分識別相關聯。 除了用戶端會話的篩選之外,多工緩衝處理器還會根據通道的會話篩選準則和用戶端的註冊會話來篩選接聽用戶端。
若要通知多工緩衝處理常式,接聽用戶端不應再收到通知,用戶端必須在呼叫 UnRegisterForPrintAsyncNotifications時使用此控制碼。 針對單向通訊,伺服器端上的任何擱置通知會關閉。 針對雙向通訊,如果有開放式雙向通道,通訊會繼續直到關閉為止。
HRESULT
UnRegisterForPrintAsyncNotifications(
IN HANDLE
);