NDIS フィルター ドライバーからの OID 要求の生成

フィルター ドライバーは、NdisFOidRequest 関数を呼び出すことによって、OID 要求の送信、または基になるドライバーへの要求の設定を行います。

次の図は、フィルター ドライバーが送信する OID 要求を示しています。

Diagram illustrating an OID request originated by an NDIS filter driver.

フィルター ドライバーが 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 は FilterOidRequestCompleteOidRequest パラメーターで要求の結果を渡します。 NDIS は、FilterOidRequestCompleteStatus パラメーターで要求の最終的な状態を渡します。

NdisFOidRequest が NDIS_STATUS_SUCCESS を返す場合は、NDIS_OID_REQUEST 構造体の OidRequest パラメーターにクエリ要求の結果を返します。 この場合、NDIS は FilterOidRequestComplete 関数を呼び出しません。

ドライバーは、RestartingRunningPausing、または Paused 状態のときに NdisFOidRequest を呼び出すことができます。

注: フィルター ドライバーは、送信した OID 要求を追跡し、このような要求が完了したときに NdisFOidRequestComplete 関数を呼び出さないようにする必要があります。