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