計劃性 API
Windows 篩選平台 () API 分成下列元件。
元件 | 描述 | 標頭檔 |
---|---|---|
圖說文字 API (FWPS) ${REMOVE}$ |
圖說文字所使用的資料類型。注意這些資料類型記載于 Microsoft Windows 驅動程式開發工具組 (DDK) 。 |
fwpstypes.idl |
用來實作圖說文字的函式和列舉型別。注意這些函式和列舉型別記載于 DDK 中。 |
fwpsk.h |
|
IKE/AuthIP API (IKEEXT) ${REMOVE}$ |
用於管理 IKE 和 AuthIP 主要模式的列舉型別和結構, (MM) 原則和安全性關聯。 |
iketypes.idl |
用於管理 IKE 和 AuthIP MM 原則和安全性關聯的函式。 |
fwpmk.h |
|
IPsec API (IPSEC) ${REMOVE}$ |
用於管理 IPsec 原則和安全性關聯的列舉型別和安全性結構。 |
ipsectypes.idl |
用於管理 IPsec 原則和安全性關聯的函式。 |
fwpmk.h |
|
管理 API (FWPM) ${REMOVE}$ |
用於管理篩選引擎的列舉型別和結構。 |
fwpmtypes.idl |
用於管理篩選引擎的函式。 這些函式可用來執行下列工作:
|
fwpmk.h |
|
共用 API (FWP) | 跨 Windows 篩選平台共用的基本 列舉型 別和 結構 。 |
fwptypes.idl |
資料類型名稱全都是大寫和底線分隔。 名稱一律以識別其元件群組的前置詞開頭,例如 FWPM_PROVIDER0。
函式名稱會以混合大小寫和大小寫分隔。 名稱一律以識別其元件群組的前置詞開頭,例如 FwpmProviderCoNtextAdd0。
大部分的資料和函式名稱結尾都是版本號碼。 fwpvi.h 標頭檔會將與版本無關的資料和函式名稱對應至適合用於指定作業系統的版本。 如需詳細資訊,請參閱 Version-Independent名稱和以特定 Windows 版本為目標。
每個元件都不會獨立。 例如,IKE 主要模式 (MM) 原則是在 IKEEXT 元件中定義,但會儲存在提供者內容中,並與 FWPM API 元件中找到的篩選相關聯。
User-Mode和Kernel-Mode公用標頭檔
您可以從使用者模式或核心模式呼叫大部分的一個其功能。 不過,使用者模式函式會傳回代表 Win32 錯誤碼的 DWORD 值,而核心模式函式則會傳回代表 NT 狀態碼的 NTSTATUS 值。 因此,使用者模式和核心模式之間的函式名稱和語意相同,但函式簽章則不相同。 這需要函式原型的個別使用者模式和核心模式特定標頭。 使用者模式標頭檔名稱以 「u」 結尾,而核心模式標頭檔名稱結尾為 「k」。
下表列出定義一般服務函式的 Win32 標頭檔。
標頭檔 | 描述 |
---|---|
fwpmk.h | FWPM、IPsec 和 IKEEXT 元件的核心模式函式原型。 僅適用于 DDK。 |
fwpmu.h | FWPM、IPsec 和 IKEEXT 元件的使用者模式函式原型。 僅適用于 Microsoft Windows 軟體發展工具組 (SDK) 。 |
fwpsk.h | FWPS 元件的核心模式函式原型和列舉型別。 僅適用于 DDK。 |
fwpsu.h | FWPS 元件的使用者模式函式原型和列舉型別。 僅適用于 Windows SDK。注意 使用者模式 FWPS 列舉型別與核心模式 FWPS 列舉型別相同。 因此,這些類型只會記錄在 DDK 中。 注意 使用者模式 FWPS 函式原型與核心模式 FWPS 函式原型相同,但傳回碼除外。 使用者模式 FWPS 函式會傳回 DWORD,而核心模式 FWPS 函式則傳回 NTSTATUS。 因此,這些函式只會記錄在 DDK 中。 |
所有使用者模式函式都會從 fwpuclnt.dll匯出。 所有核心模式函式都會從 fwpkclnt.sys 匯出。
管理 (FWPM) 和圖說文字 (FWPS) 資料類型
大部分用於管理工作的 FWPM 資料類型,例如從應用程式或驅動程式新增篩選或圖說文字,都有 FWPS 對應專案。 FWPS 資料類型會在網路流量的實際篩選期間使用,在圖說常式的內容中進行分類。
例如,為了將篩選新增至特定篩選引擎層,程式設計人員應該使用 FWPM 類型,例如: filter.layerKey = FWPM_LAYER_INBOUND_IPPACKET
。 若要檢查呼叫圖說文字的來源層,程式設計人員應該使用對應的 FWPS 類型: if (inFixedValues->layerId == FWPS_LAYER_INBOUND_IPPACKET)
。
某些 FWPS 與 FWPM 資料類型的對應專案正在擴充原始 FWPM 資料類型。 例如,若要在許多篩選引擎層新增篩選準則,程式設計人員會 filterCondition.fieldKey = FWPM_CONDITION_IP_PROTOCOL
指定不論篩選引擎層為何。 若要尋找篩選準則值,程式設計人員會指定圖層特定的 FWPS 類型,例如: inFixedValues->incomingValue[FWPS_FIELD_ALE_FLOW_ESTABLISHED_V4_IP_PROTOCOL]
。
FWPS 資料類型通常小於其 FWPM 對應專案。 例如, FWPM 篩選層識別碼 是 GUID (16 位元組) , 而 FWPS 篩選層識別碼 則是 UINT16 (16 位) 。 FWPS 資料類型的大小較小可改善系統效能,因為整數比較超過即時流量的 GUID 比較。 此外,核心記憶體會有效率地使用,因為 FWPS 類型全都用於核心來管理篩選,而 FWPM 類型則會儲存在使用者模式中,以管理不同的層級。