функция обратного вызова 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.
Код возврата | Описание |
---|---|
|
Запрос на подключение выполнен успешно. |
|
Операция находится в состоянии ожидания и будет завершена позже. Драйвер вызовет указанную функцию RequestCompletion (NDK_FN_REQUEST_COMPLETION) для завершения ожидающей операции. |
|
Запрос завершился сбоем из-за нехватки ресурсов.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
|
|
Сбой запроса, так как удаленная сеть недоступна. Попытка подключения может быть повторна.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
|
|
Сбой запроса, так как система удаленного узла недоступна. Попытка подключения может быть повторна.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
|
|
Сбой запроса, так как удаленная система отклонила запрос на подключение. Это может быть вызвано отсутствием прослушивателя, ограничениями невыполненной работы или тем, что одноранговый узел активно отклоняет запрос на подключение. Попытка подключения может быть повторна.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
|
|
Сбой запроса, так как истекло время ожидания запроса на подключение. Попытка подключения может быть повторна. Значения времени ожидания выбираются поставщиками Network Direct в соответствии с соответствующими характеристиками сети.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
|
|
Сбой запроса, так как указанный локальный адрес уже используется.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
|
|
Сбой запроса, так как указанный локальный адрес не является допустимым адресом адаптера.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
|
|
Сбой запроса, так как потребитель указал номер локального порта, равный нулю, а поставщику Network Direct не удалось выделить порт из пространства временных портов (порты 49152–65535).
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
|
|
Сбой запроса, так как подключение с сочетанием локального адреса, локального порта, удаленного адреса и удаленного порта уже существует.
Важно Запрос может завершиться как встроенным, так и асинхронным с этим кодом состояния.
|
|
Произошла ошибка. |
Комментарии
NdkConnect инициирует запрос на подключение с локального адреса к удаленному адресу.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Не поддерживается, поддерживается в NDIS 6.30 и более поздних версиях. |
Минимальная версия сервера | Windows Server 2012 |
Целевая платформа | Windows |
Header | ndkpi.h (включая Ndkpi.h) |
IRQL | <=DISPATCH_LEVEL |