ALE エンドポイント有効期間管理

アプリケーション層の強制 (ALE) をサポートするコールアウト ドライバーでは、表示を処理するためにリソースを割り当てる必要がある場合があります。 このトピックでは、関連付けられているエンドポイントが閉じられたときにこのようなリソースを解放するようにコールアウト ドライバーを構成する方法について説明します。 ALE エンドポイントの有効期間管理は、Windows 7 以降のバージョンの Windows でサポートされています。

ALE エンドポイントに関連付けられているリソースを管理するために、コールアウト ドライバーは次のレイヤーで登録できます。

  • FWPS_LAYER_ALE_RESOURCE_RELEASE_V4 (FWPM_LAYER_ALE_RESOURCE_RELEASE_V4)

  • FWPS_LAYER_ALE_RESOURCE_RELEASE_V6 (FWPM_LAYER_ALE_RESOURCE_RELEASE_V6)

  • FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V4 (FWPM_LAYER_ALE_ENDPOINT_CLOSURE_V4)

  • FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V6 (FWPM_LAYER_ALE_ENDPOINT_CLOSURE_V6)

ALE リソース リリース レイヤーは、対応する ALE リソース割り当てレイヤー (たとえば、FWPS_LAYER_ALE_RESOURCE_ASSIGNMENT_V4) のすべての表示に対して示されます。 コールアウト ドライバーがリリース レイヤーと割り当てレイヤーを一致させるために、FWPS_METADATA_FIELD_TRANSPORT_ENDPOINT_HANDLE メタデータ フィールドは両方のレイヤーに提供され、各エンドポイントには一意のハンドルが割り当てられます。

ALE エンドポイント クロージャ レイヤーは、エンドポイントの種類に応じて異なる方法で呼び出されます。 TCP 接続の場合、ALE エンドポイント クロージャは、ALE 承認接続レイヤー (FWPS_LAYER_ALE_AUTH_CONNECT_V4 など) または ALE 承認受信受け入れレイヤー (FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_V4 など) の表示ごとに示されます。 ALE リソースリリースの指示と同様に、エンジンはエンドポイントごとに一意のハンドルを割り当て、FWPS_METADATA_FIELD_TRANSPORT_ENDPOINT_HANDLE メタデータ フィールドに渡します。 TCP 以外のエンドポイントの場合、ソケットが通信する一意のリモート ピアの数に関係なく、エンドポイントごとに ALE エンドポイント クロージャ レイヤーが呼び出されます。 ALE エンドポイント クロージャ レイヤーは、TCP リッスン ソケットごとに呼び出されます。

ALE エンドポイント クロージャ レイヤーに登録されているコールアウトは、分類を保留できます。 これにより、エンドポイントがシャットダウンされる前に、非同期処理のためにキューに入ったパケットをコールアウトで再挿入できます。 分類を保留するには、コールアウト ドライバーは処理が完了したときに FwpsPendClassify0 を呼び出し、その後に FwpsCompleteClassify0 への呼び出しを行う必要があります。

該当する場合、エンジンは、FWPS_METADATA_FIELD_PARENT_ENDPOINT_HANDLE メタデータ フィールドの親エンドポイントの一意のハンドルを示します。 これにより、コールアウト ドライバーは、必要に応じて、親/子の関係を追跡できます。