列舉 VMQ 上的過濾器
若要取得接收佇列上設定的所有篩選清單,上層驅動程式和應用程式可以使用 OID_RECEIVE_FILTER_ENUM_FILTERS 方法物件識別碼 (OID)要求。
InformationBuffer 成員在 NDIS_OID_REQUEST 結構中起初包含了一個指向 NDIS_RECEIVE_FILTER_INFO_ARRAY 結構的指標。 當格式化 NDIS_RECEIVE_FILTER_INFO_ARRAY 結構時,上層驅動程式或應用程式必須將 QueueId 成員設為接收佇列的識別碼(ID)。 接收佇列識別碼是以下列方式取得:
上層驅動程式從先前的 OID 方法要求中取得接收佇列 ID 值,OID_RECEIVE_FILTER_ALLOCATE_QUEUE 或 OID_RECEIVE_FILTER_ENUM_QUEUES。 驅動程式也可以指定預設接收佇列的 NDIS_DEFAULT_RECEIVE_QUEUE_ID。
應用程式從之前的 OID 方法要求中取得了接收佇列識別碼的值,OID_RECEIVE_FILTER_ENUM_QUEUES。 應用程式也可以指定預設接收佇列的 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 結構都會指定在指定接收佇列上設定之篩選的標識碼。
上層驅動程式或應用程式可以使用 OID_RECEIVE_FILTER_PARAMETERS OID 方法要求,來取得在接收佇列上特定的篩選器的參數。
一開始,NDIS_OID_REQUEST 結構中的 InformationBuffer 成員會包含指向 NDIS_RECEIVE_FILTER_PARAMETERS 結構的指標。 上層驅動程式或應用程式會將 FilterId 成員設定為要返回參數的篩選器的非零ID值,來格式化 NDIS_RECEIVE_FILTER_PARAMETERS 結構。
附註 上層驅動程式從先前的 OID 方法要求 OID_RECEIVE_FILTER_SET_FILTER 或 OID_RECEIVE_FILTER_ENUM_FILTERS中取得篩選器ID。 應用程式只能從先前的 OID 方法要求 OID_RECEIVE_FILTER_ENUM_FILTERS 中取得過濾器 ID。
NDIS 負責處理迷你埠驅動程式的 OID_RECEIVE_FILTER_ENUM_FILTERS 與 OID_RECEIVE_FILTER_PARAMETERS 方法的 OID 請求。 NDIS 從 OID_RECEIVE_FILTER_SET_FILTER OID 要求接收到的數據的內部快取中取得資訊。