функция обратного вызова 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_SEND_AND_SOLICIT_EVENT см. в разделе Примечания. |
|
Указывает, что память, на которую ссылается SGEs, должна быть передана встроенной. Кроме того, значение MemoryRegionToken в записях NDK_SGE может быть недопустимым. Встроенным запросам не нужно ограничивать количество записей в списке SGE значением MaxInitiatorRequestSge , указанным при создании пары очередей. Объем памяти, передаваемой встроенной, должен находиться в пределах пределов встроенных данных для пары очередей. |
|
Указывает поставщику NDK, что он может отложить запрос к оборудованию для обработки. Дополнительные сведения об этом флаге см. в разделе Схема отложенной обработки NDKPI.
Примечание Этот флаг поддерживается только в NDKPI 1.2 (Windows Server 2012 R2) и более поздних версиях. |
Возвращаемое значение
Функция NdkSend возвращает один из следующих кодов NTSTATUS.
Код возврата | Описание |
---|---|
|
Запрос на отправку успешно отправлен. Запись завершения будет помещена в очередь завершения (CQ) после завершения рабочего запроса. |
|
Пара очередей (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.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Не поддерживается, поддерживается в NDIS 6.30 и более поздних версиях. |
Минимальная версия сервера | Windows Server 2012 |
Целевая платформа | Windows |
Header | ndkpi.h (включая Ndkpi.h) |
IRQL | <=DISPATCH_LEVEL |
См. также раздел
Схема отложенной обработки NDKPI