SET_OPTIONSコールバック関数 (ndis.h)
NDIS は、ドライバーの XxxSetOptions 関数を呼び出して、ドライバーがオプションのサービスを登録できるようにします。 この関数は、ミニポート ドライバー、プロトコル ドライバーの ProtocolSetOptions、またはフィルター ドライバーの FilterSetOptions の ミニポート セットOptions として定義されます。
構文
SET_OPTIONS SetOptions;
NDIS_STATUS SetOptions(
[in] NDIS_HANDLE NdisDriverHandle,
[in] NDIS_HANDLE DriverContext
)
{...}
パラメーター
[in] NdisDriverHandle
ドライバーを識別するハンドル。 NDIS は、ドライバー登録関数 (ミニポート ドライバーの場合は NdisMRegisterMiniportDriver、プロトコル ドライバーの 場合は NdisRegisterProtocolDriver、フィルター ドライバーの場合は ndisFRegisterFilterDriver ) からドライバーにこのハンドルを返します。
[in] DriverContext
ドライバーがドライバーコンテキスト領域を識別する NdisRegisterXxxDriver に渡されたハンドル。Xxx はドライバーの種類 (ミニポート、プロトコル、またはフィルター) です。
戻り値
XxxSetOptions は、次のいずれかの状態値を返します。
リターン コード | 形容 |
---|---|
|
XxxSetOptions、ドライバーのオプションのサービスとリソースを正常に登録しました。 |
|
XxxSetOptions は、ドライバーに必要なリソースを割り当てませんでした。 |
|
ドライバーの登録オプションの試行に失敗しました。 通常、このようなエラー状態は、NdisXxx関数またはカーネル モード サポート ルーチン から伝達されます。 |
備考
XxxSetOptions は省略可能な関数です。 NDIS 呼び出し XxxSetOptions へのドライバーの呼び出しのコンテキスト内で NdisRegisterXxxDriver 関数。Xxx はドライバーの種類 (ミニポート、プロトコル、またはフィルター) です。
XxxSetOptions はオプションのサービスを登録し、他のドライバー リソースを割り当てることができます。 省略可能な ミニポートXxx、ProtocolXxx、または FilterXxx 関数を するには、ドライバーは、NdisSetOptionalHandlers 関数を呼び出します。 ドライバーは、NdisSetOptionalHandlers の NdisHandle パラメーターで NdisDriverHandle パラメーターからハンドルを渡し、OptionalHandlers パラメーターで特性構造体を渡します。
ミニポート ドライバーは、次の特性構造で定義されている省略可能なサービスに適用できます。
- NDIS_MINIPORT_CO_CHARACTERISTICS
- NDIS_MINIPORT_PNP_CHARACTERISTICS
- NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS
- NDIS_PROVIDER_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS(NDIS 6.0 TCP の に関するドキュメントを参照)
- NDIS_PROVIDER_CHIMNEY_OFFLOAD_TCP_CHARACTERISTICS(NDIS 6.0 TCP の のオフロードドキュメント参照)
プロトコル ドライバーは、次の特性構造で定義されているオプションのサービスに適用できます。
- NDIS_PROTOCOL_CO_CHARACTERISTICS
- NDIS_CO_CLIENT_OPTIONAL_HANDLERS
- NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS
現在の Windows バージョンには、オプションのフィルター ドライバー サービスはありません。
NDIS は、ドライバーの他の ミニポートXxx、ProtocolXxx、または FilterXxx 関数をいつでも呼び出すことができます XxxSetOptions が返されます。 ドライバーは、初期化関数で呼び出されるように準備する必要があります。(ミニポート ドライバーの場合はミニポートInitializeEx、プロトコル ドライバーの場合は ProtocolBindAdapterEx 、フィルター ドライバーの場合は FilterAttach )。
ミニポート ドライバーの場合、ミニポート アダプターは、NDIS 呼び出し ミニポートInitializeEx前に 停止 状態です。 プロトコル ドライバーの場合、NDIS が ProtocolBindAdapterEx を呼び出す前に、プロトコル バインドは Unbound 状態。 フィルター ドライバーの場合、フィルター モジュールは、NDIS が FilterAttach を呼び出す前に、デタッチ 状態。
リソースまたはサービスの割り当てが失敗した場合、xxxSetOptions は、NDIS_STATUS_SUCCESS以外の状態のコントロールを返す前に、成功したすべての割り当てを元に戻す必要があります。
ミニポートドライバーとフィルター ドライバーの XxxDriverUnload は、XxxSetOptions で実行されたすべての操作 元に戻す必要があります
NDIS は、IRQL = PASSIVE_LEVEL で XxxSetOptions 呼び出します。
の例
XxxSetOptions 関数を定義するには、まず、定義する関数の型を識別する関数宣言を指定する必要があります。 Windows には、ドライバーの関数の種類のセットが用意されています。 関数の種類を使用して関数を宣言すると、ドライバー のコード分析、静的ドライバー検証ツール (SDV)、およびその他の検証ツールをすると、エラーが検出され、Windows オペレーティング システムのドライバーを記述するための要件になります。Ndis.h ヘッダー ファイルでは、SET_OPTIONSコールバック関数は、次のようにさらに定義されます。
typedef SET_OPTIONS (*SET_OPTIONS_HANDLER);
typedef SET_OPTIONS (MINIPORT_SET_OPTIONS);
typedef SET_OPTIONS (PROTOCOL_SET_OPTIONS);
typedef SET_OPTIONS (FILTER_SET_OPTIONS);
これにより、すべての NDIS ドライバーが、同じ構文で XxxSetOptions コールバック関数を実装できます。 ミニポート ドライバーは MINIPORT_SET_OPTIONS の種類を使用し、プロトコル ドライバーは PROTOCOL_SET_OPTIONS の種類を使用し、フィルター ドライバーは FILTER_SET_OPTIONS の種類を使用します。
たとえば、"MySetOptions" という名前の ミニポート セットOptions 関数を定義するには、次のコード例に示すように MINIPORT_SET_OPTIONS 型を使用します。
MINIPORT_SET_OPTIONS MySetOptions;
次に、次のように関数を実装します。
_Use_decl_annotations_
NDIS_STATUS
MySetOptions(
NDIS_HANDLE NdisDriverHandle,
NDIS_HANDLE DriverContext
)
{...}
SET_OPTIONS 関数の種類は、Ndis.h ヘッダー ファイルで定義されています。 コード分析ツールの実行時にエラーをより正確に識別するには、Use_decl_annotations 注釈を関数定義に追加してください。 Use_decl_annotations 注釈により、ヘッダー ファイル内の SET_OPTIONS 関数型に適用される注釈が確実に使用されます。 関数宣言の要件の詳細については、「ndis ドライバーの の関数の役割の種類を使用して関数を宣言するを参照してください。
Use_decl_annotationsの詳細については、「関数の動作に注釈を付ける」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | NDIS 6.0 以降でサポートされています。 |
ターゲット プラットフォーム の | ウィンドウズ |
ヘッダー | ndis.h (Ndis.h を含む) |
IRQL | PASSIVE_LEVEL |
関連項目
NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS NDIS_CO_CLIENT_OPTIONAL_HANDLERS NDIS_PROTOCOL_CO_CHARACTERISTICSNdisOpenAdapterEx の
NdisRegisterProtocolDriver の