функция обратного вызова 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, что он может отложить запрос к оборудованию для обработки. Дополнительные сведения об этом флаге см. в разделе Схема отложенной обработки NDKPI.
Примечание Этот флаг поддерживается только в NDKPI 1.2 (Windows Server 2012 R2) и более поздних версиях. |
Возвращаемое значение
Функция NdkBind возвращает один из следующих кодов NTSTATUS.
Код возврата | Описание |
---|---|
|
Запрос был успешно отправлен. Запись завершения будет помещена в очередь в CQ после завершения рабочего запроса. |
|
Пара очередей (QP) не подключена. |
|
Область памяти не разрешает тип доступа, запрошенный для окна памяти. Для флага 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 |
См. также раздел
Схема отложенной обработки NDKPI
Требования к публикации запросов на работу NDKPI