篩選驅動程式初始化會在系統載入驅動程式之後立即發生。 篩選驅動程式作為系統服務載入。 系統可以在載入迷你埠驅動程式之前、期間或之後隨時載入篩選驅動程式。 NDIS 可以在篩選驅動程式所支援類型的迷你埠配接器變成可用且篩選驅動程式初始化完成之後,附加篩選模組到迷你埠配接器。
當驅動程式堆疊啟動時,如果尚未載入篩選驅動程式,系統就會載入篩選驅動程式。 如需啟動包含篩選模組的驅動程式堆疊的詳細資訊,請參閱 啟動驅動程式堆疊。
在篩選驅動程式載入之後,系統會呼叫驅動程式的 DriverEntry 例程。
驅動程式物件的指標,該物件是由 I/O 系統所建立。
登錄路徑的指標,指定儲存驅動程式特定參數的位置。
如果驅動程式成功註冊為 NDIS 篩選驅動程式,DriverEntry 會傳回STATUS_SUCCESS或其對等NDIS_STATUS_SUCCESS。 如果 DriverEntry 因散佈 NdisXxx 函式或內核模式支援例程返回的錯誤狀態而初始化失敗,則驅動程式將不會繼續載入。 DriverEntry 必須同步執行;也就是說,它無法傳回STATUS_PENDING或其對等NDIS_STATUS_PENDING。
當篩選驅動程式向 NDIS 註冊為篩選驅動程式時,它會將驅動程式對象傳遞給 NdisFRegisterFilterDriver 函數。 驅動程式可以使用登錄路徑來取得組態資訊。 如需如何存取篩選驅動程式組態資訊的詳細資訊,請參閱 存取篩選驅動程式的組態資訊。
篩選驅動程式會從其 DriverEntry 例程呼叫 NdisFRegisterFilterDriver。 篩選驅動程式會將NDIS_FILTER_DRIVER_CHARACTERISTICS結構傳遞至 FilterCharacteristics 參數的 NdisFRegisterFilterDriver,以匯出一組 FilterXxx 函式。
NDIS_FILTER_DRIVER_CHARACTERISTICS 結構會指定強制和選擇性 FilterXxx 函式的進入點。 您可以略過某些選擇性函式。 如需略過函式的詳細資訊,請參閱 數據略過模式。
呼叫 NdisFRegisterFilterDriver 的驅動程式必須準備好立即執行其任何 FilterXxx 函式。
NDIS_FILTER_DRIVER_CHARACTERISTICS 結構會指定這些必要 FilterXxx 函式的進入點:
NDIS_FILTER_DRIVER_CHARACTERISTICS 結構體指定了這些選擇性且在運行時無法變更的 FilterXxx 函式的進入點。
FilterCancelSendNetBufferLists
NDIS_FILTER_DRIVER_CHARACTERISTICS 結構體指定了這些選擇性且可在運行期間變更的 FilterXxx 函式的預設進入點:
FilterSendNetBufferListsComplete
上述四個函式也會定義在 NDIS_FILTER_PARTIAL_CHARACTERISTICS 結構中。 這個結構會指定可在運行時間變更的函式,方法是從 FilterSetModuleOptions 函式呼叫 NdisSetOptionalHandlers 函式。 如果篩選驅動程式會在運行時間變更這些部分特性,則必須提供 FilterSetModuleOptions 的進入點。 每個篩選模組的部分特性可能不同。 如需詳細資訊,請參閱 啟動篩選模組。
NDIS 會在呼叫 NdisFRegisterFilterDriver 的內容中呼叫 FilterSetOptions 函式。 FilterSetOptions 會向 NDIS 註冊選擇性服務。 如需詳細資訊,請參閱 設定選擇性篩選驅動程序服務。
如果呼叫 NdisFRegisterFilterDriver 成功,NDIS 會以篩選驅動程式句柄填滿 NdisFilterDriverHandle 的變數。 篩選驅動程式會儲存此句柄,稍後再將此句柄傳遞至 NDIS 函式,例如 NdisFDeregisterFilterDriver,需要篩選驅動程式句柄做為輸入參數。 當驅動程式卸除時,它必須呼叫 NdisFDeregisterFilterDriver 函式,以釋放 NdisFRegisterFilterDriver 所配置的驅動程序資源。
在 FilterSetOptions 傳回之後,篩選模組將處於分離狀態。 NDIS 可以在呼叫 FilterSetOptions 後,隨時呼叫篩選驅動程式的FilterAttach 函式。 驅動程式會在 FilterAttach 函式中執行篩選模組特定的初始化。 如需將篩選模組附加至驅動程式堆疊的詳細資訊,請參閱 附加篩選模組。
篩選驅動程式也會在 DriverEntry 中執行任何其他驅動程式特定的初始化。 篩選驅動程式必須釋放它在 FilterDriverUnload 例程中配置的驅動程式特定資源。 如需詳細資訊,請參閱 卸除篩選驅動程式。