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


Функция NdisClDropParty (ndis.h)

NdisClDropParty удаляет сторону из многоточечных VC клиента.

Синтаксис

NDIS_STATUS NdisClDropParty(
  [in]           NDIS_HANDLE NdisPartyHandle,
  [in, optional] PVOID       Buffer,
  [in, optional] UINT        Size
);

Параметры

[in] NdisPartyHandle

Указывает дескриптор, определяющий сторону, удаляемую в многоточечных подключениях. Клиент получил этот дескриптор из предыдущего вызова NdisClAddParty или NdisClMakeCall.

[in, optional] Buffer

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

[in, optional] Size

Задает размер в байтах в буфере, ноль, если буфер имеет значение NULL.

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

Когда NdisClDropParty возвращает что-либо, кроме NDIS_STATUS_PENDING, клиент должен выполнить внутренний вызов к его Функция ProtocolClDropPartyComplete . В противном случае NDIS вызывает функцию ProtocolClDropPartyComplete клиента по завершении этой операции.

Комментарии

Клиенты обычно вызывают NdisClDropParty в любом из следующих случаев:

  • Из Функция ProtocolClIncomingDropParty для удаления заданной стороны из многоточечных подключений.

    Это происходит, когда сторона на удаленном узле закрывает свое соединение с NdisCloseCall. Когда NDIS вызывает функцию ProtocolClDropPartyComplete локального клиента, она может освободить или повторно использовать область контекста в ProtocolPartyContext , в которой клиент поддерживал состояние об этой стороне.

  • Прежде чем клиент вызовет NdisClCloseCall с последней стороной в многоточительном подключении, которое клиент изначально настроил с помощью NdisClMakeCall.

    Для такого инициированного клиентом закрытия собственного многоточечных вызовов клиент должен вызвать NdisClDropParty один или несколько раз, чтобы удалить каждую оставшуюся сторону в многоточительном VC.

Вызов клиента к NdisClDropParty приводит к тому, что NDIS вызывает функцию ProtocolCmDropParty диспетчера вызовов, которая использует один и тот же NdisVcHandle для многоточечных VC. Диспетчер вызовов отвечает за уведомление однорангового узла удаленного узла о том, что подключение стороны было или должно быть закрыто, в зависимости от того, какой клиент инициировал операцию удаления.

В качестве общего руководства клиент должен вызывать NdisClDropParty столько раз, сколько он назвал NdisClAddParty с определенным NdisVcHandle , полученным из NdisClMakeCall , прежде чем закрыть многоточечный соединение с NdisCloseCall. Так как удаленные стороны могут инициировать закрытие своих подключений, тем самым вызывая вызовы к локальному клиентуФункция ProtocolClIncomingDropParty, локальный клиент должен отслеживать количество активных сторон на своих многоточечных виртуальных машинах, чтобы узнать, сколько вызовов он должен выполнить в NdisClDropParty, прежде чем он сможет вызвать NdisClCloseCall.

Тем не менее клиенту не требуется передавать NdisClCloseCall тот же NdisPartyHandle , возвращенный NdisClMakeCall , когда клиент первоначально настроил многоточечные подключения. Клиент может освобождать стороны в многоточенном VC в любом порядке, при условии, что он освобождает каждый NdisPartyHandle , возвращенный NdisClAddParty или NdisClMakeCall в своих вызовах NdisClDropParty, а затем последний вызов с последней стороной дескриптор NdisClCloseCall для того же многоточечный VC. После закрытия многоточечных вызовов клиент может освободить VC, который он изначально создал с помощью NdisCoDeleteVc.

Вызывающий объект NdisClDropParty должен считать входной объект NdisPartyHandle недопустимым сразу после выполнения этого вызова. Если он сохранил этот дескриптор в выделенной ему области контекста стороны, клиентФункция ProtocolClDropPartyComplete должна сбросить переменную дескриптора до NULL, если она повторно инициализирует область контекста для каждого участника для повторного использования при удалении стороны.

Требования

Требование Значение
Минимальная версия клиента Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. раздел NdisClDropParty (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. раздел NdisClDropParty (NDIS 5.1)) в Windows XP.
Целевая платформа Персональный компьютер
Верхняя часть ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI Irql_Protocol_Driver_Function(ndis)

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

NdisClAddParty

NdisClCloseCall

NdisClMakeCall

NdisCoDeleteVc

ProtocolClDropPartyComplete

ProtocolClIncomingDropParty

ProtocolCmDropParty