FILTER_RETURN_NET_BUFFER_LISTS コールバック関数 (ndis.h)
NDIS は FilterReturnNetBufferLists 関数を呼び出して、 NET_BUFFER_LIST 構造体と関連付けられたデータのリンクされたリストをフィルター ドライバーに返します。
構文
FILTER_RETURN_NET_BUFFER_LISTS FilterReturnNetBufferLists;
void FilterReturnNetBufferLists(
[in] NDIS_HANDLE FilterModuleContext,
[in] PNET_BUFFER_LIST NetBufferLists,
[in] ULONG ReturnFlags
)
{...}
パラメーター
[in] FilterModuleContext
フィルター モジュールのコンテキスト領域へのハンドル。 フィルター ドライバーは、 FilterAttach 関数でこのコンテキスト領域を作成および初期化しました。
[in] NetBufferLists
フィルター ドライバーが を呼び出して示した NET_BUFFER_LIST 構造体のリンクされた一覧 NdisFIndicateReceiveNetBufferLists 関数。 リストには、NdisFIndicateReceiveNetBufferLists への複数の呼び出しからNET_BUFFER_LIST構造体を含めることができます。
[in] ReturnFlags
OR 操作と組み合わせることができる NDIS フラグ。 すべてのフラグをクリアするには、このメンバーを 0 に設定します。この関数は、次のフラグをサポートしています。
NDIS_RETURN_FLAGS_DISPATCH_LEVEL
現在の IRQL がDISPATCH_LEVELされることを指定します。 このフラグの詳細については、「 ディスパッチ IRQL 追跡」を参照してください。
NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE
このフラグが設定されている場合、 NET_BUFFER_LIST 構造のリンクされたリスト内のすべてのパケットは、同じ Hyper-V 拡張可能スイッチのソース ポートから送信されます。
詳細については、「 Hyper-V 拡張可能スイッチの送受信フラグ」を参照してください。
戻り値
なし
解説
FilterReturnNetBufferLists は省略可能な関数です。 フィルター ドライバーが受信インジケーターをフィルター処理しない場合は、 を呼び出すときに、この関数のエントリ ポイントを NULL に設定できます。 NdisFRegisterFilterDriver 関数。
フィルター ドライバーは、 FilterSetModuleOptions 関数から NdisSetOptionalHandlers 関数を呼び出して、 フィルター モジュールの FilterReturnNetBufferLists 関数を指定できます。
基になるドライバーが受信表示を開始した場合、フィルター ドライバーは を呼び出す必要があります。 NdisFReturnNetBufferLists 関数を 使用して、受信表示を完了します。
フィルター ドライバーが受信表示を開始した場合、 FilterReturnNetBufferLists は、NET_BUFFER_LIST構造体と関連付けられたデータを解放するか、 NdisFIndicateReceiveNetBufferLists への後続の呼び出しで再利用できるように準備できます。
フィルター ドライバーは、開始した受信インジケーターを追跡し、 NDIS が FilterReturnNetBufferLists を呼び出すときに NdisFReturnNetBufferLists を呼び出していないことを確認 する必要があります。
NDIS は、IRQL <= DISPATCH_LEVELで FilterReturnNetBufferLists を呼び出します。
例
FilterReturnNetBufferLists 関数を定義するには、まず、定義する関数の型を識別する関数宣言を指定する必要があります。 Windows には、ドライバーの関数型のセットが用意されています。 関数の種類を使用して関数を宣言すると、 ドライバーのコード分析、 静的ドライバー検証ツール (SDV)、およびその他の検証ツールでエラーが検出され、Windows オペレーティング システム用のドライバーを記述するための要件になります。たとえば、" MyReturnNetBufferLists" という名前の FilterReturnNetBufferLists 関数を定義するには、次のコード例に示すように 、FILTER_RETURN_NET_BUFFER_LISTS 型を使用します。
FILTER_RETURN_NET_BUFFER_LISTS MyReturnNetBufferLists;
次に、次のように関数を実装します。
_Use_decl_annotations_
VOID
MyReturnNetBufferLists(
NDIS_HANDLE FilterModuleContext,
PNET_BUFFER_LIST NetBufferLists,
ULONG ReturnFlags
)
{...}
FILTER_RETURN_NET_BUFFER_LISTS関数の種類は、Ndis.h ヘッダー ファイルで定義されます。 コード分析ツールを実行するときにエラーをより正確に識別するには、 Use_decl_annotations 注釈を関数定義に追加してください。 Use_decl_annotations注釈を使用すると、ヘッダー ファイル内のFILTER_RETURN_NET_BUFFER_LISTS関数型に適用される注釈が確実に使用されます。 関数宣言の要件の詳細については、「NDIS ドライバーの関数 ロール型を使用して関数を宣言する」を参照してください。
Use_decl_annotationsの詳細については、「関数の動作に注釈を付ける」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | NDIS 6.0 以降でサポートされています。 |
対象プラットフォーム | Windows |
ヘッダー | ndis.h (Ndis.h を含む) |
IRQL | <= DISPATCH_LEVEL |
こちらもご覧ください
NdisFIndicateReceiveNetBufferListsフィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示