NDK_FN_SEND_AND_INVALIDATE回调函数 (ndkpi.h)

NdkSendAndInvalidate (NDK_FN_SEND_AND_INVALIDATE) 函数 (QP) 在 NDK 队列对上发布发送请求,并提供在接收完成后在远程对等方失效的令牌。

语法

NDK_FN_SEND_AND_INVALIDATE NdkFnSendAndInvalidate;

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

参数

[in] pNdkQp

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

[in, optional] RequestContext

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

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) 及更高版本中受支持。

[in] RemoteToken

接收完成后,将在对等方上失效的远程令牌。 如果发送对等方指定了无效令牌,则接收对等方上的 NDK 提供程序必须中止连接(如下层传输规则所指定)。

返回值

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

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

注解

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

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

注意 完成并出现错误的请求始终与 NDK_CQ_NOTIFY_SOLICITED 通知类型匹配。
 
如果接收对等方不支持远程失效,NDK 使用者应确保不会调用 NdkSendAndInvalidate 函数。 使用者必须使用带外机制协商此功能,或者不使用此功能。 如果使用者违反此要求,则提供程序的行为是不确定的。

由于调用此函数而添加到完成队列的任何NDK_RESULT_EX结构都必须为 Type 成员指定 NdkOperationTypeSend。 请注意,无需为 NDK_RESULT_EX 结构的 TypeSpecificCompletionOutput 成员指定值。

要求

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

另请参阅

NDKPI 完成处理要求

NDKPI 延迟处理方案

NDKPI 工作请求发布要求

NDK_FN_ARM_CQ

NDK_QP

NDK_RESULT_EX

NDK_SGE