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

情况进行具体使用。

  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 完成队列的回调函数和相关的通知信息。

type
  PRIO_EXTENSION_FUNCTION_TABLE = ^RIO_EXTENSION_FUNCTION_TABLE;
  RIO_EXTENSION_FUNCTION_TABLE = packed record
    cbSize: 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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值