Функция 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 столько раз, сколько он назвал 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) |