Поделиться через


Управление жизненным циклом конечной точки 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. Это позволяет драйверу выноски отслеживать отношения "родители-потомки", если это необходимо.