функция обратного вызова 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

Значение контекста, передаваемое параметру контекста функции обратного вызова, указанной в параметре 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.1:9999) для многих исходящих подключений, когда адреса назначения для подключений отличаются.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Не поддерживается, поддерживается в NDIS 6.30 и более поздних версиях.
минимальный поддерживаемый сервер Windows Server 2012
целевая платформа Виндоус
заголовка ndkpi.h (include 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