Função BuildIoRingRegisterBuffers (ioringapi.h)

Registra uma matriz de buffers com o sistema para futuras operações de anel de E/S.

Sintaxe

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

Parâmetros

ioRing

Um HIORING que representa um identificador para o anel de E/S para o qual os buffers são registrados.

count

Um UINT32 que especifica o número de buffers fornecidos no parâmetro buffers .

buffers

Uma matriz de estruturas IORING_BUFFER_INFO que representam os buffers a serem registrados.

userData

Um valor UINT_PTR que identifica a operação de registro. Especifique esse valor ao cancelar a operação com uma chamada para BuildIoRingCancelRequest. Se um aplicativo implementar o comportamento de cancelamento para a operação, o valor userData deverá ser exclusivo. Caso contrário, o valor é tratado como opaco pelo sistema e pode ser qualquer coisa, incluindo 0.

Valor retornado

Retorna um HRESULT incluindo, mas não se limitando ao seguinte:

Valor Descrição
S_OK Êxito
IORING_E_SUBMISSION_QUEUE_FULL A fila de envio está cheia e nenhuma entrada adicional está disponível para compilação. O aplicativo deve enviar as entradas existentes e aguardar a conclusão de algumas delas antes de adicionar mais operações à fila.
IORING_E_UNKNOWN_REQUIRED_FLAG O aplicativo forneceu um sinalizador obrigatório que não é conhecido pela implementação. O código da biblioteca deve marcar o campo IoRingVersion do IORING_INFO obtido de uma chamada para GetIoRingInfo para determinar a versão da API de um anel de E/S que determina as operações e os sinalizadores com suporte. Os aplicativos devem saber a versão usada para criar o anel de E/S e, portanto, não devem fornecer sinalizadores sem suporte em runtime.

Comentários

Essa função permite que a implementação do kernel execute a validação e o mapeamento interno apenas uma vez, evitando a sobrecarga em cada operação de E/S. As entradas subsequentes na fila de envio podem se referir aos buffers registrados com essa função usando um índice inteiro na matriz. Se houver um registro anterior, isso substituirá completamente o registro anterior. Todas as entradas na matriz com um Endereço de NULL e um Comprimento de 0 são entradas esparsas e não são usadas. Isso permite que você libere um ou mais dos buffers registrados anteriormente.

Requisitos

   
Cliente mínimo com suporte Windows Build 22000
Servidor mínimo com suporte Windows Build 22000
Cabeçalho ioringapi.h