前置處理器指示詞
重要
新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。
如需詳細資訊,請參閱 新式列印平臺 和 列印支援應用程式設計指南。
GPD 檔案可以包含預處理器指示詞,可用來控制 GPD 檔案內區段的條件式剖析。 下表描述可用於 GPD 檔案的預處理器指示詞。
PreprocessorDirective | 定義 |
---|---|
*定義: SymbolName | 定義符號。 |
*Undefine: SymbolName | 拿掉先前定義的符號。 |
*Ifdef: SymbolName | 指出 GPD 檔案專案的區塊開頭。 如果已定義指定的符號,則 GPD 檔案專案會由 GPD 剖析器處理此指示詞與下一個 *Ifdef**、*Elseifdef、*Else 或 *Endif 指示詞。 |
*Elseifdef : SymbolName | 如果已定義指定的符號,且先前 *Ifdef 或 *Elseifdef 指示詞所指定的符號未定義,則 GPD 檔案專案會由 GPD 剖析器處理,而下一個 *Ifdef、*Elseifdef、*Else 或 *Endif 指示詞。 |
*否則: | 如果未定義上一個 *Ifdef 或 *Elseifdef 指示詞所指定的符號,則 GPD 檔案專案會由 GPD 剖析器處理此指示詞與下一個 *Ifdef 或 *Endif 指示詞。 |
*Endif: | 表示 GPD 檔案專案的區塊結尾。 |
*包含:“FileName” | 指定其他 GPD 檔案的名稱。 如需詳細資訊,請參閱 在Minidriver中使用多個 GPD 檔案。 |
*SetPPPrefix : PrefixString | 將前置詞字串變更為預處理器指示詞。 如需詳細資訊,請參閱 變更預處理器指示詞前置 詞一節。 |
條件式預處理器指示詞可以巢狀化。 在每個巢狀層級,使用條件式預處理器指示詞的順序如下:
*Ifdef: Symbol1 GPD 檔案區段
*Elseifdef: Symbol2 GPD 檔案區段
*Elseifdef: Symbol3 GPD 檔案區段
*Elseifdef: Symbol4 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 檔案區段中指定該功能。