次の方法で共有


データ オフセット位置

フィルター エンジンは、引き出しドライバーの 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 ヘッダーの先頭。