NdisOidRequest 関数 (ndis.h)

NdisOidRequest 関数は、アダプターの機能または状態を照会したり、アダプターの状態を設定したりするために、基になるドライバーに要求を転送します。

構文

NDIS_STATUS NdisOidRequest(
  [in] NDIS_HANDLE       NdisBindingHandle,
  [in] PNDIS_OID_REQUEST OidRequest
);

パラメーター

[in] NdisBindingHandle

バインドのターゲット アダプターを識別する NdisOpenAdapterEx 関数によって返されるハンドル。

[in] OidRequest

アダプターの 状態を照会 するか、アダプターの状態を設定するために、特定のOID_XXX コードで要求された操作を指定するNDIS_OID_REQUEST構造体へのポインター。

戻り値

基になるドライバーは、NdisOidRequest が返すNDIS_STATUS_XXX コードを決定しますが、通常は次のいずれかの値です。

リターン コード 説明
NDIS_STATUS_SUCCESS
要求操作が正常に完了しました。
NDIS_STATUS_PENDING
要求は非同期的に処理されており、NDIS は呼び出し元の を呼び出します。要求が完了したときの ProtocolOidRequestComplete 関数。
NDIS_STATUS_INVALID_OID
OidRequest でNDIS_OID_REQUEST構造化バッファーの Oid メンバーで指定されたOID_XXX コードが無効であるか、基になるドライバーでサポートされていません。
NDIS_STATUS_INVALID_LENGTHまたはNDIS_STATUS_BUFFER_TOO_SHORT
OidRequest のNDIS_OID_REQUEST構造化バッファーの InformationBufferLength メンバーで指定された値が、指定されたOID_XXX コードの要件と一致しません。 情報バッファーが小さすぎる場合、BytesNeeded メンバーには NdisOidRequest からの戻り時に InformationBufferLength の正しい値が含まれます。
NDIS_STATUS_INVALID_DATA
指定されたNDIS_OID_REQUEST構造体の InformationBuffer で指定されたデータは、指定されたOID_XXX コードに対して無効です。
NDIS_STATUS_NOT_SUPPORTEDまたはNDIS_STATUS_NOT_RECOGNIZED
基になるドライバーは、要求された操作をサポートしていません。
NDIS_STATUS_RESOURCES
リソース不足のため、要求を満たできませんでした。 通常、この戻り値は、メモリの割り当て試行が失敗したことを示しますが、後で送信された同じ要求が同じ理由で失敗したとは限りません。
NDIS_STATUS_NOT_ACCEPTED
基になるドライバーは、要求された操作 (通常は NIC のセット) を試行しましたが、失敗しました。 たとえば、マルチキャスト アドレスを設定しようとすると、この値が返される可能性があります。
NDIS_STATUS_CLOSINGまたはNDIS_STATUS_CLOSING_INDICATING
閉じる操作が進行中のため、基になるドライバーが要求された操作に失敗しました。
NDIS_STATUS_RESET_IN_PROGRESS
基になるミニポート ドライバーは、現在影響を受ける NIC をリセットしているため、現時点では要求を満たすことはできません。 呼び出し元の ProtocolStatusEx 関数は、リセットが進行中であることを示すために、NDIS_STATUS_RESET_STARTで または 呼び出されます。 この戻り値は、後で送信された同じ要求が同じ理由で失敗することを必ずしも示すわけではありません。
NDIS_STATUS_FAILURE
通常、この値は非特定の既定値であり、基になるドライバーが要求に失敗する原因となったより具体的なNDIS_STATUS_XXX がない場合に返されます。

注釈

プロトコル ドライバーは、指定された OID に関連付けられている情報バッファーを保持するのに十分なメモリを割り当てる必要があります。 ドライバーは、NdisOidRequest を呼び出す前に、OidRequest でバッファーを割り当てて設定する必要もあります。 基になるドライバーは要求の処理中に発生した IRQL で実行されるため、両方のバッファーを非ページ プールから割り当てる必要があります。

NdisOidRequest は、基になるドライバーに要求を転送するか、要求自体を処理します。 次の下位ドライバーが NDIS 中間ドライバーの場合は、上位レベルのドライバーによって最初に送信された要求を完了する前に、独自の OID 固有の要求で NdisOidRequest を呼び出すことができます。

返される一部のエラーは、次のような回復可能です。

つまり、ドライバーは OidRequest のパケットを適切に変更して、OID_XXX コードまたは InformationBuffer のバッファーのサイズまたは内容を修正し、要求パケットを NdisOidRequest に再送信できます。 元の呼び出しでリセットが進行中であることが示された場合、またはリソース不足 (一時的な可能性があります) によって要求が実行されない場合は、 NdisOidRequest への再送信時に同じパケットが満たされる可能性があります。

NDIS ライブラリは、基になるミニポート ドライバーのバインドを維持します。 特定の OID が、システムがフィルター ライブラリを提供するシステム定義の中型に関連付けられている場合、NDIS はバインディング固有のクエリの情報を返すことができます。

一般的な OID とメディア固有の OID と、それぞれの関連情報バッファーの詳細については、「 NDIS OID」を参照してください。

要件

要件
サポートされている最小のクライアント NDIS 6.0 以降でサポートされています。
対象プラットフォーム デスクトップ
Header ndis.h (Ndis.h を含む)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 Irql_OID_Function(ndis)

こちらもご覧ください

NDIS_OID_REQUEST

NdisOpenAdapterEx

ProtocolOidRequestComplete

ProtocolStatusEx