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


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

Функция NdkConnect (NDK_FN_CONNECT) инициирует запрос на подключение NDK.

Синтаксис

NDK_FN_CONNECT NdkFnConnect;

NTSTATUS NdkFnConnect(
  [in]                                      NDK_CONNECTOR *pNdkConnector,
  [in]                                      NDK_QP *pNdkQp,
                                            const PSOCKADDR pSrcAddress,
  [in]                                      ULONG SrcAddressLength,
  [in]                                      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), который необходимо связать с подключением.

pSrcAddress

Исходный адрес. Для AF_INET или AF_INET6 pSrcAddress — исходный IP-адрес и порт ND источника.

[in] SrcAddressLength

Размер исходных данных адреса в байтах в параметре pSrcAddress .

[in] 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 .

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

Функция NdkConnect возвращает один из следующих кодов 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_SHARING_VIOLATION
Сбой запроса, так как указанный локальный адрес уже используется.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
 
STATUS_INVALID_ADDRESS
Сбой запроса, так как указанный локальный адрес не является допустимым адресом адаптера.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
 
STATUS_TOO_MANY_ADDRESSES
Сбой запроса, так как потребитель указал номер локального порта, равный нулю, а поставщику Network Direct не удалось выделить порт из пространства временных портов (порты 49152–65535).
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
 
STATUS_ADDRESS_ALREADY_EXISTS
Сбой запроса, так как подключение с сочетанием локального адреса, локального порта, удаленного адреса и удаленного порта уже существует.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
 
Другие коды состояния
Произошла ошибка.

Комментарии

NdkConnect инициирует запрос на подключение с локального адреса к удаленному адресу.

Требования

Требование Значение
Минимальная версия клиента Не поддерживается, поддерживается в 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_DISCONNECT

NDK_FN_GET_CONNECTION_DATA

NDK_FN_REQUEST_COMPLETION

NDK_QP