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 上允许的使用者提供的传入正在进行的读取操作的最大数目。 如果基础提供程序在 NDK_ADAPTER_INFO 结构中具有较低的 MaxInboundReadLimit 值,则提供程序会将使用者提供的值限制为提供程序最大值。 如果对等方具有较低的 OutboundReadLimit 值,则提供程序将使用该值作为有效的 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
指向请求完成回调例程 NdkRequestCompletion 的指针 (NDK_FN_REQUEST_COMPLETION) 。
[in, optional] RequestContext
要传递给 RequestCompletion 参数中指定的回调函数的 Context 参数的上下文值。
返回值
NdkConnect 函数返回以下 NTSTATUS 代码之一。
返回代码 | 说明 |
---|---|
|
连接请求已成功完成。 |
|
操作处于挂起状态,稍后将完成。 驱动程序将调用指定的 RequestCompletion (NDK_FN_REQUEST_COMPLETION) 函数来完成挂起的操作。 |
|
由于资源不足,请求失败。
重要 请求可能会内联失败,也可能会以异步方式失败,并显示此状态代码。
|
|
请求失败,因为无法访问远程网络。 可以重试连接尝试。
重要 请求可能会内联失败,也可能会以异步方式失败,并显示此状态代码。
|
|
请求失败,因为无法访问远程主机系统。 可以重试连接尝试。
重要 请求可能会内联失败,也可能会以异步方式失败,并显示此状态代码。
|
|
请求失败,因为远程系统拒绝了连接请求。 这可能是由于缺少侦听器、积压工作限制或对等方主动拒绝连接请求。 可以重试连接尝试。
重要 请求可能会内联失败,也可能会以异步方式失败,并显示此状态代码。
|
|
请求失败,因为连接请求超时。可能会重试连接尝试。 超时值由网络直通提供商选择,以匹配其各自的网络特征。
重要 请求可能会内联失败,也可能会以异步方式失败,并显示此状态代码。
|
|
请求失败,因为指定的本地地址已在使用中。
重要 请求可能会内联失败,也可能会以异步方式失败,并显示此状态代码。
|
|
请求失败,因为指定的本地地址不是适配器的有效地址。
重要 请求可能会内联失败,也可能会以异步方式失败,并显示此状态代码。
|
|
请求失败,因为使用者指定的本地端口号为零,并且网络直通提供程序无法从临时端口空间 (端口 49152-65535) 分配端口。
重要 请求可能会内联失败,也可能会以异步方式失败,并显示此状态代码。
|
|
请求失败,因为已存在本地地址、本地端口、远程地址和远程端口组合的连接。
重要 请求可能会内联失败,也可能会以异步方式失败,并显示此状态代码。
|
|
出现了错误。 |
注解
NdkConnect 启动从本地地址到远程地址的连接请求。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 不支持,在 NDIS 6.30 及更高版本中受支持。 |
最低受支持的服务器 | Windows Server 2012 |
目标平台 | Windows |
标头 | ndkpi.h (包括 Ndkpi.h) |
IRQL | <=DISPATCH_LEVEL |