MINIPORT_CO_OID_REQUEST コールバック関数 (ndis.h)
MiniportCoOidRequest 関数は、CoNDIS ミニポート ドライバーの情報を照会または設定するための OID 要求を処理します。
構文
MINIPORT_CO_OID_REQUEST MiniportCoOidRequest;
NDIS_STATUS MiniportCoOidRequest(
[in] NDIS_HANDLE MiniportAdapterContext,
[in] NDIS_HANDLE MiniportVcContext,
PNDIS_OID_REQUEST NdisRequest
)
{...}
パラメーター
[in] MiniportAdapterContext
ミニポート ドライバーがそのミニポート 初期化Ex 関数で割り当てたコンテキスト領域へのハンドル。 ミニポート ドライバーは、ミニポート アダプターの状態情報を維持するこのコンテキスト領域を使用します。
[in] MiniportVcContext
ミニポート ドライバーが仮想接続 (VC) ごとの状態を維持するミニポート ドライバーによって割り当てられたコンテキスト領域へのハンドル。 ミニポート ドライバーは、 ミニポートCoCreateVc 関数から NDIS にこのハンドルを提供しました。 要求が VC 固有でない場合、このパラメーターは NULL です。
NdisRequest
ミニポート ドライバーが処理 するバッファーと要求パケットの両方を含むNDIS_OID_REQUEST構造体へのポインター。 要求に応じて、ドライバーは、このパラメーターが指す構造体で要求された情報を返します。
戻り値
MiniportCoOidRequest は、次のいずれかの状態値を返すことができます。
リターン コード | 説明 |
---|---|
|
ミニポート ドライバーは、要求に応じてデータを設定または取得します。 |
|
ミニポート ドライバーは、非同期的に要求を完了します。 ミニポート ドライバーがすべての処理を完了した後、 を呼び出す必要があります。 NdisMCoOidRequestComplete 関数を使用して、要求が完了したことを NDIS に通知します。 |
|
OidRequest パラメーターが指定した要求が無効であるか、認識されませんでした。 |
|
OidRequest パラメーターが指定された要求は認識されましたが、ミニポート ドライバーではサポートされていません。 |
|
OidRequest パラメーターが指定したバッファーが小さすぎて、要求されたデータを保持できませんでした。 |
|
OidRequest のNDIS_OID_REQUEST構造体の InformationBufferLength メンバーで指定された値が、指定したOID_XXX コードに対して正しくありません。 |
|
OidRequest iwas で要求に指定された 1 つ以上のパラメーターが無効です。 |
|
NDIS が を呼び出した後、 ミニポートDevicePnPEventNotify 関数は、突然の削除を示します。NDIS はドライバーの MiniportHaltEx 関数を 呼び出します。 NDIS が MiniportHaltEx を呼び出す前に、ドライバーが OID 要求を受け取った場合は、状態値が NDIS_STATUS_NOT_ACCEPTED ですぐにこのような要求を完了する必要があります。 |
|
ミニポート ドライバーは、要求の処理を停止しました。 たとえば、 NDIS は MiniportResetEx または と呼ばれます MiniportCancelOidRequest 関数。 |
注釈
NDIS は 、 MiniportCoOidRequest 関数を呼び出して、CoNDIS ミニポート ドライバーの情報を照会または設定するための OID 要求を処理します。
MiniportCoOidRequest を登録するには、ミニポート ドライバーは、MiniportSetOptions 関数から NdisSetOptionalHandlers 関数を呼び出します。 MiniportSetOptions では、ミニポート ドライバーは を初期化します。 構造体をNDIS_MINIPORT_CO_CHARACTERISTICSし、NdisSetOptionalHandlers の OptionalHandlers パラメーターで渡します。
NDIS は、独自の代わりに 、または NdisCoOidRequest 関数を呼び出したバインドされたプロトコル ドライバーの代わりに、 MiniportCoOidRequest 関数を 呼び出します。 ミニポート ドライバーは 、OidRequest で指定された要求を調べて、要求されたアクションを実行する必要があります。 ミニポート ドライバーが処理する OID の詳細については、「 NDIS OID」を参照してください。
NDIS は OidRequest で OID 固有の内容を検証しないことに注意してください。 したがって、ドライバー自体は、これらの内容を検証する必要があります。 ドライバーが設定する値が範囲外であると判断した場合は、要求を失敗させ、NDIS_STATUS_INVALID_DATAを返す必要があります。
MiniportCoOidRequest がNDIS_STATUS_PENDINGを返す場合、NDIS は、保留中の要求が完了する前に、MiniportAdapterContext で指定されたミニポート アダプターに対して、別の要求で MiniportCoOidRequest を呼び出すことができます。 NDIS では、接続指向 OID 要求はシリアル化されません。
例
MiniportCoOidRequest 関数を定義するには、まず、定義する関数の型を識別する関数宣言を指定する必要があります。 Windows には、ドライバーの関数型のセットが用意されています。 関数の種類を使用して関数を宣言すると、 ドライバーのコード分析、 静的ドライバー検証ツール (SDV)、およびその他の検証ツールでエラーが検出され、Windows オペレーティング システム用のドライバーを記述するための要件になります。たとえば、" MyCoOidRequest" という名前の MiniportCoOidRequest 関数を定義するには、次のコード例に示すように 、MINIPORT_CO_OID_REQUEST 型を使用します。
MINIPORT_CO_OID_REQUEST MyCoOidRequest;
次に、次のように関数を実装します。
_Use_decl_annotations_
NDIS_STATUS
MyCoOidRequest(
NDIS_HANDLE MiniportAdapterContext,
NDIS_HANDLE MiniportVcContext,
PNDIS_OID_REQUEST OidRequest
)
{...}
MINIPORT_CO_OID_REQUEST関数の種類は、Ndis.h ヘッダー ファイルで定義されます。 コード分析ツールを実行するときにエラーをより正確に識別するには、 Use_decl_annotations 注釈を関数定義に追加してください。 Use_decl_annotations注釈を使用すると、ヘッダー ファイル内のMINIPORT_CO_OID_REQUEST関数型に適用される注釈が確実に使用されます。 関数宣言の要件の詳細については、「NDIS ドライバーの関数 ロール型を使用して関数を宣言する」を参照してください。
Use_decl_annotationsの詳細については、「関数の動作に注釈を付ける」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | NDIS 6.0 以降でサポートされています。 |
対象プラットフォーム | Windows |
ヘッダー | ndis.h (Ndis.h を含む) |
IRQL | <= DISPATCH_LEVEL |