NDK_FN_SEND回调函数 (ndkpi.h)

NdkSendNDK_FN_SEND) 函数在 NDK 队列对(QP)上发布发送请求。

语法

NDK_FN_SEND NdkFnSend;

NTSTATUS NdkFnSend(
  [in]           NDK_QP *pNdkQp,
  [in, optional] PVOID RequestContext,
                 const NDK_SGE *pSgl,
  [in]           ULONG nSge,
  [in]           ULONG Flags
)
{...}

参数

[in] pNdkQp

指向 NDK 队列对 (QP) 对象的指针 (NDK_QP)。

[in, optional] RequestContext

要在 RequestContext 中返回的上下文值 此请求 NDK_RESULT 结构的成员。

pSgl

SGE 结构(NDK_SGE)数组,表示保存要发送数据的缓冲区。

[in] nSge

pSgl 参数中指定的数组中的 SGE 结构数。

[in] Flags

指定允许的作的按位 OR 标志。 支持以下标志:

价值 意义
NDK_OP_FLAG_SILENT_SUCCESS
0x00000001
指示此请求成功完成不会在出站完成队列中生成完成事件。 但是,失败的请求会在完成队列中生成事件。
NDK_OP_FLAG_READ_FENCE
0x00000002
指示在硬件开始处理此请求之前,必须先完成所有以前的读取请求。
NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT
0x00000004
指示对等方的完成队列生成通知。 有关 NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT的详细信息,请参阅“备注”部分。
NDK_OP_FLAG_INLINE
0x00000040
指示 SGE 引用的内存应内联传输。 此外,NDK_SGE 条目中的 MemoryRegionToken 值可能无效。 内联请求不需要将 SGE 列表中的条目数限制为创建队列对时指定的 MaxInitiatorRequestSge 值。 内联传输的内存量必须位于队列对的内联数据限制内。
NDK_OP_FLAG_DEFER
0x00000200
向 NDK 提供程序指示它可能会延迟向硬件请求进行处理。 有关此标志的详细信息,请参阅 NDKPI 延迟处理方案

注意 此标志仅在 NDKPI 1.2(Windows Server 2012 R2)及更高版本中受支持。

返回值

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

返回代码 描述
STATUS_SUCCESS
发送请求已成功发布。 完成工作请求完成后,完成项将排入完成队列(CQ)。
STATUS_CONNECTION_INVALID
队列对(QP)未连接。
其他状态代码
发生错误。

言论

NdkSend 在队列对(QP)上发布发送请求。

如果发出多个相关的发送请求,则可以使用 NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT 标志。 在相关发送请求组中的最后一个请求上设置此标志。

发出多个相关的发送请求时,NDK 使用者可以使用此标志。 NDK 使用者仅在最后一个相关的发送请求上设置此标志。 对等方将像往常一样接收所有发送请求。 但是,当对等方收到最后一个发送请求(设置了 NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT 标志的请求)时,对等方的完成队列将生成通知。 接收请求完成后生成通知。 除非接收方以前调用了 NdkArmCqNDK_FN_ARM_CQ)函数,否则此标志对接收方(对等)没有意义,通知类型设置为 NDK_CQ_NOTIFY_SOLICITED

注释 出现错误的请求始终与 NDK_CQ_NOTIFY_SOLICITED 通知类型匹配。
 

要求

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

另请参阅

NDKPI 延迟处理方案

NDKPI 工作请求发布要求

NDK_FN_ARM_CQ

NDK_QP

NDK_RESULT

NDK_SGE