共用方式為


前置處理器指示詞

重要

新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。

如需詳細資訊,請參閱 新式列印平臺列印支援應用程式設計指南

GPD 檔案可以包含預處理器指示詞,可用來控制 GPD 檔案內區段的條件式剖析。 下表描述可用於 GPD 檔案的預處理器指示詞。

PreprocessorDirective 定義
*定義SymbolName 定義符號。
*UndefineSymbolName 拿掉先前定義的符號。
*IfdefSymbolName 指出 GPD 檔案專案的區塊開頭。

如果已定義指定的符號,則 GPD 檔案專案會由 GPD 剖析器處理此指示詞與下一個 *Ifdef**、*Elseifdef、*Else 或 *Endif 指示詞。
*ElseifdefSymbolName 如果已定義指定的符號,且先前 *Ifdef 或 *Elseifdef 指示詞所指定的符號未定義,則 GPD 檔案專案會由 GPD 剖析器處理,而下一個 *Ifdef、*Elseifdef、*Else 或 *Endif 指示詞。
*否則 如果未定義上一個 *Ifdef 或 *Elseifdef 指示詞所指定的符號,則 GPD 檔案專案會由 GPD 剖析器處理此指示詞與下一個 *Ifdef 或 *Endif 指示詞。
*Endif 表示 GPD 檔案專案的區塊結尾。
*包含:“FileName 指定其他 GPD 檔案的名稱。 如需詳細資訊,請參閱 在Minidriver中使用多個 GPD 檔案。
*SetPPPrefixPrefixString 將前置詞字串變更為預處理器指示詞。 如需詳細資訊,請參閱 變更預處理器指示詞前置 詞一節。

條件式預處理器指示詞可以巢狀化。 在每個巢狀層級,使用條件式預處理器指示詞的順序如下:

*IfdefSymbol1 GPD 檔案區段

*ElseifdefSymbol2 GPD 檔案區段

*ElseifdefSymbol3 GPD 檔案區段

*ElseifdefSymbol4 GPD 檔案區段

...

*Else:GPD 檔案區段

*Endif

針對所使用的每個 *Ifdef 指示詞,需要 *Endif 。 *Elseifdef 和 *Else 指示詞是選擇性的。 每個 GPD 檔案區段都可以包含 GPD 檔案專案,並選擇性地包含條件式預處理器指示詞的巢狀序列。

使用 *Define 定義的所有符號都會維持定義,直到使用 *Undefine 明確未定義為止。

*Include 指示詞可讓您指定其他 GPD 檔案的名稱。 如需詳細資訊,請參閱 在Minidriver中使用多個 GPD 檔案。

請注意,*IgnoreBlock GPD 專案不會影響預處理器指示詞,因為預處理器會在 GPD 剖析器之前執行。

變更預處理器指示詞前置詞

*SetPPPrefix 指示詞可讓您變更與預處理器指示詞搭配使用的前置詞。 也就是說,您可以使用這個指示詞,以另一個字元或字串取代預處理器指示詞前面加上星號 。

例如,如果您的 GPD 檔案包含下列指示詞:

*SetPPPrefix: #SpecialPrefix#

然後預處理器會停止搜尋開頭為 * 的預處理器指示詞,而改為尋找開頭 為 #SpecialPrefix# 的指示詞。 下列順序會暫時將預處理器前置詞變更為 #SpecialPrefix#,然後將它還原至 *

*SetPPPrefix: #SpecialPrefix#
#SpecialPrefix#Ifdef: WINNT_50
#SpecialPrefix#Include: "ExtraGPD.gpd"
#SpecialPrefix#Endif:
#SpecialPrefix#SetPPPrefix: *

這項功能的主要目的是允許針對未來操作系統版本所撰寫的 GPD 檔案與 Windows 2000 相容。 例如,假設未來操作系統版本的 GPD 檔案可以包含與 Windows 2000 支援的星號前置預處理器指示詞衝突的 GPD 檔案專案。 藉由變更前置詞,未來操作系統版本所撰寫的 GPD 檔案也可以與 Windows 2000 搭配使用。 可能會建構範例,如下所示:

*Ifdef: WINNT_70
    *SetPPPrefix: #SpecialPrefix#
    *% Do special, OS-specific processing of
    *% GPD file entries that might conflict with
    *% asterisk-prefixed preprocessor directives.
    #SpecialPrefix#SetPPPrefix: *
*Endif:

請注意,這項技術只會變更預處理器尋找的前置詞。 剖析器所辨識的關鍵詞必須一律前面加上星號。

預先定義的預處理器符號

Microsoft定義下列預處理器符號。

符號 Where Defined 定義
WINNT_51 適用於 Windows XP 的 GPD 預處理器 環境是 Windows XP。
WINNT_50 適用於 Windows XP 和 Windows 2000 的 GPD 預處理器 環境是 Windows 2000。
WINNT_40 適用於 Windows XP、Windows 2000 和 Windows NT 4.0 的 GPD 預處理器 環境是 Windows NT 4.0。
PARSER_VER_1.0 適用於 Windows NT 4.0、Windows 2000 和 Windows XP 的 GPD 預處理器 GPD 剖析器 1.0 版

WINNT_40、WINNT_50和WINNT_51符號有助於建立與 Windows NT 4.0、Windows 2000 和 Windows XP 相容的 GPD 檔案。 例如,如果 Windows XP 支援 Windows 2000 不支援的印表機功能,則可以在由 *Ifdef: WINNT_51 和 *Endif 指示詞系結的 GPD 檔案區段中指定該功能。