NDK_FN_GET_CONNECTION_DATA回调函数 (ndkpi.h)

NdkGetConnectionData (NDK_FN_GET_CONNECTION_DATA) 函数获取读取限制值和对等方发送的私有数据。

语法

NDK_FN_GET_CONNECTION_DATA NdkFnGetConnectionData;

NTSTATUS NdkFnGetConnectionData(
  [in]            NDK_CONNECTOR *pNdkConnector,
  [out, optional] ULONG *pInboundReadLimit,
  [out, optional] ULONG *pOutboundReadLimit,
                  PVOID pPrivateData,
                  ULONG *pPrivateDataLength
)
{...}

参数

[in] pNdkConnector

指向 NDK 连接器对象的指针 (NDK_CONNECTOR) 。

[out, optional] pInboundReadLimit

在此位置返回对 QP 允许的传入正在进行的读取操作的最大数目。

[out, optional] pOutboundReadLimit

在此位置返回允许对 QP 执行的最大传出正在进行的读取操作数。

pPrivateData

指向返回的私有数据的指针。

pPrivateDataLength

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

注意 输出值不指示存储在缓冲区中的专用数据的实际长度。 NDK 使用者必须协商实际私有数据的格式和长度。 有关私有数据的详细信息,请参阅备注部分。
 

返回值

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

返回代码 说明
STATUS_SUCCESS
操作已成功完成。
STATUS_BUFFER_TOO_SMALL
*pPrivateDataLength 参数中的值指定的缓冲区大小太小,无法保存连接专用数据。 *pPrivateDataLength 更新为所需大小。
其他状态代码
出现了错误。

注解

NdkGetConnectionData 函数获取由具有连接、接受或拒绝请求以及有效入站和出站读取限制值的对等方发送的专用数据。 这些值派生自本地和远程对等方请求的值以及提供程序的最大限制。

若要从活动端访问私有数据和有效的入站读取限制 (IRD) 和出站读取限制 (ORD) 值,NDK 使用者可以为传递给 NDK_FN_CONNECT_EVENT_CALLBACK 函数的连接器对象调用 NdkGetConnectionData

若要从被动端访问私有数据以及有效的 IRD 和 ORD 值,使用者可以为NDK_FN_CONNECTNDK_FN_CONNECT_WITH_SHARED_ENDPOINT成功完成的连接器对象调用 NdkGetConnectionDataNDK_FN_COMPLETE_CONNECTNDK_FN_ACCEPT

如果 pPrivateData 参数为 NULL 且 *pPrivateDataLength 为零,则 NDK 提供程序必须返回STATUS_SUCCESS并将所需的专用数据缓冲区大小 (RDS) 存储在 *pPrivateDataLength 中

注意RDS) 所需的专用数据缓冲区大小 (并不指示对等方发送了那么多的私有数据。 NDK 使用者必须在两端都有一个共同的方案,以允许接收端确定私有数据缓冲区中是否存在任何专用数据。 每个连接的 RDS 可能不同。
 
如果 pPrivateData 为 NULL 且 *pPrivateDataLength 大于零,则表示请求无效。 使用者绝不能执行此操作。

如果 pPrivateData 不为 NULL,则提供程序必须将专用数据复制到 pPrivateData 的缓冲区,最大为 *pPrivateDataLengthRDS (以字节为单位)。

如果 *pPrivateDataLength 大于或等于 RDS,则提供程序必须返回STATUS_SUCCESS。 否则,提供程序必须返回STATUS_BUFFER_TOO_SMALL。 在这两种情况下,提供程序必须在返回之前将 RDS 存储在 *pPrivateDataLength 中。

要求

要求
最低受支持的客户端 不支持,NDIS 6.30 及更高版本支持。
最低受支持的服务器 Windows Server 2012
目标平台 Windows
标头 ndkpi.h (包括 Ndkpi.h)
IRQL <=DISPATCH_LEVEL

另请参阅

NDK_CONNECTOR

NDK_CONNECTOR_DISPATCH