функция обратного вызова NDK_FN_SEND_AND_INVALIDATE (ndkpi.h)
Функция NdkSendAndInvalidate (NDK_FN_SEND_AND_INVALIDATE) отправляет запрос на отправку в пару очередей NDK (QP) и предоставляет маркер, который будет признан недействительным на удаленном одноранговом узле после завершения получения.
Синтаксис
NDK_FN_SEND_AND_INVALIDATE NdkFnSendAndInvalidate;
NTSTATUS NdkFnSendAndInvalidate(
[in] NDK_QP *pNdkQp,
[in, optional] PVOID RequestContext,
const NDK_SGE *pSgl,
[in] ULONG nSge,
[in] ULONG Flags,
[in] UINT32 RemoteToken
)
{...}
Параметры
[in] pNdkQp
Указатель на объект пары очередей NDK (QP) (NDK_QP).
[in, optional] RequestContext
Значение контекста, возвращаемое в элементе RequestContextструктуры NDK_RESULT_EX для этого запроса.
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) и более поздних версиях. |
[in] RemoteToken
Удаленный маркер, который будет признан недействительным на одноранговом узле после завершения получения. Поставщик NDK на принимающем одноранговом узле должен прервать подключение, как указано в правилах транспорта нижнего уровня, если отправляющий одноранговый узел указал недопустимый маркер.
Возвращаемое значение
Функция NdkSendAndInvalidate возвращает один из следующих кодов NTSTATUS.
Код возврата | Описание |
---|---|
|
Запрос был успешно отправлен. Запись завершения будет помещена в очередь завершения (CQ) после завершения рабочего запроса. |
|
Пара очередей (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_RESULT_EX , добавляемая в очередь завершения в результате вызова этой функции, должна указывать NdkOperationTypeSend для элемента Type . Обратите внимание, что не нужно указывать значение для элемента TypeSpecificCompletionOutput структуры NDK_RESULT_EX .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Не поддерживается, поддерживается в NDIS 6.40 и более поздних версиях. |
Минимальная версия сервера | Windows Server 2012 R2 |
Целевая платформа | Windows |
Header | ndkpi.h (включая Ndkpi.h) |
IRQL | <=DISPATCH_LEVEL |
См. также раздел
Требования к обработке завершения NDKPI
Схема отложенной обработки NDKPI