NDK_FN_READ回调函数 (ndkpi.h)
NdkRead (NDK_FN_READ) 函数 (QP) 在 NDK 队列对上发布读取请求。
语法
NDK_FN_READ NdkFnRead;
NTSTATUS NdkFnRead(
[in] NDK_QP *pNdkQp,
[in, optional] PVOID RequestContext,
const NDK_SGE *pSgl,
[in] ULONG nSge,
[in] UINT64 RemoteAddress,
[in] UINT32 RemoteToken,
[in] ULONG Flags
)
{...}
参数
[in] pNdkQp
指向 NDK 队列对 (QP) 对象 (NDK_QP) 的指针。
[in, optional] RequestContext
要在此请求的 NDK_RESULT 结构的 RequestContext 成员中返回的上下文值。
pSgl
(NDK_SGE) 表示要放置传入数据的缓冲区的 SGE 结构的数组。
[in] nSge
在 pSgl 参数中指定的数组中的 SGE 结构数。
[in] RemoteAddress
要从中读取的远程地址,以本地主机的字节顺序显示。 NDK 使用者可以向远程提供的值添加偏移量。
[in] RemoteToken
远程提供的内存令牌,它是来自 NDK 使用者的不透明字节数组。
[in] Flags
指定允许的操作的标志的按位 OR。 支持以下标志:
值 | 含义 |
---|---|
|
指示此请求的成功完成不会在出站完成队列中生成完成事件。 但是,失败的请求会在完成队列中生成事件。 |
|
指示在硬件开始处理此请求之前,所有以前的读取请求都必须完成。 |
|
如果设置了此标志,并且提供程序还在 NDK_ADAPTER_INFO 结构中报告NDK_ADAPTER_FLAG_RDMA_READ_LOCAL_INVALIDATE_SUPPORTED适配器功能,则成功完成 NdkRead 函数意味着 pSgl 参数中指定的第一个缓冲区无效。 不成功完成会使缓冲区和令牌处于未定义状态。 如果提供程序未在 NDK_ADAPTER_INFO 结构中报告 NDK_ADAPTER_FLAG_RDMA_READ_LOCAL_INVALIDATE_SUPPORTED 适配器功能,则忽略 此 标志。
注意此标志仅在 NDKPI 1.2 (Windows Server 2012 R2) 及更高版本中受支持。 |
|
向 NDK 提供程序指示它可以延迟指示对硬件的请求进行处理。 有关此标志的详细信息,请参阅 NDKPI 延迟处理方案。
注意此标志仅在 NDKPI 1.2 (Windows Server 2012 R2) 及更高版本中受支持。 |
返回值
NdkRead 函数返回以下 NTSTATUS 代码之一。
返回代码 | 说明 |
---|---|
|
已成功发布请求。 完成工作请求后,完成项将排队到 CQ。 |
|
QP 未连接。 |
|
请求尝试读取超过远程内存大小。 |
|
出现了错误。 |
注解
NdkRead 在 QP) (队列对上发布读取请求。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 不支持,在 NDIS 6.30 及更高版本中受支持。 |
最低受支持的服务器 | Windows Server 2012 |
目标平台 | Windows |
标头 | ndkpi.h (包括 Ndkpi.h) |
IRQL | <=DISPATCH_LEVEL |