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


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

Требуется функция ProtocolCmDropParty . NDIS вызывает ProtocolCmDropParty , чтобы запросить, чтобы диспетчер вызовов удалил сторону из существующего многоточечных вызовов.

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

Синтаксис

PROTOCOL_CM_DROP_PARTY ProtocolCmDropParty;

NDIS_STATUS ProtocolCmDropParty(
  [in]           NDIS_HANDLE CallMgrPartyContext,
  [in, optional] PVOID CloseData,
  [in, optional] UINT Size
)
{...}

Параметры

[in] CallMgrPartyContext

Указывает дескриптор для области контекста, выделенной диспетчером вызовов, в которой диспетчер вызовов сохраняет свое состояние для каждой стороны. Этот дескриптор был предоставлен NDIS в функции ProtocolCmAddParty диспетчеров вызовов.

[in, optional] CloseData

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

[in, optional] Size

Указывает длину (в байтах) буфера в CloseData, ноль, если CloseData имеет значение NULL.

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

ProtocolCmDropParty возвращает состояние своих операций в виде одного из следующих значений:

Код возврата Описание
NDIS_STATUS_SUCCESS
Указывает, что диспетчер звонков успешно отбросил сторону, отправил все близкие данные и освободил ресурсы, выделенные для ее контекстной области.
NDIS_STATUS_PENDING
Указывает, что диспетчер вызовов выполнит запрос на удаление стороны асинхронно. После завершения обработки диспетчер вызовов должен вызвать NdisCmDropPartyComplete , чтобы уведомить NDIS и запрашивающего субъекта о том, что сторона удалена.
NDIS_STATUS_INVALID_DATA
Указывает, что CloseData был указан диспетчеру вызовов, но тип носителя не поддерживает отправку данных одновременно с завершением подключения.

Комментарии

ProtocolCmDropParty взаимодействует с устройствами управления сетью или другими агентами, зависящими от носителя, по мере необходимости для своего носителя, чтобы удалить сторону из существующего многоточечных вызовов. Если диспетчер вызовов должен взаимодействовать с агентами управления сетью (например, сетевым коммутатором), он должен использовать виртуальное подключение к агентам управления сетью, которые он установил в своем экземпляре. Функция ProtocolBindAdapterEx .

Если значение CloseData не равно NULL и отправка данных при завершении подключения поддерживается его типом носителя, диспетчер вызовов должен передать данные, указанные в CloseData , перед завершением завершения. Если отправка данных одновременно с завершением подключения не поддерживается типом носителя, диспетчер вызовов должен вернуть управление с NDIS_STATUS_INVALID_DATA.

Диспетчеры звонков также должны освободить все ресурсы для отдельных сторон, которые были выделены и сохранены в CallMgrPartyContext . Кроме того, диспетчер вызовов должен освободить буфер, хранящийся в самом callMgrPartyContext . В этом случае произойдет утечка памяти.

Примеры

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

Например, чтобы определить функцию ProtocolCmDropParty с именем MyCmDropParty, используйте тип PROTOCOL_CM_DROP_PARTY , как показано в этом примере кода:

PROTOCOL_CM_DROP_PARTY MyCmDropParty;

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

_Use_decl_annotations_
NDIS_STATUS
 MyCmDropParty(
    NDIS_HANDLE  CallMgrPartyContext,
    PVOID  CloseData,
    UINT  Size
    )
  {...}

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

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

Требования

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

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

NdisCmDropPartyComplete

ProtocolCmAddParty