NDK_FN_BIND回调函数 (ndkpi.h)
NdkBind (NDK_FN_BIND) 函数将内存窗口绑定到内存区域(MR)的特定子区域。
语法
NDK_FN_BIND NdkFnBind;
NTSTATUS NdkFnBind(
[in] NDK_QP *pNdkQp,
[in, optional] PVOID RequestContext,
[in] NDK_MR *pMr,
[in] NDK_MW *pMw,
[in] PVOID VirtualAddress,
[in] SIZE_T Length,
[in] ULONG Flags
)
{...}
参数
[in] pNdkQp
指向 NDK 队列对 (QP) 对象的指针 (NDK_QP)。
[in, optional] RequestContext
要在此请求 NDK_RESULT 结构的 RequestContext 成员中返回的上下文值。
[in] pMr
指向 NDK 内存区域(MR)对象的指针(NDK_MR)。
[in] pMw
指向 NDK 内存窗口(兆瓦)对象的指针(NDK_MW)。
[in] VirtualAddress
必须大于或等于 MR MDL 的虚拟地址,小于 MR MDL 的虚拟地址,以及 Length 参数中的值。
使用 MmGetMdlVirtualAddress 宏获取 MR MDL 的虚拟地址。
[in] Length
要绑定到兆瓦的 MR 的长度。
[in] Flags
指定允许的作的按位 OR 标志。 支持以下标志:
价值 | 意义 |
---|---|
|
指示此请求成功完成不会在出站完成队列中生成完成事件。 但是,失败的请求会在完成队列中生成完成。 |
|
指示在硬件开始处理此请求之前,必须先完成所有以前的读取请求。 |
|
为任何连接的对等方启用对内存窗口的读取访问权限。 若要访问内存窗口,连接的对等方必须具有有效的令牌。 |
|
为任何连接的对等方启用对内存窗口的写入访问权限。 若要访问内存窗口,连接的对等方必须具有有效的令牌。 |
|
向 NDK 提供程序指示它可能会延迟向硬件请求进行处理。 有关此标志的详细信息,请参阅 NDKPI 延迟处理方案。
注意 此标志仅在 NDKPI 1.2(Windows Server 2012 R2)及更高版本中受支持。 |
返回值
NdkBind 函数返回以下 NTSTATUS 代码之一。
返回代码 | 描述 |
---|---|
|
请求已成功发布。 完成工作请求完成后,完成项将排队到 CQ。 |
|
队列对(QP)未连接。 |
|
内存区域不允许为内存窗口请求的访问类型。 NDK_OP_FLAG_ALLOW_WRITE标志需要注册到NDK_MR_FLAG_ALLOW_LOCAL_WRITE标志的内存区域。 |
|
发生错误。 |
言论
NdkBind 将内存窗口(兆瓦)绑定到内存区域(MR)的特定子区域。
VirtualAddress 参数中的地址必须是在内存注册期间指定的 MDL 链描述的虚拟连续区域中的地址。 该地址必须由提供程序视为内存区域中的索引。 提供程序不得将地址用作读取或写入缓冲区内容的有效虚拟地址。
此调用返回后,远程令牌将可用于 NdkGetRemotetokenFromMw 函数(NDK_FN_GET_REMOTE_TOKEN_FROM_MW)。
此函数不支持从零开始的虚拟地址。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | NDIS 6.30 及更高版本不支持。 |
支持的最低服务器 | Windows Server 2012 |
目标平台 | 窗户 |
标头 | ndkpi.h (包括 Ndkpi.h) |
IRQL | <=DISPATCH_LEVEL |