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


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

Функция NdkConnectWithSharedEndpoint (NDK_FN_CONNECT_WITH_SHARED_ENDPOINT) инициирует запрос на подключение NDK с общего локального адреса к удаленному адресу.

Синтаксис

NDK_FN_CONNECT_WITH_SHARED_ENDPOINT NdkFnConnectWithSharedEndpoint;

NTSTATUS NdkFnConnectWithSharedEndpoint(
  [in]                                      NDK_CONNECTOR *pNdkConnector,
  [in]                                      NDK_QP *pNdkQp,
  [in]                                      NDK_SHARED_ENDPOINT *pNdkSharedEndpoint,
                                            const PSOCKADDR pDestAddress,
  [in]                                      ULONG DestAddressLength,
  [in]                                      ULONG InboundReadLimit,
  [in]                                      ULONG OutboundReadLimit,
  [_In_reads_bytes_opt_(PrivateDataLength)] const PVOID pPrivateData,
  [in]                                      ULONG PrivateDataLength,
  [in]                                      NDK_FN_REQUEST_COMPLETION RequestCompletion,
  [in, optional]                            PVOID RequestContext
)
{...}

Параметры

[in] pNdkConnector

Указатель на объект соединителя NDK (NDK_CONNECTOR).

[in] pNdkQp

Указатель на объект пары очередей NDK (QP) (NDK_QP), который необходимо связать с подключением.

[in] pNdkSharedEndpoint

Указатель на объект общей конечной точки NDK (NDK_SHARED_ENDPOINT), который определяет локальный адрес для подключения.

pDestAddress

Адрес назначения. Для AF_INET или AF_INET6 pDestAddress — ip-адрес назначения и порт ND назначения.

[in] DestAddressLength

Размер в байтах данных адреса назначения в параметре pDestAddress.

[in] InboundReadLimit

Предоставленное потребителем максимальное количество входящих выполняемых операций чтения, разрешенное на QP. Если базовый поставщик имеет более низкое значение MaxInboundReadLimit в структуре NDK_ADAPTER_INFO , поставщик ограничит предоставленное потребителем значение до максимального значения поставщика. Если одноранговый узел имеет меньшее значение OutboundReadLimit , поставщик будет использовать это значение в качестве действующего inboundReadLimit. Потребитель может получить действующий inboundReadLimit , вызвав функцию NdkGetConnectionData (NDK_FN_GET_CONNECTION_DATA).

[in] OutboundReadLimit

Предоставленное потребителем максимальное количество исходящих выполняемых операций чтения, разрешенное на QP. Если базовый поставщик имеет более низкое значение MaxOutboundReadLimit в структуре NDK_ADAPTER_INFO , поставщик ограничит предоставленное потребителем значение до максимального значения поставщика. Если одноранговый узел имеет более низкий уровень InboundReadLimit, поставщик будет использовать это значение в качестве действующего OutboundReadLimit. Потребитель может получить действующий OutboundReadLimit , вызвав функцию NdkGetConnectionData (NDK_FN_GET_CONNECTION_DATA).

[_In_reads_bytes_opt_(PrivateDataLength)] pPrivateData

Указатель на личные данные, отправляемые с помощью запроса на подключение.

[in] PrivateDataLength

Длина (в байтах) частных данных, предоставляемых в параметре pPrivateData .

[in] RequestCompletion

Указатель на подпрограмму обратного вызова завершения запроса NdkRequestCompletion (NDK_FN_REQUEST_COMPLETION).

[in, optional] RequestContext

Значение контекста, передаваемое параметру Context функции обратного вызова, указанной в параметре RequestCompletion .

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

Функция NdkConnectWithSharedEndpoint возвращает один из следующих кодов NTSTATUS.

Код возврата Описание
STATUS_SUCCESS
Запрос на подключение выполнен успешно.
STATUS_PENDING
Операция находится в состоянии ожидания и будет завершена позже. Драйвер вызовет указанную функцию RequestCompletion (NDK_FN_REQUEST_COMPLETION) для завершения ожидающей операции.
STATUS_INSUFFICIENT_RESOURCES
Запрос завершился сбоем из-за нехватки ресурсов.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
 
STATUS_NETWORK_UNREACHABLE
Сбой запроса, так как удаленная сеть недоступна. Попытка подключения может быть повторна.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
 
STATUS_HOST_UNREACHABLE
Сбой запроса, так как удаленная система недоступна. Попытка подключения может быть повторна.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
 
STATUS_CONNECTION_REFUSED
Сбой запроса, так как удаленная система отклонила запрос на подключение. Это может быть вызвано отсутствием прослушивателя, ограничениями невыполненной работы или тем, что одноранговый узел активно отклоняет запрос на подключение. Попытка подключения может быть повторна.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
 
STATUS_IO_TIMEOUT
Сбой запроса, так как истекло время ожидания запроса на подключение. Попытка подключения может быть повторна. Значения времени ожидания выбираются поставщиками Network Direct в соответствии с соответствующими характеристиками сети.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
 
STATUS_ADDRESS_ALREADY_EXISTS
Сбой запроса, так как подключение с сочетанием локального адреса, локального порта, удаленного адреса и удаленного порта уже существует.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
 
Другие коды состояния
Произошла ошибка.

Комментарии

NdkConnectWithSharedEndpoint инициирует запрос на подключение с общего локального адреса к определенному удаленному адресу. NdkConnectWithSharedEndpoint позволяет потребителю NDK использовать один и тот же локальный адрес (например, 10.1.1.1:9999) для многих исходящих подключений, если адреса назначения для подключений отличаются.

Требования

Требование Значение
Минимальная версия клиента Не поддерживается, поддерживается в NDIS 6.30 и более поздних версиях.
Минимальная версия сервера Windows Server 2012
Целевая платформа Windows
Header ndkpi.h (включая Ndkpi.h)
IRQL <=DISPATCH_LEVEL

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

Требования к времени существования объектов NDKPI

NDK_ADAPTER_INFO

NDK_CONNECTOR

NDK_CONNECTOR_DISPATCH

NDK_FN_GET_CONNECTION_DATA

NDK_FN_REQUEST_COMPLETION

NDK_QP

NDK_SHARED_ENDPOINT