修改封包聯合接收篩選器
若要修改支援封包合併的小型埠驅動程式上的接收過濾器,相關通訊協定或篩選驅動程式會執行下列步驟:
若要取得已下載至迷你埠驅動程式的所有封包匯聚接收篩選器清單,上層驅動程式會發出 OID 方法請求 OID_RECEIVE_FILTER_ENUM_FILTERS。 InformationBuffer 成員在 NDIS_OID_REQUEST 結構中,包含一個指向 NDIS_RECEIVE_FILTER_INFO_ARRAY 結構的指標。
注意 當上層驅動程式或應用程式初始化 NDIS_RECEIVE_FILTER_INFO_ARRAY 結構時,它必須將 QueueId 成員設定為 NDIS_DEFAULT_RECEIVE_QUEUE_ID。
在成功回應來自 OID_RECEIVE_FILTER_ENUM_FILTERS的 OID 方法請求之後,InformationBuffer 是 NDIS_OID_REQUEST 結構的成員,會包含一個指向經更新的 NDIS_RECEIVE_FILTER_INFO_ARRAY 結構的指標,並緊接著一個或多個 NDIS_RECEIVE_FILTER_INFO 結構。 每個 NDIS_RECEIVE_FILTER_INFO 結構都會指定網路適配器上設定之篩選的標識碼(ID)。
若要取得下載至迷你埠驅動程式的特定封包合併接收篩選器的參數,上層驅動程式會發出 OID_RECEIVE_FILTER_PARAMETERS的 OID 方法要求。 InformationBuffer 是 NDIS_OID_REQUEST 結構中的一個成員,包含一個指向 NDIS_RECEIVE_FILTER_PARAMETERS 結構的指標。 上層的驅動程式或應用程式會透過將 FilterId 成員設定為篩選器的非零 ID 值,以初始化 NDIS_RECEIVE_FILTER_PARAMETERS 結構,其參數將會被傳回。
當 OID 方法要求成功返回後,InformationBuffer 是 NDIS_OID_REQUEST 結構中的一個成員,並包含指向緩衝區的指標。 緩衝區的格式設定為包含下列內容:
NDIS_RECEIVE_FILTER_PARAMETERS 結構,指定 NDIS 接收篩選的參數。
NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 結構的陣列,指定網路封包標頭中一個字段的篩選測試準則。
上層驅動程式會修改接收篩選器,以新增、刪除或變更篩選器的測試條件集。 驅動程式會從 NDIS_RECEIVE_FILTER_PARAMETERS 結構指定的 field 參數陣列新增、刪除或修改個別 NDIS_RECEIVE_FILTER_FIELD_PARAMETERS 結構,以執行此動作。
當上層驅動程式完成測試準則的修改時,它必須更新 NDIS_RECEIVE_FILTER_PARAMETERS 結構的成員,以反映對接收篩選器所做的變更。 例如,上層驅動程式必須更新 FieldParametersArrayNumElements 成員,以包含陣列中新的元素數目。
如需詳細資訊,請參閱 指定封包聯合接收篩選。
上層驅動程式發出 OID_RECEIVE_FILTER_SET_FILTER 的 OID 方法要求,以將已修改的封包篩選器下載到迷你埠驅動程式。
如需詳細資訊,請參閱 設定資料包合併接收篩選。