NdisRequest 関数 (ndis.h)
注 NDIS 5 です。 x は非推奨となり、NDIS 6 に置き換えられます。 x をします。 新しい NDIS ドライバーの開発については、「Windows Vista 以降のネットワーク ドライバーを参照してください。 NDIS 5 の移植に関する情報。 NDIS 6 に x ドライバーを します。 x、NDIS 6.0 に NDIS 5.x ドライバーを移植するを参照してください。
NdisRequest 、NIC の機能または状態を照会したり、NIC の状態を設定したりする要求を基になるドライバーに転送します。
構文
void NdisRequest(
[out] PNDIS_STATUS Status,
[in] NDIS_HANDLE NdisBindingHandle,
[in] PNDIS_REQUEST NdisRequest
);
パラメーター
[out] Status
この関数からの戻り値に設定された呼び出し元が指定した変数へのポインター。 基になるドライバーは、XXXが返されるNDIS_STATUS_を決定しますが、通常は次のいずれかの値です。
NDIS_STATUS_SUCCESS
要求された操作が正常に完了しました。NDIS_STATUS_PENDING
要求は非同期的に処理されており、呼び出し元の ProtocolRequestComplete 関数は完了時に呼び出されます。NDIS_STATUS_INVALID_OID
ndisRequest のNDIS_REQUEST構造化バッファーの Oid メンバーで指定された OID_XXX コードが無効であるか、基になるドライバーでサポートされていません。NDIS_STATUS_INVALID_LENGTHまたはNDIS_STATUS_BUFFER_TOO_SHORT
NdisRequest のNDIS_REQUEST構造化バッファーの InformationBufferLength メンバーで指定された値が、指定されたOID_XXX コードの要件と一致しません。 情報バッファーが小さすぎる場合、BytesNeeded メンバーには、NdisRequestから返されるときに InformationBufferLength の正しい値が含まれます。NDIS_STATUS_INVALID_DATA
指定された NDIS_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 ドライバーは、現在ネットカードをリセットしているため、現時点では要求を満たすことはできません。 呼び出し元の ProtocolStatus 関数は、リセットが進行中であることを示すためにNDIS_STATUS_RESET_STARTで呼び出されました。または、呼び出されます。 この戻り値は、後で送信された同じ要求が同じ理由で失敗することを必ずしも示すわけではありません。NDIS_STATUS_FAILURE
通常、この値は非特定の既定値であり、より具体的なNDIS_STATUS_XXX によって基になるドライバーが要求に失敗しなかった場合に返されます。
[in] NdisBindingHandle
呼び出し元 バインドされている次の下位ドライバーのターゲット NIC または仮想アダプターを識別する NdisOpenAdapter によって返されるハンドルを指定します。
[in] NdisRequest
クエリまたはセットの特定のOID_ XXX コードで要求された操作を指定するバッファー構造へのポインター。
戻り値
何一つ
備考
プロトコル ドライバーは、要求する操作のOID_XXX に関連付けられている情報バッファーに十分なメモリを割り当てる必要があります。 また、ドライバーは、NdisRequest を呼び出す前に、NdisRequest でバッファー割り当てて設定する必要があります。 基になるドライバーは要求の処理中に発生した IRQL で実行されるため、両方のバッファーを非ページ プールから割り当てる必要があります。
中間 NDIS ドライバーの上に重ねられた呼び出し元の場合、NdisRequest は、独自の機能に関する情報を返すか、呼び出し元によって決定された方法で特定の機能を処理するようにドライバーに指示する次の下位ドライバーに要求を転送します。 次の下位ドライバーが NDIS 中間ドライバーの場合は、最初に上位レベルのプロトコルによって送信された要求を完了する前に、独自の OID 固有の要求で ndisRequest を呼び出すことができます。
状態 で返される一部のエラーは、次のような回復可能です。
NDIS_STATUS_INVALID_OID
NDIS_STATUS_INVALID_LENGTH
NDIS_STATUS_BUFFER_TOO_SHORT
NDIS_STATUS_INVALID_DATA
NDIS_STATUS_RESOURCES
NDIS_STATUS_RESET_IN_PROGRESS
つまり、ドライバーは、NdisRequest のパケットを適切に変更して、OID_XXX コードや、InformationBuffer のバッファーのサイズまたは内容 修正し、NdisRequest 要求パケットを再送信できます。 元の呼び出しでリセットが進行中であることが示された場合、またはリソース不足 (一時的な可能性があります) によって要求が実行されない場合は、NdisRequest を 再送信時に同じパケットが満たされる可能性があります。
NDIS ライブラリは、基になるミニポート ドライバーのバインドを維持します。 NDIS は、特定の OID が、システムがフィルター ライブラリを提供するシステム定義の中の種類に関連付けられている場合、バインド固有のクエリの情報を返すことができます。
一般的な OID とメディア固有の OID とそれぞれの関連情報バッファーの詳細については、「NDIS オブジェクト識別子 を参照してください。
- ターゲット プラットフォーム: ユニバーサル
- バージョン: Windows Vista の NDIS 6.0 ドライバーではサポートされていません。 代わりに、NdisOidRequest使用してください。 Windows Vista および Windows XP の NDIS 5.1 ドライバーでサポートされています。
必要条件
要件 | 価値 |
---|---|
ヘッダー | ndis.h (Ndis.h を含む) |
ライブラリ | Ndis.lib |
IRQL | IRQL <= DISPATCH_LEVEL |