Поделиться через


функция обратного вызова NDK_FN_SEND (ndkpi.h)

Функция NdkSend (NDK_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

Число структур SGE в массиве, указанное в параметре pSgl.

[in] Flags

Побитовое ИЛИ флагов, указывающее разрешенные операции. Поддерживаются следующие флаги:

Ценность Значение
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
Указывает, что память, на которую ссылается SGEs, должна быть передана встроенным образом. Кроме того, значение memoryRegionToken в записях NDK_SGE может быть недопустимым. Встроенные запросы не требуют ограничения количества записей в списке 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), очередь завершения для однорангового узла создает уведомление. Уведомление создается после завершения запроса на получение. Этот флаг не имеет значения для приемника (однорангового узла), если ранее не вызвал функцию NdkArmCq (NDK_FN_ARM_CQ) с типом уведомления, заданным для NDK_CQ_NOTIFY_SOLICITED.

Примечание Запросы, которые выполняют ошибку, всегда соответствуют типу уведомлений NDK_CQ_NOTIFY_SOLICITED.
 

Требования

Требование Ценность
минимальные поддерживаемые клиентские Не поддерживается, поддерживается в NDIS 6.30 и более поздних версиях.
минимальный поддерживаемый сервер Windows Server 2012
целевая платформа Виндоус
заголовка ndkpi.h (include Ndkpi.h)
IRQL <=DISPATCH_LEVEL

См. также

схеме отложенной обработки NDKPI

требования к публикации рабочего запроса NDKPI

NDK_FN_ARM_CQ

NDK_QP

NDK_RESULT

NDK_SGE