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 메타데이터 필드에서 부모 엔드포인트에 대한 고유 핸들을 나타냅니다. 이를 통해 콜아웃 드라이버는 필요한 경우 부모/자식 관계를 추적할 수 있습니다.