VMQ のフィルターの列挙
受信キューに設定されているすべてのフィルターの一覧を取得するには、上にあるドライバーとアプリケーションは、OID_RECEIVE_FILTER_ENUM_FILTERS メソッド オブジェクト識別子 (OID) リクエストを使用できます。
NDIS_OID_REQUEST 構造体の InformationBuffer メンバーには、主にNDIS_RECEIVE_FILTER_INFO_ARRAY 構造体へのポインターが含まれています。 NDIS_RECEIVE_FILTER_INFO_ARRAY構造体の書式を設定する場合、上にあるドライバーやアプリケーションは、QueueId メンバーを受信キューの識別子 (ID) に設定する必要があります。 受信キュー ID は、次の方法で取得します。
上にあるドライバーは、OID_RECEIVE_FILTER_ALLOCATE_QUEUEまたはOID_RECEIVE_FILTER_ENUM_QUEUESの以前の OID メソッドリクエストから受信キュー ID 値を取得しました。 ドライバーは、既定の受信キューのNDIS_DEFAULT_RECEIVE_QUEUE_IDを指定することもできます。
アプリケーションは、OID_RECEIVE_FILTER_ENUM_QUEUESの以前の OID メソッドリクエストから受信キュー ID 値を取得しました。 アプリケーションは、既定の受信キューのNDIS_DEFAULT_RECEIVE_QUEUE_IDを指定することもできます。
OID_RECEIVE_FILTER_ENUM_FILTERSの OID メソッドリクエストから正常に戻った後、NDIS_OID_REQUEST構造体の InformationBuffer メンバーには、更新されたNDIS_RECEIVE_FILTER_INFO_ARRAY構造体へのポインターを格納し、その後に 1 つ以上のNDIS_RECEIVE_FILTER_INFO構造体が続きます。 各 NDIS_RECEIVE_FILTER_INFO 構造体は、指定された受信キューで設定しているフィルターの ID を指定します。
基になるドライバーやアプリケーションは、OID_RECEIVE_FILTER_PARAMETERS OID メソッドリクエストを使用して、受信キュー上の特定のフィルターのパラメーターを取得できます。
この NDIS_OID_REQUEST 構造の InformationBuffer メンバーは、最初に NDIS_RECEIVE_FILTER_PARAMETERS 構造へのポインターを含んでいます。 上にあるドライバーまたはアプリケーションは、パラメーターを返すフィルターの 0 以外の ID 値に FilterId メンバーを設定することによって、NDIS_RECEIVE_FILTER_PARAMETERS構造体を書式設定します。
注: 上のドライバーは、OID_RECEIVE_FILTER_Standard Edition T_FILTERまたはOID_RECEIVE_FILTER_ENUM_FILTERSの以前の OID メソッド要求からフィルター ID を取得しました。 アプリケーションは、OID_RECEIVE_FILTER_ENUM_FILTERSの以前の OID メソッドリクエストからのみフィルター ID を取得できます。
NDIS は、ミニポート ドライバーの OID_RECEIVE_FILTER_ENUM_FILTERS および OID_RECEIVE_FILTER_PARAMETERS メソッド OID リクエストを処理します。 NDIS は、OID_RECEIVE_FILTER_Standard Edition T_FILTER OID リクエストから受信したデータの内部キャッシュから情報を取得しました。