NdkCreateCq (NDK_FN_CREATE_CQ) 函数创建 NDK 完成队列 (CQ) 对象。
语法
NDK_FN_CREATE_CQ NdkFnCreateCq;
NTSTATUS NdkFnCreateCq(
[in] NDK_ADAPTER *pNdkAdapter,
[in] ULONG CqDepth,
[in] NDK_FN_CQ_NOTIFICATION_CALLBACK CqNotification,
[in, optional] PVOID CqNotificationContext,
[in, optional] GROUP_AFFINITY *Affinity,
[in] NDK_FN_CREATE_COMPLETION CreateCompletion,
[in, optional] PVOID RequestContext,
NDK_CQ **ppNdkCq
)
{...}
参数
[in] pNdkAdapter
指向 NDK 适配器对象的指针(NDK_ADAPTER)。
[in] CqDepth
CQ 可以保留的最大完成项数。 此值必须小于或等于在 NDK_ADAPTER_INFO 结构中指定的 MaxCqDepth 值。
[in] CqNotification
指向 NdkCqNotificationCallback 函数(NDK_FN_CQ_NOTIFICATION_CALLBACK)的指针,提供程序在 CQ 中排队请求完成时用于通知使用者。 提供程序不会调用 NdkCqNotificationCallback,除非使用者使用 NdkArmCq(NDK_FN_ARM_CQ) 函数来提供通知。
[in, optional] CqNotificationContext
NDK 提供程序将传回 NdkCqNotificationCallback 函数的上下文值,该函数在 CqNotification 参数中指定的。
[in, optional] Affinity
一个关联掩码(GROUP_AFFINITY),它提供使用者选择运行 NdkCqNotificationCallback 回调的首选处理器。 如果提供程序的基础硬件允许处理器首选项,但使用者不能假定 NdkCqNotificationCallback 回调仅在首选处理器上发生。 如果没有首选处理器,请将 相关性 设置为 NULL。
[in] CreateCompletion
指向完成 NDK 对象的创建 NdkCreateCompletion(NDK_FN_CREATE_COMPLETION)函数的指针。
[in, optional] RequestContext
NDK 提供程序传回 NdkCreateCompletion 函数的上下文值,该函数是在 createCompletion 参数中指定的。
ppNdkCq
如果请求成功而不返回STATUS_PENDING,则会在此位置返回指向完成队列 (CQ) 对象的指针(NDK_CQ)。 如果 NdkCreateCq 返回STATUS_PENDING此参数将被忽略,并且创建的对象使用 CreateCompletion 参数中指定的回调返回。
返回值
NDK_FN_CREATE_CQ 函数返回以下 NTSTATUS 代码之一。
| 返回代码 | 描述 |
|---|---|
|
已成功创建 CQ 对象,并使用 *ppNdkCq 参数返回。 |
|
该作处于挂起状态,稍后将完成。 提供程序将调用 CreateCompletion 参数(NDK_FN_CREATE_COMPLETION)中指定的函数来完成挂起的作。 |
|
请求失败,因为请求的 CqDepth 值大于 NDK_ADAPTER_INFO 结构中指定的 MaxCqDepth 值。 |
|
请求由于资源不足而失败。
重要 请求可以内联失败,以及使用此状态代码异步失败。
|
|
发生错误。 |
言论
NdkCreateCq 函数创建 NDK 完成队列 (CQ) 对象。 如果函数返回STATUS_SUCCESS,则会在 ppNdkCq 参数中返回创建的对象。 如果 NdkCreateCq 返回STATUS_PENDING,则创建的对象由 CreateCompletion 参数中指定的 NdkCreateCompletion (NDK_FN_CREATE_COMPLETION) 函数返回。
要求
| 要求 | 价值 |
|---|---|
| 最低支持的客户端 | NDIS 6.30 及更高版本不支持。 |
| 支持的最低服务器 | Windows Server 2012 |
| 目标平台 | 窗户 |
| 标头 | ndkpi.h (包括 Ndkpi.h) |
| IRQL | <=DISPATCH_LEVEL |