NDK_FN_CONNECT回调函数 (ndkpi.h)

NdkConnectNDK_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 上允许。 如果基础提供程序在 NDK_ADAPTER_INFO 结构中具有较低的 MaxInboundReadLimit 值,则提供程序会将使用者提供的值上限为提供程序最大值。 如果对等方具有较低的 OutboundReadLimit 值,则提供程序将使用该值作为 effective InboundReadLimit。 使用者可以通过调用 NdkGetConnectionData 函数(NDK_FN_GET_CONNECTION_DATA)来检索有效的 InboundReadLimit

[in] OutboundReadLimit

使用者提供的最大传出正在进行的读取作数,以便在 QP 上允许。 如果基础提供程序在 NDK_ADAPTER_INFO 结构中具有较低的 MaxOutboundReadLimit 值,则提供程序会将使用者提供的值上限为提供程序最大值。 如果对等方 InboundReadLimit较低,则提供程序将使用该值作为有效 OutboundReadLimit。 使用者可以通过调用 NdkGetConnectionData 函数(NDK_FN_GET_CONNECTION_DATA)来检索有效的 OutboundReadLimit

[_In_reads_bytes_opt_(PrivateDataLength)] pPrivateData

指向使用连接请求发送的专用数据的指针。

[in] PrivateDataLength

pPrivateData 参数中提供的专用数据的长度(以字节为单位)。

[in] RequestCompletion

指向请求完成回调例程的指针,NdkRequestCompletionNDK_FN_REQUEST_COMPLETION)。

[in, optional] RequestContext

要传递给 RequestCompletion 参数中指定的回调函数的 Context 参数的上下文值。

返回值

NdkConnect 函数返回以下 NTSTATUS 代码之一。

返回代码 描述
STATUS_SUCCESS
连接请求已成功完成。
STATUS_PENDING
该作处于挂起状态,稍后将完成。 驱动程序将调用指定的 RequestCompletionNDK_FN_REQUEST_COMPLETION) 函数来完成挂起的作。
STATUS_INSUFFICIENT_RESOURCES
请求由于资源不足而失败。
重要 请求可以内联失败,以及使用此状态代码异步失败。
 
STATUS_NETWORK_UNREACHABLE
请求失败,因为无法访问远程网络。 可以重试连接尝试。
重要 请求可以内联失败,以及使用此状态代码异步失败。
 
STATUS_HOST_UNREACHABLE
请求失败,因为无法访问远程主机系统。 可以重试连接尝试。
重要 请求可以内联失败,以及使用此状态代码异步失败。
 
STATUS_CONNECTION_REFUSED
请求失败,因为远程系统拒绝了连接请求。 这可能是由于缺少侦听器、积压工作限制或对等方主动拒绝连接请求。 可以重试连接尝试。
重要 请求可以内联失败,以及使用此状态代码异步失败。
 
STATUS_IO_TIMEOUT
请求失败,因为连接请求超时。可能会重试连接尝试。 网络直接提供商选择超时值以匹配其各自的网络特征。
重要 请求可以内联失败,以及使用此状态代码异步失败。
 
STATUS_SHARING_VIOLATION
请求失败,因为指定的本地地址已在使用中。
重要 请求可以内联失败,以及使用此状态代码异步失败。
 
STATUS_INVALID_ADDRESS
请求失败,因为指定的本地地址不是适配器的有效地址。
重要 请求可以内联失败,以及使用此状态代码异步失败。
 
STATUS_TOO_MANY_ADDRESSES
请求失败,因为使用者指定了本地端口号为零,并且网络直通提供程序无法从临时端口空间(端口 49152-65535)分配端口。
重要 请求可以内联失败,以及使用此状态代码异步失败。
 
STATUS_ADDRESS_ALREADY_EXISTS
请求失败,因为已存在与本地地址、本地端口、远程地址和远程端口的组合的连接。
重要 请求可以内联失败,以及使用此状态代码异步失败。
 
其他状态代码
发生错误。

言论

NdkConnect 启动从本地地址到远程地址的连接请求。

要求

要求 价值
最低支持的客户端 NDIS 6.30 及更高版本不支持。
支持的最低服务器 Windows Server 2012
目标平台 窗户
标头 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