функция обратного вызова PROTOCOL_CL_CLOSE_AF_COMPLETE (ndis.h)

Функция ProtocolClcloseAfComplete используется клиентами NDIS, ориентированными на подключение. Все клиенты NDIS, ориентированные на подключение, должны иметь функции ProtocolClCloseAfComplete для выполнения асинхронных операций, которые они инициируют с помощью NdisClCloseAddressFamily.

Примечание Функцию необходимо объявить с помощью типа PROTOCOL_CL_CLOSE_AF_COMPLETE . Дополнительные сведения см. в следующем разделе Примеры.
 

Синтаксис

PROTOCOL_CL_CLOSE_AF_COMPLETE ProtocolClCloseAfComplete;

void ProtocolClCloseAfComplete(
  [in] NDIS_STATUS Status,
  [in] NDIS_HANDLE ProtocolAfContext
)
{...}

Параметры

[in] Status

Указывает окончательное состояние инициированного клиентом запроса на закрытие семейства адресов, которое может быть одним из следующих:

NDIS_STATUS_SUCCESS

Адресная семья была закрыта. NdisAfHandle, представляющий открытое семейство адресов, которое клиент хранит в своей области ProtocolAfContext, теперь является недопустимым.

NDIS_STATUS_FAILURE

Либо в af(s) есть связанные VC и (или) зарегистрированные SAP, которые клиент должен освободить перед попыткой закрыть af, либо клиент дважды вызвал NdisCloseAddressFamily , так как NDIS обнаружил, что состояние af был помечен как "закрытие".

[in] ProtocolAfContext

Указывает предоставленный клиентом дескриптор для его области контекста для каждой af-AF. Клиент первоначально настроил эту область контекста и передал этот дескриптор в NDIS с помощью NdisClOpenAddressFamilyEx.

Возвращаемое значение

None

Remarks

Убедившись, что у него нет незавершенных виртуальных машин и (или) зарегистрированных SSP в открытом семействе адресов, клиент вызывает NdisClCloseAddressFamily , чтобы удалить связь между собой, диспетчером вызовов и конкретной базовой сетевой картой. NDIS вызывает функцию ProtocolCmCloseAf для диспетчера вызовов, который этот клиент изначально использовал для открытия семейства адресов в качестве асинхронной операции. После вызова NdisClCloseAddressFamily клиент должен считать NdisAfHandle недопустимым .

Следовательно, клиент должен иметь функцию ProtocolClCloseAfComplete , которую NDIS вызывает при выполнении асинхронной операции закрытия af. Если входное состояние равно NDIS_STATUS_SUCCESS, клиент может освободить область контекста для каждой af-af.

Примеры

Чтобы определить функцию ProtocolCloseAfComplete , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить функцию ProtocolCloseAfComplete с именем MyClCloseAfComplete, используйте тип PROTOCOL_CL_CLOSE_AF_COMPLETE , как показано в следующем примере кода:

PROTOCOL_CL_CLOSE_AF_COMPLETE MyClCloseAfComplete;

Затем реализуйте функцию следующим образом:

_Use_decl_annotations_
VOID
 MyClCloseAfComplete(
    NDIS_STATUS  Status,
    NDIS_HANDLE  ProtocolAfContext
    )
  {...}

Тип функции PROTOCOL_CL_CLOSE_AF_COMPLETE определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции PROTOCOL_CL_CLOSE_AF_COMPLETE в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов NDIS.

Сведения о Use_decl_annotations см. в статье Поведение функции с заметками.

Требования

Требование Значение
Минимальная версия клиента Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. ProtocolCloseAfComplete (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. ProtocolCloseAfComplete (NDIS 5.1)) в Windows XP.
Целевая платформа Windows
Header ndis.h (включая Ndis.h)
IRQL <= DISPATCH_LEVEL

См. также раздел

NdisClCloseAddressFamily

NdisClOpenAddressFamilyEx

NdisFreeMemory

NdisFreeToNPagedLookasideList

ProtocolCmCloseAf

ProtocolCmOpenAf

ProtocolUnbindAdapterEx