SNA 列印伺服器資料篩選 API
您可以設定列印資料篩選 DLL 的路徑。 所有會話都會主動使用主機列印服務使用此 DLL。 不過,列印資料篩選 DLL 可以指定它是否想要指定會話的列印資料傳遞給它。
此 DLL 的進入點如下所示:
PrtFilterAlloc
取得要在其中傳遞列印資料的資料緩衝區。
PrtFilterFree
表示不再需要先前從 DLL 取得的資料緩衝區,而且 DLL 可以釋放配置給此資源的記憶體。
PrtFilterJobData
允許 DLL 操作列印資料。
PrtFilterJobEnd
通知 DLL 列印工作已結束。
PrtFilterJobStart
通知 DLL 新的列印工作已啟動,並讓 DLL 在作業開始時將特殊資料傳送至列印伺服器。
以下列出一般列印工作期間呼叫的範例順序描述,以說明這些函式通常如何使用:
啟動新的列印工作時,會呼叫PrtFilterStartJob。 DLL 可以傳回具有特殊資料的資料緩衝區,該資料會傳送至印表機, (特殊橫幅頁面或特殊印表機初始化字串,例如列印資料之前) 。
如果PrtFilterStartJob函式中傳送了特殊資料,就會呼叫PrtFilterFree,並指出可用來傳遞特殊資料的資料緩衝區可以釋放。
下一個函式呼叫序列會重複,直到傳送所有列印資料為止:
系統會呼叫 PrtFilterAlloc ,以配置用來在後續呼叫 PrtFilterJobData中傳遞列印資料的資料緩衝區。
會呼叫 PrtFilterJobData ,將列印資料傳遞至 DLL 以進行可能的修改。 這可讓使用者 DLL 有機會在印表機傳送至印表機之前操作印表機資料。 如果要傳回已修改的列印資料需要較大的資料緩衝區,或 DLL 需要使用不同的資料緩衝區來傳回資料,則 DLL 可能需要配置新的資料緩衝區來傳回此資料。 如果使用不同的資料緩衝區來傳回修改的列印資料,DLL 也可以選擇釋放用來傳遞傳入列印資料的資料緩衝區。 如果PrtFilterJobData傳回不同的資料緩衝區,PrtFilterFree函式將不會使用原始資料緩衝區的指標呼叫。
呼叫 PrtFilterFree 來指出 PrtFilterAlloc 配置的資料緩衝區,以便將傳入資料傳遞至 PrtFilterJobData 函式可以釋放。 如果 PrtFilterJobData傳回了不同的資料緩衝區,則會呼叫 PrtFilterFree ,指出 PrtFilterJobData 函式中用來傳回已修改列印資料的 DLL 所配置的資料緩衝區可以釋放。
當所有列印資料都已處理時,就會發生最終序列:
會呼叫 PrtFilterEndJob 來指出列印工作的結尾,並允許 DLL 選項傳回預告片頁面 (特殊資料,例如) 應該傳送至印表機。
如果PrtFilterEndJob函式中傳送了特殊資料,則會呼叫PrtFilterFree,並指出可用來傳遞特殊資料的資料緩衝區可以釋放。