次の方法で共有


SET_OPTIONSコールバック関数 (ndis.h)

NDIS は、ドライバーの XxxSetOptions 関数を呼び出して、ドライバーがオプションのサービスを登録できるようにします。 この関数は、ミニポート ドライバー、プロトコル ドライバーの ProtocolSetOptions、またはフィルター ドライバーの FilterSetOptionsミニポート セットOptions として定義されます。

Xxx_SET_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 は、次のいずれかの状態値を返します。

リターン コード 形容
NDIS_STATUS_SUCCESS
XxxSetOptions、ドライバーのオプションのサービスとリソースを正常に登録しました。
NDIS_STATUS_RESOURCES
XxxSetOptions は、ドライバーに必要なリソースを割り当てませんでした。
NDIS_STATUS_XXX またはNTSTATUS_XXX
ドライバーの登録オプションの試行に失敗しました。 通常、このようなエラー状態は、NdisXxx関数またはカーネル モード サポート ルーチン から伝達されます。

備考

XxxSetOptions は省略可能な関数です。 NDIS 呼び出し XxxSetOptions へのドライバーの呼び出しのコンテキスト内で NdisRegisterXxxDriver 関数。Xxx はドライバーの種類 (ミニポート、プロトコル、またはフィルター) です。

XxxSetOptions はオプションのサービスを登録し、他のドライバー リソースを割り当てることができます。 省略可能な ミニポートXxxProtocolXxx、または FilterXxx 関数を するには、ドライバーは、NdisSetOptionalHandlers 関数を呼び出します。 ドライバーは、NdisSetOptionalHandlersNdisHandle パラメーターで 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 は、ドライバーの他の ミニポートXxxProtocolXxx、または 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_CHARACTERISTICS

NdisOpenAdapterEx

NdisRegisterProtocolDriver

NdisSetOptionalHandlers

ProtocolBindAdapterEx