首页 > 其他分享 >完成端口API整理

完成端口API整理

时间:2024-01-16 11:33:38浏览次数:31  
标签:指向 句柄 端口 lpOverlapped API 内核 整理 DWORD lpBuffers

1.

BOOL GetQueuedCompletionStatus(
  HANDLE       CompletionPort,
  LPDWORD      lpNumberOfBytesTransferred,
  PULONG_PTR   lpCompletionKey,
  LPOVERLAPPED *lpOverlapped,
  DWORD        dwMilliseconds
);
  • CompletionPort: 完成端口的句柄,用于与 I/O 操作相关联。

  • lpNumberOfBytesTransferred: 一个指向DWORD的指针,用于接收已完成的I/O操作的字节数。

  • lpCompletionKey: 一个指向ULONG_PTR的指针,用于接收与已完成I/O操作关联的完成键。

  • lpOverlapped: 一个指向 OVERLAPPED 结构的指针,用于接收已完成的I/O操作的信息。

  • dwMilliseconds: 超时时间,以毫秒为单位。如果设置为 INFINITE,则函数将一直等待,直到有I/O操作完成。

2.

DWORD WaitForSingleObject(
  HANDLE hHandle,
  DWORD  dwMilliseconds
);

  

  • hHandle: 要等待的内核对象的句柄。这可以是诸如线程句柄、进程句柄、事件句柄等的内核对象。

  • dwMilliseconds: 最大等待时间,以毫秒为单位。如果设置为 INFINITE,则函数将一直等待,直到内核对象的状态变为 signaled。

函数返回值是等待对象的状态:

  • WAIT_OBJECT_0: 内核对象处于 signaled 状态,等待成功。

  • WAIT_TIMEOUT: 等待时间已过,但内核对象仍处于 nonsignaled 状态。

  • WAIT_ABANDONED: 等待成功,且内核对象是一个互斥对象,之前拥有该对象的线程已经终止。

  • WAIT_FAILED: 函数调用失败,可以通过调用 GetLastError 获取错误代码。

3.

int WSASend(
  SOCKET                             s,
  LPWSABUF                           lpBuffers,
  DWORD                              dwBufferCount,
  LPDWORD                            lpNumberOfBytesSent,
  DWORD                              dwFlags,
  LPWSAOVERLAPPED                    lpOverlapped,
  LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
  • s: 指定一个已连接的、正在监听的或正在接受连接的套接字。
  • lpBuffers: 指定一个 WSABUF 结构数组,每个结构指定一个缓冲区及其大小。
  • dwBufferCount: 指定 lpBuffers 数组中的元素个数。
  • lpNumberOfBytesSent: 发送函数返回时,指向已发送的字节数。
  • dwFlags: 提供附加的发送选项。
  • lpOverlapped: 如果是异步操作,指向一个 WSAOVERLAPPED 结构。
  • lpCompletionRoutine: 如果是异步操作,指向完成例程。

4.

int WSARecv(
  SOCKET                             s,
  LPWSABUF                           lpBuffers,
  DWORD                              dwBufferCount,
  LPDWORD                            lpNumberOfBytesRecvd,
  LPDWORD                            lpFlags,
  LPWSAOVERLAPPED                    lpOverlapped,
  LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);

  

  • s: 指定一个已连接的、正在监听的或正在接受连接的套接字。
  • lpBuffers: 指定一个 WSABUF 结构数组,每个结构指定一个缓冲区及其大小。
  • dwBufferCount: 指定 lpBuffers 数组中的元素个数。
  • lpNumberOfBytesRecvd: 接收函数返回时,指向接收到的字节数。
  • lpFlags: 提供附加的接收选项。
  • lpOverlapped: 如果是异步操作,指向一个 WSAOVERLAPPED 结构。
  • lpCompletionRoutine: 如果是异步操作,指向完成例程。

标签:指向,句柄,端口,lpOverlapped,API,内核,整理,DWORD,lpBuffers
From: https://www.cnblogs.com/dbnn/p/17967295

相关文章

  • Nginx开启IPv6端口监听
    一、场景:在IPv6的改造过程中,使用Nginx进行IPv6反向代理IPv4的业务系统。二、 NginX配置#定义一个服务器块,监听7777端口,并启用SSL(HTTPS)支持server{  #监听所有IPv4和IPv6的7777端口  listen   7777ssl;  listen[::]:7777;  #设置只能通过域......
  • PHP开发API接口签名生成及验证
    开发过程中,我们经常会与接口打交道,有的时候是调取别人网站的接口,有的时候是为他人提供自己网站的接口,但是在这调取的过程中都离不开签名验证。我们在设计签名验证的时候,请注意要满足以下几点:可变性:每次的签名必须是不一样的。时效性:每次请求的时效,过期作废等。唯一性:每次的签......
  • 80端口被System占用最全解决方案
    背景想要启动若依系统,启动失败,提示80端口被占用。百度搜索了很多方法无法解决,现将自己尝试的方法都总结一下,希望对碰到这个问题的朋友有点帮助。解决方案首先查找占用80端口的程序进入命令提示行(开始运行输入CMD),输入命令netstat–ano,就可以看到本机所有端口的使用情况,一般......
  • FastAPI学习-29 log_config 设置 logger 日志格式
    前言FastAPI服务是通过uvicorn来提供的,日志都是uvicorn里配置的。官方文档地址:https://www.uvicorn.org/settings/#logginguvicorn的logging日志我们可以通过uvicorn.run()方式启动服务uvicorn.run("example:app",port=5000,reload=True,access_log=False)于......
  • JavaSE(12) - 常用API(下)
    JavaSE(12)-常用API(下)JDK7以前的时间相关类Date类如何创建日期对象Datedate=newDate();//空参构造创建的对象,默认表示系统当前时间Datedate=newDate(指定毫秒值);//有参构造创建的对象,表示指定时间如何修改时间对象中的毫秒值setTime(毫秒值);如......
  • Stream API
    StreamAPI概念:StreamAPI是Java8中处理集合的关键抽象概念,StreamAPI允许开发人员在不改变原始数据源的情况下对集合进行操作(查找、过滤、数据映射等等),这使得代码更加简洁、易读和可维护。总之,StreamAPI提供了一种高效且易于使用的数据处理方式注意点:Stream不会存储数据......
  • FastAPI学习-28 alembic数据迁移报错:Target database is not up to date 报错解决办法
    前言当表结构有变更,数据迁移时,出现报错:Targetdatabaseisnotuptodate遇到的问题执行迁移命令alembicrevision--autogenerate-m"testv4"出现如下报错>alembicrevision--autogenerate-m"testv4"INFO[alembic.runtime.migration]ContextimplMySQLImpl.INF......
  • 深度学习基础知识整理
    自动编码器Auto-encoders是一种人工神经网络,用于学习未标记数据的有效编码。它由两个部分组成:编码器和解码器。编码器将输入数据转换为一种更紧凑的表示形式,而解码器则将该表示形式转换回原始数据。这种方法可以用于降维,去噪,特征提取和生成模型。自编码器的训练过程是无监督的,因......
  • API可视化编排如何实现
    企业随着前后端分离架构、微服务架构、中台战略、产业互联互通的实施必将产生大量的各种协议的API服务,API将成为企业的数字化资产且API会越来越多, API服务之间的相互调用和依赖情况也随之越来越多和复杂。业务系统与业务系统之间、关联企业之间的API都相应存在大量的API相互调用......
  • 【Vue2+3入门到实战】(23)Vue3之组合式API - 父子通信、模版引用、provide和inject、Vue
    这里写自定义目录标题一、组合式API-父子通信1.父传子2.子传父二、组合式API-模版引用1.基本使用2.defineExpose三、组合式API-provide和inject1.作用和场景2.跨层传递普通数据3.跨层传递响应式数据4.跨层传递方法四、Vue3.3新特性-defineOptions五、Vue3.3新特性......