完成端口GetQueuedCompletionStatus()返回错误,怎样获得真正的错误代码

GetQueuedCompletionStatus的返回值 <br />完成端口GetQueuedCompletionStatus返回值的问题 <br />先看看GetQueuedCompletionStatus函数的完整声明:<br />BOOL GetQueuedCompletionStatus(<br />HANDLE CompletionPort,       <br />LPDWORD lpNumberOfBytes,    <br />PULONG_PTR lpCompletionKey, <br />LPOVERLAPPED *lpOverlapped 阅读详情

GetQueuedCompletionStatus()返回错误,说明I/O失败。此时调用GetLastError()得到的往往是ERROR_NETNAME_DELETED(64),WSAGetLastError()也一样,这显然不是真正的错误代码,那么怎么得到真正的错误代码呢?

给出下面的代码:

int YourIOCPClass::GetSockError(WSAOVERLAPPED* pWSAOVERLAPPED)
{
	DWORD dwTrans;
	DWORD dwFlags;
	if(FALSE == WSAGetOverlappedResult(m_IOSock, pWSAOVERLAPPED, &dwTrans, FALSE, &dwFlags))
		return WSAGetLastError();
	else
		return ERROR_SUCCESS;
}

使用了WSAGetOverlappedResult()函数,封装一下就可以用在代码里了:)

GetQueuedCompletionStatus `lpCompletionKey`:指向 `DWORD` 指针,接收与完成通知关联的完成键(completion key),这个键可以用来识别特定的 I/O 操作。- `lpOverlapped`:指向 `OVERLAPPED` 结构的指针,如果 I/O 操作是重叠的,这个参数将指向关联的重叠结构。- `dwMilliseconds`:超时时间,如果设置为 0,函数会立即返回;- `lpNumberOfBytesTransferred`:指向 `DWORD` 指针,接收 I/O 操作转移的字节数。 阅读详情

相关推荐

实战指南:基于ELK与Grafana构建天融信防火墙日志可视化看板

本文详细介绍了如何基于ELK与Grafana构建天融信防火墙日志可视化看板,包括环境准备、日志收集与解析配置、Elasticsearch存储优化、Grafana看板设计等关键步骤。通过实战案例和优化技巧,帮助用户高效处理天融信防火墙日志,实现安全态势的可视化监控与分析。

weixin_34246529的博客 226

GetQueuedCompletionStatus返回几个错误代码

调用GetQueuedCompletionStatus,返回GetLastError()的值:121 信号灯超时时间已到

yaxiya的专栏 1783

如何使用AKShare作为OpenBB的数据源

`openbb_akshare`项目是 OpenBB 的数据源扩展。可以用于查询A股和港股数据

FinAnalyzer金融分析工具 3196

完成IO使用总结IOCP

完成IO使用总结   IOCP(I/O Completion Port,I/O完成端口)是性能最好的一种I/O模型。它是应用程序使用线程池处理异步I/O请求的一种机制。在处理多个并发的异步I/O请求时,以往的模型都是在接收请求是创建一个线程来应答请求。这样就有很多的线程并行地运行在系统中。而这些线程都是可运行的,Windows内核花费大量的时间在进行线程的上下文切换,并没有多少时间花在线程运行

熊小屁的专栏 1220

在 PFCG 中完成 SAP Fiori 对象分配:把 Business Catalog、Space、Page 与授权一次讲透

摘要:SAP Fiori权限配置的关键在于理解Business Catalog与Space的分层授权逻辑。传统SAP GUI中直接分配事务码的方式不适用于Fiori环境,必须通过PFCG为角色分配Catalog(提供应用访问权限)和Space(控制首页展示结构)。Catalog会自动解析所需OData服务授权,而Space则决定用户在Launchpad中看到的导航布局。常见错误包括直接分配Page而非其所属Space,或仅配置Space而忽略Catalog。最佳实践是优先使用Catalog驱动授权提议,再在

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 327

【示波器专题】示波器探头的原理深入——有源探头之单端有源探头

由于接地环路的苛刻要求,更高带宽的单端有源探头就算设计了也不实用。因此单端有源探头的带宽一般在6GHz以内,更高带宽的信号测量也只能使用差分有源探头(市面上有些型号的差分探头可同时兼顾单端测试)。......

一点硬件 2146

关于IOCP(IO完成端口)服务器在X86与X64下异常报错解决

问题:在X64 GetQueuedCompletionStatus获取消息对象PULONG_PTR越界报错 在X86下没有此问题 解决思路 GetQueuedCompletionStatus()的作用 在扫描完成端口的队列里是否有网络通信的请求存在(例如读取数据,发送数据等),一旦有的话,就将这个请求从完成端口的队列中取回来,继续执行处理代码 GetQueuedCompletionStatus()的数据来源 绑定Socket到一个完成端口的时候,用的CreateIoCompletionPort()函数,传

kason的博客 1584

大模型选型实战:为OpenClaw匹配最优“大脑”的全维度考量

大模型不是越贵越好,也不是参数越高越好,适合自己的使用场景才是最好的。按照我的方法,先明确自己的需求,再选对应的模型,配置多模型自动路由,既能保证体验,又能最大限度降低成本。我自己用这套配置用了半年多,不管是写文章、写代码还是处理复杂问题,都完全够用,成本也很低,大家可以参考一下。如果不知道选什么模型,可以在评论区说一下你的使用场景。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 343

完成端口GetQueuedCompletionStatus()返回错误,怎样获得真正的错误代码,错误返回64解决办法

GetQueuedCompletionStatus()返回错误,说明I/O失败。此时调用GetLastError()或WSAGetLastError()得到的往往是ERROR_NETNAME_DELETED(64),这显然不是真正的错误代码,那么怎么得到真正的错误代码呢?代码如下 int YourIOCPClass::GetSockError(SOCKET m_Socket ,W

ws19900912的专栏 2828

PY32F406K1CU6+I2C+ AT24C64 基本配置

【代码】PY32F406K1CU6+I2C+ AT24C64 基本配置。

sam的博客 90

ardupilot SBUS输入捕获

本节主要记录ardupilot 的sbus 输入捕获功能。ardupilot 默认支持多种无线协议控制输入设备,比如常用的PPM,SBUS,IBUS,DSM,SUMD,SRXL等协议,本节主要讲解ardupilot 如何通过定时器的pwm输入捕获来获取sbus数据。

陌城烟雨 271

GetQueuedCompletionStatus返回为0,GetLastError()错误号是234

GetLastError()代码234

yaxiya的专栏 524

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

关于完成端口函数的相应处理

完成端口GetQueuedCompletionStatus返回值的问题 先看看GetQueuedCompletionStatus函数的完整声明:BOOL GetQueuedCompletionStatus(HANDLE CompletionPort,       LPDWORD lpNumberOfBytes,    PULONG_PTR lpCompletionKey, LPOVERLAPP

zhou1xp的专栏 1371

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IOCP常见错误

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34259232的博客 394

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C++ IOCP问题备注

【1236错误】情况如下: 1.client连接server      2.client发送消息到server      3.client使用closesocket(sock);      4.server接收到关闭socket消息(lpNumberOfBytesTransferred为0, 注意:如果客户端发送的是空消息同样为零)然后使用closesocket函数关闭了这个客户端的s...

Muzzik的博客 701

接收I/O请求完成的通知

(1)I/O请求被加入设备驱动程序的队列,当请求完成以后,设备驱动也要负责通知我们I/O请求己经完成。 (2)可以用4种方法来接收I/O请求己经完成的通知 技术 特点 触发设备内核对象 ①允许一个线程发出I/O请求,另一个线程对结果进行处理。 ②当向一个设备同时发出多个I/O请求的时候,这种方法是不能用的,因为等待函数中等待的是同

lxj434368832的博客 1486

IOCP实现步骤

IOCP 实现步骤       如果懂得了 IOCP 的工作原理,它实现起来是很简单的。 它的实现步骤如下: 1.   创建好 IOCP 2.   创建 Socket ( socket 可以是由 Accept 得到) 3.   将 Socket 关联到 IOCP 4.   socket 向 IOCP 提交各种所需请求 5.   IOCP 操作完成之后将结果返回给 soc

zuiyuezhou888的专栏 2327

Windows C++网络编程:ws2_32.lib静态库详解与实战配置

在C++网络编程中,Socket通信是实现进程间网络数据传输的基础技术,它基于TCP/IP协议栈,通过创建、绑定、监听和连接等操作建立网络端点。其核心原理在于操作系统提供的套接字接口抽象,允许应用程序通过文件描述符风格的句柄进行网络I/O操作。这一技术的工程价值在于实现了跨主机的可靠或不可靠数据传输,是构建客户端-服务器架构、分布式系统的基石。在Windows平台下进行Socket编程时,开发者必须链接ws2_32.lib导入库,它作为Windows Sockets 2 API的桥梁,将代码调用导向系统底层

weixin_34109408的博客 368

完成端口 GetQueuedCompletionStatus 异常处理

公司的校园平安卡产品,C/S结构,客户端数目大概50个,服务端采用IOCP(完成端口)与客户端通信,Socket UDP协议。 服务端程序基本流程:  1.程序建立IOCP模型并绑定Socket,用WSARecvFrom 向IOCP通道中投递数据接收请求  2.Work线程,整体是循环:使用GetQueuedCompletionStatus获取通道中已经完成的请求和数据,然后有一个判断:

阿赖耶识的博客 3809

完成端口中的GetQueuedCompletionStatus参数的含义

GetQueuedCompletionStatus 参数是完成端口的最后一关,但是其中有几个参数容易混淆,在此列出来,希望在学习完成端口的时候通过该遍文章少走弯路。     GetQueuedCompletionStatus(   comPort, //已经创建,并且绑定了客户端套接字,的完成端口[句柄] --指定句柄   &dwIOsize, //本次传输数据的大小   

学习就像吃饭一样,不可以太着急,否则就会咀嚼不完全,而不消化 3898

IOCP: GetQueuedCompletionStatus

function GetQueuedCompletionStatus(hCompPort:THandle;var nBytesTransferred:Cardinal;var dwCompletionKey:Cardinal;var lpOverlapped:POverlapped;dwTimeout:Cardinal):BOOL;stdcall; 在完成端口编程中,GetQueued...

weixin_30458043的博客 606

IOCP的几点细节

1) 即使ReadFile或者WriteFile函数返回真,完成包还是会从GetQueuedCompletionStatus取得。 2) 与完成端口句柄绑定的套接字,其设置超时选项虽然可以成功,却是无效的。因为其相当于非阻塞模式,超时只是对阻塞模式而言的。 3) 一旦相关的套接字操作发生网络错误,GetQueuedCompletionStatus会返回假。通过GetQueuedCompleti

sinservice的专栏 1468
上一篇: IOCP如何既能发送RST复位连接避免TIME_WAIT状态,又能重用socket?
下一篇: 模拟C++11的新关键字decltype
HardIOCP
博客等级 码龄16年 7粉丝 13原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值