функция обратного вызова 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
Целевая платформа Windows
Header ndkpi.h (включая Ndkpi.h)
IRQL <=DISPATCH_LEVEL

См. также раздел

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

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

NDK_FN_ARM_CQ

NDK_QP

NDK_RESULT

NDK_SGE