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


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

Функция NdkRead (NDK_FN_READ) публикует запрос на чтение в паре очередей NDK (QP).

Синтаксис

NDK_FN_READ NdkFnRead;

NTSTATUS NdkFnRead(
  [in]           NDK_QP *pNdkQp,
  [in, optional] PVOID RequestContext,
                 const NDK_SGE *pSgl,
  [in]           ULONG nSge,
  [in]           UINT64 RemoteAddress,
  [in]           UINT32 RemoteToken,
  [in]           ULONG Flags
)
{...}

Параметры

[in] pNdkQp

Указатель на объект пары очередей NDK (QP) (NDK_QP).

[in, optional] RequestContext

Значение контекста, возвращаемое в элементе RequestContext структуры NDK_RESULT для этого запроса.

pSgl

Массив структур SGE (NDK_SGE), представляющих буферы для размещения входящих данных.

[in] nSge

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

[in] RemoteAddress

Удаленный адрес для чтения из этого объекта представлен в порядке байтов локального узла. Потребитель NDK может добавить смещение в указанное удаленное значение.

[in] RemoteToken

Удаленный маркер памяти, который является непрозрачным массивом байтов из потребителя NDK.

[in] Flags

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

Ценность Значение
NDK_OP_FLAG_SILENT_SUCCESS
0x00000001
Указывает, что успешное завершение этого запроса не создает событие завершения в очереди исходящего завершения. Однако запросы, которые завершаются сбоем, создают событие в очереди завершения.
NDK_OP_FLAG_READ_FENCE
0x00000002
Указывает, что все предыдущие запросы на чтение должны быть завершены, прежде чем оборудование начнет обработку этого запроса.
NDK_OP_FLAG_RDMA_READ_LOCAL_INVALIDATE
0x00000200
Если этот флаг задан, а поставщик также сообщает о возможности адаптера NDK_ADAPTER_FLAG_RDMA_READ_LOCAL_INVALIDATE_SUPPORTED в структуре NDK_ADAPTER_INFO, успешное завершение функции NdkRead означает, что первый буфер, указанный в параметре pSgl, является недействительным. Неудачное завершение оставляет буфер и маркер в неопределенном состоянии. Этот флаг игнорируется, если поставщик не сообщает о возможности адаптера NDK_ADAPTER_FLAG_RDMA_READ_LOCAL_INVALIDATE_SUPPORTED в структуре NDK_ADAPTER_INFO.

Примечание Этот флаг поддерживается только в NDKPI 1.2 (Windows Server 2012 R2) и более поздних версиях.

NDK_OP_FLAG_DEFER
0x00000200
Указывает поставщику NDK, что он может отложить запрос на оборудование для обработки. Дополнительные сведения об этом флаге см. в схемы отложенной обработки NDKPI.

Примечание Этот флаг поддерживается только в NDKPI 1.2 (Windows Server 2012 R2) и более поздних версиях.

Возвращаемое значение

Функция NdkRead возвращает один из следующих кодов NTSTATUS.

Возвращаемый код Описание
STATUS_SUCCESS
Запрос был успешно размещен. Запись завершения будет помещена в очередь в CQ после завершения рабочего запроса.
STATUS_CONNECTION_INVALID
QP не подключен.
STATUS_REMOTE_RESOURCES
Запрос пытался прочитать за пределами удаленной памяти.
Другие коды состояния
Произошла ошибка.

Замечания

NdkRead отправляет запрос на чтение в паре очередей (QP).

Требования

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

См. также

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

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

NDK_ADAPTER_INFO

NDK_FN_ARM_CQ

NDK_QP

NDK_RESULT

NDK_SGE