Функция BuildIoRingRegisterBuffers (ioringapi.h)

Регистрирует массив буферов в системе для будущих операций ввода-вывода.

Синтаксис

HRESULT BuildIoRingRegisterBuffers(
  HIORING                     ioRing,
  UINT32                      count,
  IORING_BUFFER_INFO const [] buffers,
  UINT_PTR                    userData
);

Параметры

ioRing

HIORING, представляющий дескриптор для круга ввода-вывода, для которого регистрируются буферы.

count

Объект UINT32, указывающий количество буферов, указанных в параметре buffers .

buffers

Массив IORING_BUFFER_INFO структур, представляющих регистримые буферы.

userData

Значение UINT_PTR, определяющее операцию регистрации. Укажите это значение при отмене операции с вызовом BuildIoRingCancelRequest. Если приложение реализует поведение отмены для операции, значение userData должно быть уникальным. В противном случае значение рассматривается системой как непрозрачное и может быть любым, включая 0.

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

Возвращает HRESULT, включая, помимо прочего, следующее:

Значение Описание:
S_OK Успешное завершение
IORING_E_SUBMISSION_QUEUE_FULL Очередь отправки заполнена, и дополнительные записи для сборки недоступны. Приложение должно отправить существующие записи и дождаться завершения некоторых из них перед добавлением дополнительных операций в очередь.
IORING_E_UNKNOWN_REQUIRED_FLAG Приложение предоставило обязательный флаг, который не известен реализации. Код библиотеки должен проверка поле IoRingVersionIORING_INFO, полученного из вызова GetIoRingInfo для определения версии API круга ввода-вывода, определяющего поддерживаемые операции и флаги. Приложения должны знать версию, используемую для создания круга ввода-вывода, и поэтому не должны предоставлять неподдерживаемые флаги во время выполнения.

Комментарии

Эта функция позволяет реализации ядра выполнять проверку и внутреннее сопоставление только один раз, чтобы избежать накладных расходов на каждую операцию ввода-вывода. Последующие записи в очереди отправки могут ссылаться на буферы, зарегистрированные с помощью этой функции, используя целочисленный индекс в массиве. Если предыдущая регистрация существует, она полностью заменяет предыдущую регистрацию. Все записи в массиве с адресом NULL и длиной 0 являются разреженными и не используются. Это позволяет освободить один или несколько ранее зарегистрированных буферов.

Требования

   
Минимальная версия клиента Сборка Windows 22000
Минимальная версия сервера Сборка Windows 22000
Верхняя часть ioringapi.h