NDIS フィルター ドライバーからの OID 要求の生成
フィルター ドライバーは、NdisFOidRequest 関数を呼び出すことによって、OID 要求の送信、または基になるドライバーへの要求の設定を行います。
次の図は、フィルター ドライバーが送信する OID 要求を示しています。
フィルター ドライバーが NdisFOidRequest 関数を呼び出した後、NDIS は、次の基になるドライバーの要求関数を呼び出します。 ミニポート ドライバーが OID 要求を処理する方法の詳細については、「アダプターの OID リクエスト」を参照してください。
同期的に完了するには、NdisFOidRequest は NDIS_STATUS_SUCCESS またはエラー状態を返します。 非同期的に完了するには、NdisFOidRequest は NDIS_STATUS_PENDING を返します。
基になるドライバーによって正常に処理された情報を確認するには、OID 要求を発行するフィルター ドライバーは、OID 要求が返された後、NDIS_OID_REQUEST 構造体の SupportedRevision メンバーの値をチェックする必要があります。 NDIS のバージョン情報の詳細については、「NDIS バージョン情報の指定」を参照してください。
NdisFOidRequest が NDIS_STATUS_PENDING を返す場合、基になるドライバーが OID 要求を完了した後、NDIS は FilterOidRequestComplete 関数を呼び出します。 このケースでは、NDIS は FilterOidRequestComplete の OidRequest パラメーターで要求の結果を渡します。 NDIS は、FilterOidRequestComplete の Status パラメーターで要求の最終的な状態を渡します。
NdisFOidRequest が NDIS_STATUS_SUCCESS を返す場合は、NDIS_OID_REQUEST 構造体の OidRequest パラメーターにクエリ要求の結果を返します。 この場合、NDIS は FilterOidRequestComplete 関数を呼び出しません。
ドライバーは、Restarting、Running、Pausing、または Paused 状態のときに NdisFOidRequest を呼び出すことができます。
注: フィルター ドライバーは、送信した OID 要求を追跡し、このような要求が完了したときに NdisFOidRequestComplete 関数を呼び出さないようにする必要があります。