NdisCoOidRequest 関数 (ndis.h)
NdisCoOidRequest 関数は、対象の CoNDIS ドライバーに要求を転送して、ターゲット ドライバーの OID 指定の情報を照会または設定します。
構文
NDIS_STATUS NdisCoOidRequest(
[in] NDIS_HANDLE NdisBindingHandle,
[in, optional] NDIS_HANDLE NdisAfHandle,
[in, optional] NDIS_HANDLE NdisVcHandle,
[in, optional] NDIS_HANDLE NdisPartyHandle,
[in, out] PNDIS_OID_REQUEST OidRequest
);
パラメーター
[in] NdisBindingHandle
バインドのターゲット アダプターを識別する NdisOpenAdapterEx 関数が返したハンドル。
[in, optional] NdisAfHandle
クライアント、通話マネージャー、NDIS 間で共有されるアドレス ファミリ (AF) を識別するハンドル。 このハンドルは次のように取得されました。
- 呼び出し元が呼び出しマネージャーに対して要求を行っているクライアントである場合、クライアントは最初に、 への正常な呼び出しからこのハンドルを取得しました。 NdisClOpenAddressFamilyEx 関数。
- 呼び出し元がクライアントへの要求を行っているスタンドアロンの呼び出しマネージャーまたはミニポート呼び出しマネージャー (MCM) の場合、呼び出しマネージャーまたは MCM は、最初に ProtocolCmOpenAf 関数への入力パラメーターとしてこのハンドルを取得しました。
[in, optional] NdisVcHandle
呼び出し元が要求している仮想接続 (VC) を識別するハンドル。要求が VC 固有の場合は、情報を設定します。 それ以外の場合、このパラメーターが NULL の場合、要求は VC 固有ではありません。 VC 固有の要求の場合、呼び出し元は、 NdisCoCreateVc 関数を使用して VC を作成したとき、または ProtocolCoCreateVc 関数への入力パラメーターとして、最初にこのハンドルを取得しました。 基になるミニポート ドライバーに送信される VC 固有の要求の場合、このハンドルは VC を識別しますが、 NdisAfHandle と NdisPartyHandle は NULL です。
[in, optional] NdisPartyHandle
要求がパーティ固有の場合に、呼び出し元が要求しているマルチポイント VC 上のパーティを識別するハンドル。または情報を設定します。 それ以外の場合、このパラメーターが NULL の場合、要求はパーティ固有ではありません。 パーティ固有の要求の場合、クライアントは、最初に NdisClAddParty 関数または NdisClMakeCall 関数または呼び出しマネージャーへの正常な呼び出しからこのハンドルを取得し、その ProtocolCmAddParty 関数への入力パラメーターとしてこのハンドルを取得しました。 NdisAfHandle が NULL の場合、NdisPartyHandle も NULL になります。
[in, out] OidRequest
特定のOID_XXX コードを使用してクエリを実行したり、情報を設定したりするために要求される操作を指定するNDIS_OID_REQUEST構造体へのポインター。
戻り値
ターゲット ドライバーは、どのNDIS_STATUS_XXX コード NdisCoOidRequest が返すかを決定します。通常、次のいずれかの値です。
リターン コード | 説明 |
---|---|
|
要求操作が正常に完了しました。 |
|
要求は非同期的に処理されており、NDIS は呼び出し元の を呼び出します。要求が完了したときに ProtocolCoOidRequestComplete 関数。 |
|
OidRequest パラメーターのNDIS_OID_REQUEST構造体の Oid メンバーで指定されたOID_XXX コードが無効であるか、基になるドライバーではサポートされていません。 |
|
OidRequest のNDIS_OID_REQUEST構造化バッファーの InformationBufferLength メンバーで指定された値が、指定されたOID_XXX コードの要件と一致しません。 情報バッファーが小さすぎる場合、NdisCoOidRequest が返されるときに、NDIS_OID_REQUEST の BytesNeeded メンバーには InformationBufferLength の正しい値が含まれます。 |
|
指定されたNDIS_OID_REQUEST構造体の InformationBuffer で指定されたデータは、指定されたOID_XXX コードに対して無効です。 |
|
基になるドライバーは、要求された操作をサポートしていません。 |
|
リソースが不足しているため、要求を満たできませんでした。 通常、この戻り値は、メモリの割り当て試行が失敗したことを示しますが、同じ要求が後で送信された場合、同じ理由で失敗するとは限りません。 |
|
基になるドライバーは、要求された操作 (通常はセット要求) を試行しましたが、操作は失敗しました。 たとえば、マルチキャスト アドレスを設定しようとすると、 NdisCoOidRequest がこの値を返す可能性があります。 |
|
閉じる操作が進行中のため、基になるドライバーが要求された操作に失敗しました。 |
|
基になるミニポート ドライバーは、現在影響を受ける NIC をリセットしているため、現時点では要求を満たすことはできません。 呼び出し元の ProtocolStatusEx 関数は、リセットが進行中であることを示すために、NDIS_STATUS_RESET_STARTで 呼び出されました。または 呼び出されます。 この戻り値は、同じ要求 (後で送信された場合) が同じ理由で失敗することを必ずしも示すわけではありません。 |
|
通常、この値は、より具体的な NDIS_STATUS_XXX が原因で基になるドライバーが要求を失敗させた場合に返される非特定の既定値です。 |
|
ミニポート ドライバーは、要求の処理を停止しました。 たとえば、NDIS は基になるミニポート ドライバーの ミニポートResetEx または MiniportCancelOidRequest 関数。 |
注釈
CoNDIS クライアントとスタンドアロン呼び出しマネージャーは 、NdisCoOidRequest 関数を呼び出して、OID 要求を送信して、ターゲット ドライバーで OID 指定の情報を照会または設定できます。 ターゲット ドライバーには、別の CoNDIS プロトコル ドライバーまたは基になるドライバーを指定できます。
NdisCoOidRequest の呼び出し元は、指定された OID に関連付けられている情報バッファーを保持するのに十分なメモリを割り当てる必要があります。 呼び出し元は、NdisCoOidRequest を呼び出す前に、OidRequest でバッファーを割り当てて設定する必要もあります。 ターゲット ドライバーは要求の処理中に発生した IRQL で実行できるため、両方のバッファーを非ページ プールから割り当てる必要があります。
NdisCoOidRequest が返す一部のエラーは、次のような回復可能です。
- 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
NdisAfHandle パラメーターの値に応じて、クライアントとスタンドアロン呼び出しマネージャーは NdisCoOidRequest を呼び出して相互に通信するか、基になる接続指向ミニポート ドライバーと通信します。
ドライバーが NdisVcHandle の NULL を渡す場合、要求は、要求がクライアント、呼び出しマネージャー、またはミニポート ドライバーに送信されるかどうかに関係なく、本質的にグローバルです。 たとえば、呼び出し元が NdisVcHandle に NULL 以外の値を指定した場合、基になる接続指向ミニポート ドライバーに対するOID_GEN_CO_RCV_CRC_ERROR OID 要求は、特定の VC に対して発生した巡回冗長チェック (CRC) エラーの数を返します。 NdisVcHandle の NULL を持つ同じ要求の場合、基になるミニポート ドライバーは、すべての VC で発生した CRC エラーの合計数を返します。
クライアントとスタンドアロンの呼び出しマネージャーは、接続指向ではないすべての OID に対して NdisOidRequest 関数を呼び出す必要があります。たとえば、プロトコル ドライバーが基になる NIC ドライバーにバインドした後、初期化中に一般的に発行される OID_GEN_SUPPORTED_LIST クエリで返される OID などです。
NdisCoOidRequest がNDIS_STATUS_PENDINGを返す場合、要求は非同期的に処理され、NDIS はドライバーの を呼び出します。要求が完了したときに ProtocolCoOidRequestComplete 関数。 NdisCoOidRequest が他の状態を返す場合、NdisCoOidRequest が返されるときに要求は完了し、NDIS は ProtocolCoOidRequestComplete を呼び出しません。
NdisCoOidRequest および NdisOidRequest で使用するように定義されている OID のセットの詳細については、「NDIS OID」を参照してください。
クライアントとスタンドアロン呼び出しマネージャー (プロトコル ドライバー) のみが NdisCoOidRequest を呼び出すことができます。 MCM は NdisMCmOidRequest 関数を呼び出して、クライアントと通信します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | NDIS 6.0 以降でサポートされています。 |
対象プラットフォーム | デスクトップ |
Header | ndis.h (Ndis.h を含む) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 | Irql_Connection_Function(ndis) |