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

Функция NdkBind (NDK_FN_BIND) привязывает окно памяти к определенному подобласти области памяти (MR).

Синтаксис

NDK_FN_BIND NdkFnBind;

NTSTATUS NdkFnBind(
  [in]           NDK_QP *pNdkQp,
  [in, optional] PVOID RequestContext,
  [in]           NDK_MR *pMr,
  [in]           NDK_MW *pMw,
  [in]           PVOID VirtualAddress,
  [in]           SIZE_T Length,
  [in]           ULONG Flags
)
{...}

Параметры

[in] pNdkQp

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

[in, optional] RequestContext

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

[in] pMr

Указатель на объект области памяти NDK (MR) (NDK_MR).

[in] pMw

Указатель на объект окна памяти NDK (MW) (NDK_MW).

[in] VirtualAddress

Виртуальный адрес, который должен быть больше или равен виртуальному адресу MDL для смешанной реальности и меньше виртуального адреса MDL для смешанной реальности плюс значение в параметре Length .

Используйте макрос MmGetMdlVirtualAddress , чтобы получить виртуальный адрес MDL для смешанной реальности.

[in] Length

Длина смешанной реальности для привязки к МВТ.

[in] Flags

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

Значение Значение
NDK_OP_FLAG_SILENT_SUCCESS
0x00000001
Указывает, что успешное выполнение этого запроса не создает событие завершения в очереди исходящего завершения. Однако запросы, которые завершаются сбоем, создают завершение в очереди завершения.
NDK_OP_FLAG_READ_FENCE
0x00000002
Указывает, что все предыдущие запросы на чтение должны быть выполнены, прежде чем оборудование начнет обрабатывать этот запрос.
NDK_OP_FLAG_ALLOW_REMOTE_READ
0x00000008
Включите доступ на чтение к окну памяти для любого подключенного однорангового узла. Для доступа к окну памяти подключенные одноранговые узлы должны иметь допустимый маркер.
NDK_OP_FLAG_ALLOW_REMOTE_WRITE
0x00000030
Включите доступ на запись к окну памяти для любого подключенного однорангового узла. Для доступа к окну памяти подключенные одноранговые узлы должны иметь допустимый маркер.
NDK_OP_FLAG_DEFER
0x00000200
Указывает поставщику NDK, что он может отложить запрос к оборудованию для обработки. Дополнительные сведения об этом флаге см. в разделе Схема отложенной обработки NDKPI.

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

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

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

Код возврата Описание
STATUS_SUCCESS
Запрос был успешно отправлен. Запись завершения будет помещена в очередь в CQ после завершения рабочего запроса.
STATUS_CONNECTION_INVALID
Пара очередей (QP) не подключена.
STATUS_ACCESS_VIOLATION
Область памяти не разрешает тип доступа, запрошенный для окна памяти. Для флага NDK_OP_FLAG_ALLOW_WRITE требуется регион памяти, зарегистрированный с помощью флага NDK_MR_FLAG_ALLOW_LOCAL_WRITE.
Другие коды состояния
Произошла ошибка.

Комментарии

NdkBind привязывает окно памяти (МВТ) к определенной подобласти области памяти (MR).

Адрес в параметре VirtualAddress должен быть адресом в виртуальной непрерывной области, описанной цепочкой MDL, указанной при регистрации памяти. Адрес должен рассматриваться поставщиком как индекс в регионе памяти. Адрес не должен использоваться поставщиком в качестве допустимого виртуального адреса для чтения или записи содержимого буфера.

После возврата этого вызова удаленный маркер будет доступен с помощью функции NdkGetRemotetokenFromMw (NDK_FN_GET_REMOTE_TOKEN_FROM_MW).

Эта функция не поддерживает отсчитываемый от нуля виртуальный адрес.

Требования

Требование Значение
Минимальная версия клиента Не поддерживается, поддерживается в NDIS 6.30 и более поздних версиях.
Минимальная версия сервера Windows Server 2012
Целевая платформа Windows
Header ndkpi.h (включая Ndkpi.h)
IRQL <=DISPATCH_LEVEL

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

MmGetMdlVirtualAddress

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

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

NDK_FN_GET_REMOTE_TOKEN_FROM_MW

NDK_MR

NDK_MW

NDK_QP

NDK_RESULT