NDK_FN_CREATE_CQ callback function (ndkpi.h)

The NdkCreateCq (NDK_FN_CREATE_CQ) function creates an NDK completion queue (CQ) object.

Syntax

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
)
{...}

Parameters

[in] pNdkAdapter

A pointer to an NDK adapter object (NDK_ADAPTER).

[in] CqDepth

The maximum number of completion entries that the CQ can hold. This value must be less than or equal to the MaxCqDepth value that is specified in the NDK_ADAPTER_INFO structure.

[in] CqNotification

A pointer to the NdkCqNotificationCallback function (NDK_FN_CQ_NOTIFICATION_CALLBACK) that the provider uses to notify the consumer when request completions are queued in the CQ. The provider will not call NdkCqNotificationCallback unless the consumer arms the notification with the NdkArmCq (NDK_FN_ARM_CQ) function.

[in, optional] CqNotificationContext

A context value that the NDK provider passes back to the NdkCqNotificationCallback function that is specified in the CqNotification parameter.

[in, optional] Affinity

An affinity mask (GROUP_AFFINITY) that provides preferred processors that the consumer would choose to run the NdkCqNotificationCallback callbacks. Providers should honor the processor preferences if their underlying hardware allows it, but consumers cannot assume that NdkCqNotificationCallback callbacks will occur only on the preferred processors. Set Affinity to NULL if there are no preferred processors.

[in] CreateCompletion

A pointer to an NdkCreateCompletion (NDK_FN_CREATE_COMPLETION) function that completes the creation of an NDK object.

[in, optional] RequestContext

A context value that the NDK provider passes back to the NdkCreateCompletion function that is specified in the CreateCompletion parameter.

ppNdkCq

A pointer to a completion queue (CQ) object (NDK_CQ) is returned in this location if the request succeeds without returning STATUS_PENDING. If NdkCreateCq returns STATUS_PENDING this parameter is ignored and the created object is returned with the callback that is specified in the CreateCompletion parameter.

Return value

The NDK_FN_CREATE_CQ function returns one of the following NTSTATUS codes.

Return code Description
STATUS_SUCCESS
The CQ object was created successfully and returned with the *ppNdkCq parameter.
STATUS_PENDING
The operation is pending and will be completed later. The provider will call the function specified in the CreateCompletion parameter(NDK_FN_CREATE_COMPLETION) to complete the pending operation.
STATUS_INVALID_PARAMETER
The request failed because the requested CqDepth value is greater than the MaxCqDepth value that is specified in the NDK_ADAPTER_INFO structure.
STATUS_INSUFFICIENT_RESOURCES
The request failed due to insufficient resources.
Important  The request can fail inline as well as asynchronously with this status code.
 
Other status codes
An error occurred.

Remarks

The NdkCreateCq function creates an NDK completion queue (CQ) object. If the function returns STATUS_SUCCESS, the created object is returned in the ppNdkCq parameter. If NdkCreateCq returns STATUS_PENDING, the created object is returned by the NdkCreateCompletion (NDK_FN_CREATE_COMPLETION) function that is specified in the CreateCompletion parameter.

Requirements

Requirement Value
Minimum supported client None supported,Supported in NDIS 6.30 and later.
Minimum supported server Windows Server 2012
Target Platform Windows
Header ndkpi.h (include Ndkpi.h)
IRQL <=DISPATCH_LEVEL

See also

GROUP_AFFINITY

NDKPI Object Lifetime Requirements

NDK_ADAPTER

NDK_ADAPTER_DISPATCH

NDK_ADAPTER_INFO

NDK_CQ

NDK_FN_ARM_CQ

NDK_FN_CQ_NOTIFICATION_CALLBACK

NDK_FN_CREATE_COMPLETION