フィルター エンジンは、引き出しドライバーの classifyFn 吹き出し関数を呼び出すと、layerData パラメーター内の構造体へのポインターを渡します。 パケット データをフィルター処理するレイヤーの場合、ポインターはNET_BUFFER_LIST構造体を参照します。 classifyFn 吹き出し関数が呼び出されるフィルターレイヤーに応じて、フィルター エンジンは layerData* パラメーター内のポインターを次のいずれかの構造体に渡します。
ストリーム レイヤーの場合、layerData パラメーターには、FWPS_STREAM_CALLOUT_IO_PACKET0構造体へのポインターが含まれます。 この構造体の streamData メンバーには、FWPS_STREAM_DATA0構造体へのポインターが含まれています。
FWPS_STREAM_DATA0構造体の netBufferListChain メンバーには、NET_BUFFER_LIST構造体へのポインターが含まれています。
他のすべてのレイヤーについて、layerData パラメーターには、NET_BUFFER_LIST構造体へのポインターが含まれています。
Note
layerData パラメーターは、フィルター処理されるレイヤーと、ドライバーの classifyFn 吹き出し関数が呼び出される条件に応じて NULL になる場合があります。
NET_BUFFER_LIST構造体には、NET_BUFFER構造体のリンクされたリストが含まれています。 各NET_BUFFER構造体のNET_BUFFER_DATA構造内で、DataOffset メンバーはパケット データ内の特定の位置を指します。 DataOffset メンバーが指す位置は、フィルター エンジンが引き出しドライバーの classifyFn 吹き出し関数を呼び出すフィルターレイヤーによって異なります。
各フィルター レイヤーについて、DataOffset メンバーによって指定されたパケット データ内の位置は次のように定義されます。
ランタイム フィルター レイヤー識別子 (Windows Vista 以降) | パケット・データ内の位置 |
---|---|
FWPS_LAYER_INBOUND_IPPACKET_V4 FWPS_LAYER_INBOUND_IPPACKET_V6 |
トランスポート ヘッダーの先頭。 |
FWPS_LAYER_INBOUND_IPPACKET_V4_DISCARD FWPS_LAYER_INBOUND_IPPACKET_V6_DISCARD |
TCP/IP スタックが処理を停止したオフセット。 |
FWPS_LAYER_OUTBOUND_IPPACKET_V4 FWPS_LAYER_OUTBOUND_IPPACKET_V6 |
IP ヘッダーの先頭。 |
FWPS_LAYER_OUTBOUND_IPPACKET_V4_DISCARD FWPS_LAYER_OUTBOUND_IPPACKET_V6_DISCARD |
TCP/IP スタックが処理を停止したオフセット。 |
FWPS_LAYER_IPFORWARD_V4 FWPS_LAYER_IPFORWARD_V6 |
IP ヘッダーの先頭。 |
FWPS_LAYER_IPFORWARD_V4_DISCARD FWPS_LAYER_IPFORWARD_V6_DISCARD |
IP ヘッダーの先頭。 |
FWPS_LAYER_INBOUND_TRANSPORT_V4 FWPS_LAYER_INBOUND_TRANSPORT_V6 |
データの先頭。 注: TCP/IP スタックの ICMP ソケットで受信されたインバウンド・パケットの場合、オフセットは ICMP ヘッダーの先頭です。
|
FWPS_LAYER_INBOUND_TRANSPORT_V4_DISCARD FWPS_LAYER_INBOUND_TRANSPORT_V6_DISCARD |
データの先頭。 注: TCP/IP スタックの ICMP ソケットで受信されたインバウンド・パケットの場合、オフセットは ICMP ヘッダーの先頭です。
|
FWPS_LAYER_OUTBOUND_TRANSPORT_V4 FWPS_LAYER_OUTBOUND_TRANSPORT_V6 |
トランスポート ヘッダーの先頭。 |
FWPS_LAYER_OUTBOUND_TRANSPORT_V4_DISCARD FWPS_LAYER_OUTBOUND_TRANSPORT_V6_DISCARD |
トランスポート ヘッダーの先頭。 |
FWPS_LAYER_STREAM_V4 FWPS_LAYER_STREAM_V6 |
データの先頭。 注 パケット データ内の位置には、IP、IPv6、およびトランスポート ヘッダーが含まれていません。
|
FWPS_LAYER_STREAM_V4_DISCARD FWPS_LAYER_STREAM_V6_DISCARD |
データの先頭。 注 パケット データ内の位置には、IP、IPv6、またはトランスポート ヘッダーが含まれていません。
|
FWPS_LAYER_DATAGRAM_DATA_V4 FWPS_LAYER_DATAGRAM_DATA_V6 |
受信データグラムの場合: データの先頭。 注: TCP/IP スタックの ICMP ソケットで受信されたインバウンド・パケットの場合、オフセットは ICMP ヘッダーの先頭です。
アウトバウンドデータグラムの場合: トランスポートヘッダーの始まり。 |
FWPS_LAYER_DATAGRAM_DATA_V4_DISCARD FWPS_LAYER_DATAGRAM_DATA_V6_DISCARD |
受信データグラムの場合: データの先頭。 注: TCP/IP スタックの ICMP ソケットで受信されたインバウンド・パケットの場合、オフセットは ICMP ヘッダーの先頭です。
アウトバウンドデータグラムの場合: トランスポートヘッダーの始まり。 |
FWPS_LAYER_INBOUND_ICMP_ERROR_V4 FWPS_LAYER_INBOUND_ICMP_ERROR_V6 |
内部 IP ヘッダーの先頭。 |
FWPS_LAYER_INBOUND_ICMP_ERROR_V4_DISCARD FWPS_LAYER_INBOUND_ICMP_ERROR_V6_DISCARD |
内部 IP ヘッダーの先頭。 |
FWPS_LAYER_OUTBOUND_ICMP_ERROR_V4 FWPS_LAYER_OUTBOUND_ICMP_ERROR_V6 |
ICMP ヘッダーの先頭。 |
FWPS_LAYER_OUTBOUND_ICMP_ERROR_V4_DISCARD FWPS_LAYER_OUTBOUND_ICMP_ERROR_V6_DISCARD |
ICMP ヘッダーの先頭。 |
FWPS_LAYER_ALE_RESOURCE_ASSIGNMENT_V4 FWPS_LAYER_ALE_RESOURCE_ASSIGNMENT_V6 |
適用不可。 |
FWPS_LAYER_ALE_RESOURCE_ASSIGNMENT_V4_DISCARD FWPS_LAYER_ALE_RESOURCE_ASSIGNMENT_V6_DISCARD |
適用不可。 |
FWPS_LAYER_ALE_AUTH_LISTEN_V4 FWPS_LAYER_ALE_AUTH_LISTEN_V6 |
適用不可。 |
FWPS_LAYER_ALE_AUTH_LISTEN_V4_DISCARD FWPS_LAYER_ALE_AUTH_LISTEN_V6_DISCARD |
適用不可。 |
FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V4 FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V6 |
受信パケット方向の場合: データの先頭。 注: TCP/IP スタックの ICMP ソケットで受信されたインバウンド・パケットの場合、オフセットは ICMP ヘッダーの先頭です。
アウトバウンドパケット方向の場合: トランスポートヘッダーの先頭。 |
FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V4_DISCARD FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V6_DISCARD |
受信パケット方向の場合: データの先頭。 注: TCP/IP スタックの ICMP ソケットで受信されたインバウンド・パケットの場合、オフセットは ICMP ヘッダーの先頭です。
アウトバウンドパケット方向の場合: トランスポートヘッダーの先頭。 |
FWPS_LAYER_ALE_AUTH_CONNECT_V4 FWPS_LAYER_ALE_AUTH_CONNECT_V6 |
非 TCP トラフィックの場合: トランスポート ヘッダーの先頭。 TCP トラフィックの場合:該当なし。 |
FWPS_LAYER_ALE_AUTH_CONNECT_V4_DISCARD FWPS_LAYER_ALE_AUTH_CONNECT_V6_DISCARD |
非 TCP トラフィックの場合: トランスポート ヘッダーの先頭。 TCP トラフィックの場合:該当なし。 |
FWPS_LAYER_ALE_FLOW_ESTABLISHED_V4 FWPS_LAYER_ALE_FLOW_ESTABLISHED_V6 |
受信パケット方向の場合: データの先頭。 注: TCP/IP スタックの ICMP ソケットで受信されたインバウンド・パケットの場合、オフセットは ICMP ヘッダーの先頭です。
アウトバウンドパケット方向の場合: トランスポートヘッダーの先頭。 |
FWPS_LAYER_ALE_FLOW_ESTABLISHED_V4_DISCARD FWPS_LAYER_ALE_FLOW_ESTABLISHED_V6_DISCARD |
受信パケット方向の場合: データの先頭。 注: TCP/IP スタックの ICMP ソケットで受信されたインバウンド・パケットの場合、オフセットは ICMP ヘッダーの先頭です。
アウトバウンドパケット方向の場合: トランスポートヘッダーの先頭。 |
FWPS_LAYER_IPSEC_KM_DEMUX_V4 FWPS_LAYER_IPSEC_KM_DEMUX_V6 |
適用不可。 |
FWPS_LAYER_IPSEC_V4 FWPS_LAYER_IPSEC_V6 |
適用不可。 |
FWPS_LAYER_IKEEXT_V4 FWPS_LAYER_IKEEXT_V6 |
適用不可。 |
FWPS_LAYER_RPC_UM |
適用不可。 |
FWPS_LAYER_RPC_EPMAP |
適用不可。 |
FWPS_LAYER_RPC_EP_ADD |
適用不可。 |
FWPS_LAYER_RPC_PROXY_CONN |
適用不可。 |
FWPS_LAYER_RPC_PROXY_IF |
適用不可。 |
ランタイム フィルター レイヤー識別子 (Windows 7 以降) | パケット・データ内の位置 |
FWPS_LAYER_NAME_RESOLUTION_CACHE_V4 FWPS_LAYER_NAME_RESOLUTION_CACHE_V6 |
適用不可。 |
FWPS_LAYER_ALE_RESOURCE_RELEASE_V4 FWPS_LAYER_ALE_RESOURCE_RELEASE_V6 |
適用不可。 |
FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V4 FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V6 |
適用不可。 |
FWPS_LAYER_ALE_CONNECT_REDIRECT_V4 FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 |
適用不可。 注: これらのフィルター レイヤーの場合、layerData パラメーターには、FWPS_CONNECT_REQUEST0構造体へのポインターが含まれています。 この構造体は、パケット データを 記述するNET_BUFFER_LIST 構造体を参照しません。
|
FWPS_LAYER_ALE_BIND_REDIRECT_V4 FWPS_LAYER_ALE_BIND_REDIRECT_V6 |
適用不可。 注: これらのフィルター レイヤーの場合、layerData パラメーターには、FWPS_BIND_REQUEST0構造体へのポインターが含まれています。 この構造体は、パケット データを 記述するNET_BUFFER_LIST 構造体を参照しません。
|
FWPS_LAYER_STREAM_PACKET_V4 FWPS_LAYER_STREAM_PACKET_V6 |
受信パケット方向の場合: データの先頭。 アウトバウンドパケット方向の場合: トランスポートヘッダーの先頭。 |
FWPS_LAYER_KM_AUTHORIZATION |
適用不可。 |
ランタイム フィルター レイヤー識別子 (Windows 8以降) | パケット・データ内の位置 |
FWPS_LAYER_INBOUND_MAC_FRAME_ETHERNET |
IP ヘッダーの先頭。 |
FWPS_LAYER_OUTBOUND_MAC_FRAME_ETHERNET |
MAC ヘッダーの先頭。 |
FWPS_LAYER_INBOUND_MAC_FRAME_NATIVE |
MAC ヘッダーの先頭。 |
FWPS_LAYER_OUTBOUND_MAC_FRAME_NATIVE |
MAC ヘッダーの先頭。 |
FWPS_LAYER_INGRESS_VSWITCH_ETHERNET |
イーサネットヘッダーの始まり。 |
FWPS_LAYER_EGRESS_VSWITCH_ETHERNET |
イーサネットヘッダーの始まり。 |
FWPS_LAYER_INGRESS_VSWITCH_TRANSPORT_V4 |
IP ヘッダーの先頭。 |
FWPS_LAYER_INGRESS_VSWITCH_TRANSPORT_V6 |
IP ヘッダーの先頭。 |
FWPS_LAYER_EGRESS_VSWITCH_TRANSPORT_V4 |
IP ヘッダーの先頭。 |
FWPS_LAYER_EGRESS_VSWITCH_TRANSPORT_V6 |
IP ヘッダーの先頭。 |