Windows新异步网络编程模型2 RIO-函数原型

news/2024/4/26 14:07:34/文章来源:https://blog.csdn.net/hksoobe/article/details/129222322

情况进行具体使用。

  1. RIOAcceptEx

function RIOAcceptEx(RIOHandle: RIO_HANDLE; AcceptID: PRIO_BUF;

AcceptIDCount: ULONG; LocalAddressLength: ULONG; RemoteAddressLength: ULONG;

RequestContext: PVOID; Flags: DWORD): BOOL; stdcall;

RIOAcceptEx 函数将一个已连接的套接字绑定到 RIO 请求队列中的新请求,并将请求 ID 返回给调用者。此函数可用于接收基于流的套接字连接。

  1. RIOBind

function RIOBind(Socket: TSocket; RioHandle: RIO_HANDLE;

BindId: PRIO_BUF; BindCount: DWORD; Context: DWORD): BOOL; stdcall;

RIOBind 函数将一个已连接的套接字绑定到 RIO 请求队列中的新请求,该请求使用指定的缓冲区 ID。

  1. RIOCloseCompletionQueue

function RIOCloseCompletionQueue(RIOHandle: RIO_HANDLE): BOOL; stdcall;

RIOCloseCompletionQueue 函数关闭指定的 RIO 完成队列句柄,并释放与之相关联的资源。

  1. RIOCloseRequestQueue

DelphiCopy codefunction RIOCloseRequestQueue(RIOHandle: RIO_HANDLE): BOOL; stdcall;

RIOCloseRequestQueue 函数关闭指定的 RIO 请求队列句柄,并释放与之相关联的资源。

  1. RIOCreate

function RIOCreate(const SocketQueue: TSocket; MaxOutstandingReceive: ULONG;

MaxOutstandingSend: ULONG; MaxReceiveDataBuffers: ULONG;

MaxReceiveBufferData: ULONG; MaxSendDataBuffers: ULONG;

MaxSendBufferData: ULONG; RequestContext: PVOID;

Result: PRIO_RESULT): RIO_HANDLE; stdcall;

RIOCreate 函数创建一个 RIO 请求队列,并返回一个 RIO 句柄以供使用。

  1. RIOCreateCompletionQueue

function RIOCreateCompletionQueue(Entries: DWORD; NotificationCompletion: PRIO_NOTIFICATION_COMPLETION): RIO_HANDLE; stdcall;

RIOCreateCompletionQueue 函数创建一个 RIO 完成队列,并返回一个 RIO 句柄以供使用。

  1. RIOCreateRequestQueue

function RIOCreateRequestQueue(const Socket: TSocket; MaxOutstandingReceive: ULONG;

MaxReceiveDataBuffers: ULONG; MaxOutstandingSend: ULONG;

MaxSendDataBuffers: ULONG; ReceiveDataLength: ULONG;

SendDataLength: ULONG; RequestContext: PVOID;

NotificationCompletion: PRIO_NOTIFICATION_COMPLETION;

RequestQueue: PRIO_HANDLE; RequestQueueId: PRIO_CQ): BOOL; stdcall;

RIOCreateRequestQueue 函数创建一个 RIO 请求队列,并将其与指定的套接字相关联。

  1. RIODeregisterBuffer

function RIODeregisterBuffer(RIOHandle: RIO_HANDLE; BufferId: RIO_BUFFERID): BOOL; stdcall;

RIODeregisterBuffer 函数取消注册 RIO 缓冲区,并将其从 RIO 对象的缓冲区池中移除。

  1. RIODeregisterBufferList

function RIODeregisterBufferList(RIOHandle: RIO_HANDLE; BufferIds: PRIO_BUFFERID;

BufferIdCount: ULONG): BOOL; stdcall;

RIODeregisterBufferList 函数取消注册一组 RIO 缓冲区,并将其从 RIO 对象的缓冲区池中移除。

  1. RIODisconnectEx

function RIODisconnectEx(RIOHandle: RIO_HANDLE; DisconnectID: PRIO_BUF;

Flags: DWORD; Reserved: DWORD): BOOL; stdcall;

RIODisconnectEx 函数断开一个已连接的套接字连接,并将断开请求 ID 返回给调用者。

  1. RIOGetBufferId

function RIOGetBufferId(Buffer: PVOID): RIO_BUFFERID; stdcall;

RIOGetBufferId 函数返回指定缓冲区的缓冲区 ID。

  1. RIOGetBufferIdEx

function RIOGetBufferIdEx(Buffer: PVOID; Offset: ULONG): RIO_BUFFERID; stdcall;

RIOGetBufferIdEx 函数返回指定缓冲区偏移量处的缓冲区 ID。

  1. RIOGetCompletionStatus

function RIOGetCompletionStatus(RIOHandle: RIO_HANDLE; CQ: PRIO_CQ; Data: PRIORESULT; Flags: DWORD): BOOL; stdcall;

RIOGetCompletionStatus 函数从 RIO 完成队列中获取已完成的 I/O 操作状态和信息。

  1. RIOGetCompletionStatusEx

function RIOGetCompletionStatusEx(RIOHandle: RIO_HANDLE; CQ: PRIO_CQ;

Results: PRIORESULT; ResultsLength: ULONG; BytesTransferred: PULONG;

Flags: DWORD; RequestContext: PVOID): BOOL; stdcall;

RIOGetCompletionStatusEx 函数从 RIO 完成队列中获取已完成的 I/O 操作状态和信息,并将结果保存到指定的缓冲区中。

  1. RIOGetQueuedCompletionStatus

function RIOGetQueuedCompletionStatus(CQ: RIO_CQ; NumResults: PDWORD;

Results: PRIORESULT; Timeout: DWORD): BOOL; stdcall;

RIOGetQueuedCompletionStatus 函数从 RIO 完成队列中获取已完成的 I/O 操作状态和信息。

  1. RIOReceive

function RIOReceive(RIOHandle: RIO_HANDLE; RequestQueue: PRIO_RQ;

Buffer: PVOID; DataBufferLength: ULONG; LocalAddress: PSOCKADDR;

RemoteAddress: PSOCKADDR; ControlBuffer: PVOID;

ControlBufferLength: ULONG; Flags: DWORD; RequestContext: PVOID): BOOL; stdcall;

RIOReceive 函数提交异步接收请求。

  1. RIOReceiveEx

function RIOReceiveEx(RIOHandle: RIO_HANDLE; RequestQueue: PRIO_RQ;

Data: PRIO_BUF; DataBufferCount: ULONG; LocalAddress: PSOCKADDR;

RemoteAddress: PSOCKADDR; Control: PRIO_BUF; ControlBufferCount: ULONG;

Flags: DWORD; RequestContext: PVOID): BOOL; stdcall;

RIOReceiveEx函数提交异步接收请求,该请求将指定的多个数据缓冲区与接收请求相关联。

  1. RIOResizeCompletionQueue

function RIOResizeCompletionQueue(RIOHandle: RIO_HANDLE; CQ: PRIO_CQ;

Entries: DWORD; Reserved: DWORD): BOOL; stdcall;

RIOResizeCompletionQueue 函数更改 RIO 完成队列的大小。

  1. RIOSend

function RIOSend(RIOHandle: RIO_HANDLE; RequestQueue: PRIO_RQ;

Buffer: PVOID; DataBufferLength: ULONG; LocalAddress: PSOCKADDR;

RemoteAddress: PSOCKADDR; ControlBuffer: PVOID;

ControlBufferLength: ULONG; Flags: DWORD; RequestContext: PVOID): BOOL; stdcall;

RIOSend 函数提交异步发送请求。

  1. RIOSendEx

function RIOSendEx(RIOHandle: RIO_HANDLE; RequestQueue: PRIO_RQ;

Data: PRIO_BUF; DataBufferCount: ULONG; LocalAddress: PSOCKADDR;

RemoteAddress: PSOCKADDR; Control: PRIO_BUF; ControlBufferCount: ULONG;

Flags: DWORD; RequestContext: PVOID): BOOL; stdcall;

RIOSendEx 函数提交异步发送请求,该请求将指定的多个数据缓冲区与发送请求相关联。

  1. RIOSendMessages

function RIOSendMessages(RIOHandle: RIO_HANDLE; Messages: PRIO_BUF;

MessageCount: ULONG; Flags: DWORD; RequestContext: PVOID): BOOL; stdcall;

RIOSendMessages 函数提交多个异步发送请求。

  1. RIOSendMessagesEx

function RIOSendMessagesEx(RIOHandle: RIO_HANDLE; Messages: PRIO_BUF;

MessageCount: ULONG; LocalAddress: PSOCKADDR; RemoteAddress: PSOCKADDR;

Control: PRIO_BUF; ControlBufferCount: ULONG; Flags: DWORD;

RequestContext: PVOID): BOOL; stdcall;

RIOSendMessagesEx 函数提交多个异步发送请求,该请求将指定的多个数据缓冲区与发送请求相关联。

  1. RIOSendTo

function RIOSendTo(RIOHandle: RIO_HANDLE; RequestQueue: PRIO_RQ;

Buffer: PVOID; DataBufferLength: ULONG; RemoteAddress: PSOCKADDR;

ControlBuffer: PVOID; ControlBufferLength: ULONG; Flags: DWORD;

RequestContext: PVOID): BOOL; stdcall;

RIOSendTo 函数提交异步发送请求,将数据发送到指定的目标地址。

  1. RIOSendToEx

function RIOSendToEx(RIOHandle: RIO_HANDLE; RequestQueue: PRIO_RQ;

Data: PRIO_BUF; DataBufferCount: ULONG; RemoteAddress: PSOCKADDR;

Control: PRIO_BUF; ControlBufferCount: ULONG; Flags: DWORD;

RequestContext: PVOID): BOOL; stdcall;

RIOSendToEx 函数提交异步发送请求,该请求将指定的多个数据缓冲区与发送请求相关联,并将数据发送到指定的目标地址。

  1. RIOSetCompletionQueueEx

DelphiCopy codefunction RIOSetCompletionQueueEx(RIOHandle: RIO_HANDLE; CQ: PRIO_CQ;

Event: THandle; Reserved: DWORD; NotificationCount: DWORD): BOOL; stdcall;

RIOSetCompletionQueueEx 函数将 RIO 完成队列与指定的 I/O 完成端口相关联,以便通知程序有关已完成 I/O 操作的信息。

  1. RIOSetRequestQueueCallback

function RIOSetRequestQueueCallback(RIOHandle: RIO_HANDLE; RequestQueue: PRIO_RQ;

NotificationCompletion: PRIO_NOTIFICATION_COMPLETION;

RequestContext: PVOID): BOOL; stdcall;

RIOSetRequestQueueCallback 函数为 RIO 请求队列设置回调函数,以便通知程序有关异步操作完成的信息。

  1. RIOStreamReceive

function RIOStreamReceive(RIOHandle: RIO_HANDLE; StreamId: PRIO_BUF;

DataBuffer: PVOID; DataBufferLength: ULONG; Flags: DWORD;

RequestContext: PVOID): BOOL; stdcall;

RIOStreamReceive 函数从指定的 RIO 流中接收数据。

  1. RIOStreamReceiveEx

function RIOStreamReceiveEx(RIOHandle: RIO_HANDLE; StreamId: PRIO_BUF;

Data: PRIO_BUF; DataBufferCount: ULONG; Flags: DWORD;

RequestContext: PVOID): BOOL; stdcall;

RIOStreamReceiveEx 函数从指定的 RIO 流中接收数据,并将其与请求 ID 相关联。

  1. RIOStreamSend

function RIOStreamSend(RIOHandle: RIO_HANDLE; StreamId: PRIO_BUF;

DataBuffer: PVOID; DataBufferLength: ULONG; Flags: DWORD;

RequestContext: PVOID): BOOL; stdcall;

RIOStreamSend 函数将数据发送到指定的 RIO 流。

  1. RIOStreamSendEx

function RIOStreamSendEx(RIOHandle: RIO_HANDLE; StreamId: PRIO_BUF;

Data: PRIO_BUF; DataBufferCount: ULONG; Flags: DWORD;

RequestContext: PVOID): BOOL; stdcall;

RIOStreamSendEx 函数将指定的多个数据缓冲区发送到指定的 RIO 流。

  1. RIOUpdateCompletionQueue

function RIOUpdateCompletionQueue(RIOHandle: RIO_HANDLE; CQ: PRIO_CQ;

NotificationCompletion: PRIO_NOTIFICATION_COMPLETION): BOOL; stdcall;

RIOUpdateCompletionQueue 函数更新 RIO 完成队列的回调函数和相关的通知信息。

typePRIO_EXTENSION_FUNCTION_TABLE = ^RIO_EXTENSION_FUNCTION_TABLE;RIO_EXTENSION_FUNCTION_TABLE = packed recordcbSize: DWORD;RIOReceive: TRIOReceive;RIOReceiveEx: TRIOReceiveEx;RIOSend: TRIOSend;RIOSendEx: TRIOSendEx;RIOSendTo: TRIOSendTo;RIOSendToEx: TRIOSendToEx;RIOCreateRequestQueue: TRIOSendToEx;RIOCreateCompletionQueue: TRIOCreateCompletionQueue;RIOCloseCompletionQueue: TRIOCloseCompletionQueue;RIOResizeCompletionQueue: TRIOResizeCompletionQueue;RIORegisterBuffer: TRIOResizeCompletionQueue;RIODeregisterBuffer: TRIODeregisterBuffer;RIOStartRequestQueue: TRIOStartRequestQueue;RIOStopRequestQueue: TRIOStopRequestQueue;RIOCreateRequestQueueEx: TRIOCreateRequestQueueEx;RIOSendMessages: TRIOSendMessages;RIOSendMessagesEx: TRIOSendMessagesEx;RIORecv: TRIOSendMessagesEx;RIORecvEx: TRIOSendMessagesEx;RIOStreamRecv: TRIOStreamRecv;RIOStreamRecvEx: TRIOStreamRecvEx;RIOStreamSend: TRIOStreamSend;RIOStreamSendEx: TRIOStreamSendEx;RIOQueryBuffer: TRIODeregisterBuffer;RIOGetBufferId: TRIOGetBufferId;RIOGetBufferIdEx: TRIOGetBufferIdEx;RIOFreeBufferId: TRIODeregisterBufferList;RIOFlush: TRIOFlush;RIOGetCompletionStatus: TRIOGetCompletionStatus;RIOGetCompletionStatusEx: TRIOGetCompletionStatusEx;end;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_74495.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习笔记】Python基础笔记

目录基础语法加载数据:pd.read_csv查看数据大小:shape浏览数据行字段:columns浏览少量数据:head()浏览数据概要:describe()输出:to_csv基础功能语法缺省值去除缺失值:dropna按行删除&#xff1a…

Paddle配置

目录: 1.激活环境 2.版本选择 突发情况:ModuleNotFoundError: No module named paddle 检验是否安装成功 1.激活环境 Anaconda: conda remove -n paddle --all conda activate paddle 2.版本选择 打开链接:https://www.pa…

基于企业微信应用消息的每日早安推送

基于企业微信应用消息的每日早安推送 第一步:注册企业微信 企业微信注册地址:https://work.weixin.qq.com/wework_admin/register_wx 按照正常流程填写信息即可,个人也可以注册企业微信,不需要公司 注册完成后,登录…

Google Guice 4:Bindings(2)

4 Scopes (实例的作用域) 4.1 默认规则:unreuse instance 到目前为止,通过bind().to()和Provides定义的binding,每次需要注入实例对象时,Guice都会创建一个新的实例 // 修改DatabaseTransactionLog,使其打…

Ncvicat 打开sql文件方法

Nacicat打开sql文件时,有比较多的文章介绍可以直接打开,方法介绍的比较多,但是我遇到了一个坑,就是如何配置环境都无法打开。 本机环境: windows10 mysql 5.7.40 Navicat12.1 一、遇到问题情况 1.1、通过navicat…

【python量化】大幅提升预测性能,将NSTransformer用于股价预测

写在前面 NSTransformer模型来自NIPS 2022的一篇paper《Non-stationary Transformers: Exploring the Stationarity in Time Series Forecasting》。NSTransformer的目的主要是为了解决其他方法出现过平稳化处理的问题。其通过提出序列平稳化以及去平稳化注意力机制可以使得模型…

2023年三月份图形化二级打卡试题

活动时间 从2023年3月1日至3月21日,每天一道编程题。 本次打卡的规则如下: 小朋友每天利用10~15分钟做一道编程题,遇到问题就来群内讨论,我来给大家答疑。 小朋友做完题目后,截图到朋友圈打卡并把打卡的截图发到活动群…

【尚硅谷MySQL入门到高级-宋红康】数据库概述

1、为什么要使用数据库 数据的持久化 2、数据库与数据库管理系统 2.1 数据库的相关概念 2.2 数据库与数据库管理系统的关系 3、 MySQL介绍 MySQL从5.7版本直接跳跃发布了8.0版本 ,可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上做了显著的改进与增强&a…

CXL技术分析

CXL,全称Compute Express Link,该技术由Intel牵头开发用于高性能计算、数据中心,主要解决处理器、加速器和内存之间的cache一致性问题,可消除CPU、专用加速器的计算密集型工作负载的传输瓶颈,显著提升系统性能。 一、…

python的装饰器与设计模式中的装饰器模式

相信很多人在初次接触python中的装饰器时,会跟我一样有个疑问,这跟设计模式中的装饰器模式有什么区别吗?本质上是一样的,都是对现有对象,包括函数或者类的一种扩展。这篇文档将进行对比分析。 python的装饰器 装饰器…

duboo+zookeeper分布式架构入门

分布式 dubbo Zookeeper 分布式系统就是若干独立计算机的集合(并且这些计算机之间相互有关联,就像是一台计算机中的C盘F盘等),这些计算对于用户来说就是一个独立的系统。 zookeeper安装 下载地址:Index of /dist/z…

【数据库系统概论】基础知识总结

🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…

C++10:非类型模板参数以及模板的特化

目录 非类型模板参数 模板的特化 模板类的特化 1.全特化 2.偏特化 模板其实还有其他的玩法&#xff0c;比如非类型模板参数以及模板的特化。 非类型模板参数 在记述非类型模板参数前&#xff0c;我们认识一下C中一个比较鸡肋的类&#xff0c;array #include<iostream&g…

k8s-yaml文件

文章目录一、K8S支持的文件格式1、yaml和json的主要区别2、YAML语言格式二、YAML1、查看 API 资源版本标签2、编写资源配置清单2.1 编写 nginx-test.yaml 资源配置清单2.2 创建资源对象2.3 查看创建的pod资源3、创建service服务对外提供访问并测试3.1 编写nginx-svc-test.yaml文…

数据仓库Hive

HIve介绍 Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具&#xff0c;可以用来进行数据提取转化加载&#xff0c;可以简称为ETL。 Hive 定义了简单的类SQL查询语言&#xff0c;称为HQL&#xff0c;它允许熟悉SQL的用户直接查询Hadoop中的数据&#xf…

如何从0创建Spring Cloud Alibaba(多模块)

以一个父工程带两个Module&#xff08;test1、test2&#xff09;为例。 一、创建父工程 由于是模块化项目&#xff0c;那么父工程不需要实际的代码逻辑&#xff0c;因此无需创建src&#xff0c;那么可以有几种方式创建&#xff0c;例如&#xff1a; 使用Spring Initializr脚…

腾讯一面—Android 系统启动流程详解

正文AMS 是 Android 中最核心的服务之一&#xff0c;主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作&#xff0c;其职责与操作系统中的进程管理和调度模块相类似&#xff0c;它本身也是一个 Binder 的实现类&#xff0c;应用进程能通过 Binder 机制调用…

ARM Context synchronization event和Instruction Synchronization Barrier

在Arm architecture里&#xff0c;经常提到Context synchronization event(CSE)和Explicit synchronization&#xff0c;Context synchronization events在之前是叫作context synchronization operations。Explicit synchronization是Context synchronization event的结果&…

基于yolov5与改进VGGNet的车辆多标签实时识别算法

摘 要 为了能快速、有效地识别视频中的车辆信息&#xff0c;文中结合YOLOv3算法和CNN算法的优点&#xff0c;设计了一种能实时识别车辆多标签信息的算法。首先&#xff0c;利用具有较高识别速度和准确率的YOLOv3实现对视频流中车辆的实时监测和定位。在获得车辆的位置信息后…

如何提高机器人专业课讲师的收入

先放一些总结&#xff1a;为什么我是不合格的高校机器人工程专业讲师&#xff1f;2020不合格肯定收入不会提升&#xff0c;甚至失业风险会非常高的。为何所做的课程努力几乎全部失败呢&#xff1f;→机器人工程类← 2022不能一次次失败&#xff0c;因为只有自己会为失败买单&am…