【背景】闹心,这两天在调试一个C++的IOCP服务器,我在win x64下进行编译,发现当客户端断开连接后,IOCP服务器端在销毁(或重置)socket时会报错:读取访问权限冲突。this 是 0x78DECC0。作为新手小白用着拙劣的调试手段,花了20多个小时一步一步从析构函数追踪到CreateIoCompletionPort()函数的第三个参数CompletionKey没有正确被绑定。直到刚才才发现,我原来的代码是

CreateIoCompletionPort((HANDLE)listenSockContext->connSocket, completionPort, (DWORD)listenSockContext, 0)

问题就出在这个(DWORD)listenSockContext上,在64位系统下,我的这个指针listenSockContext是64位的,而DWORD不论在64还是32位系统里,都是32位(double word双字),也就是说,这样强制类型转换,使我丢失了高32位数据。最后,将DWORD换成DWORD_PTR,完美解决。

CreateIoCompletionPort((HANDLE)listenSockContext->connSocket, completionPort, (DWORD_PTR)listenSockContext, 0)

【内容】DWORD即双字,在64位和32位系统下这个值始终是32位的,而DWORD_PTR可以根据编译的系统类型,编译器自动选择相对应的位数。
【P.S.】感谢会卖萌的吴老师。

C++ DWORD与64位操作系统相关推荐

  1. 64位操作系统——(二)kernel

    64位操作系统--(二)kernel 作者:王赛宇 参考列表: 主要参考:<一个六十四位操作系统的设计与实现>--田雨 <Using as> --Dean Elsner &am ...

  2. win32程序时如何在64位操作系统上运行的

    1,利用下面的代码编译成32位的程序,然后在64位操作系统中放入OD中进行调试. #include<Windows.h> #include<stdio.h> void main ...

  3. 解决win7 64位操作系统下安装PL/SQL后连接报错问题: make sure you have the 32 bits oracle client installed

    解决win7 64位操作系统下安装PL/SQL后连接报错问题: make sure you have the 32 bits oracle client installed 参考文章: (1)解决wi ...

  4. VM8不能安装64位操作系统原因解析

    在64位的WIN7系统上,遇到64位系统无法在VMWARE8中安装的问题,刚开始以为是下载的ISO和VMWARE软件有问题.试了好几次发现,不管是Linux还是Windows,只要是64位系统都不能安 ...

  5. VMWare不能安装64位操作系统原因探析

    您已经配置此虚拟机使用64位客户操作系统.然而,64位操作系统不可用.此主机具有虚拟化支持能力的,但虚拟化技术被禁用. 这通常是因为虚拟化技术已经在BIOS /固件设置或禁用或主机没有权限改变此设置. ...

  6. Win10的64位操作系统,Visual Studio 2019配置OpenCV4.1.0

    一.Win10的64位操作系统,直接在VS官网下载VisualStudioCommunity,默认安装,安装的是VisualStudioCommunity2019: (安装的[工作负载]步骤时选的是[ ...

  7. 在RedHat4 64位操作系统下,安装Oracle 10g

    在RedHat4 64位操作系统下,安装Oracle <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:offi ...

  8. 64位操作系统下IIS报“试图加载格式不正确的程序”错误

    缘由:在64位操作系统下IIS发布32位的项目,报"项目依赖的dll无法读取,试图加载格式不正确的程序"错误. 原因:程序集之间的通讯要么全是64位环境下的,要么全是32位环境下的 ...

  9. 数据源名称和 64 位操作系统

    如果您要将某一应用程序构建为在 64 位操作系统上运行的 32 位应用程序并运行该应用程序,则必须使用 %windir%\SysWOW64\odbcad32.exe 的 ODBC 管理器创建 ODBC ...

最新文章

  1. Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name 解决
  2. GDCM:独特的uid测试程序
  3. Python查询MySQL进行远程采集图片实例
  4. 论文浅尝 | 时序与因果关系联合推理
  5. 机器学习经典算法笔记——线性回归
  6. Pytorch:Dataset总结
  7. 项目管理实践之版本控制工具SVN在Windows平台下的平台搭建
  8. dom4j 解析xml文件demo
  9. 2dpsk调制解调实验matlab_贼详细的8PSK调制与解调详细过程
  10. Centos6 安装可视化界面
  11. Linux下查看日志常用命令
  12. C# .net实现发送手机短信功能
  13. js弹窗确认取消php,JS实现删除时的确认弹窗
  14. 读后感:八部众---走出软件作坊:三五个人十来条枪 如何成为开发正规军(二十三)
  15. eclipse java验证码_spring整合kaptcha验证码
  16. PC时代的20位英雄
  17. 第九周项目六--三色球问题
  18. 《操作系统》第十二章习题加解析(重点学习内容)
  19. 烽火HG680-KA/KB_Hi3798MV310_红外蓝牙语音_开启无线开关_通刷固件包
  20. Axure RP出现无法预览

热门文章

  1. 闲鱼基于Dart生态的FaaS前端一体化建设
  2. 原生js实现随机雪花落下特效
  3. 【雷达信号处理】IQ调制理解
  4. Human Resource Machine 汇编游戏攻略
  5. Oracle_解决ora-00257错误(清理归档日志、修改日志最大值解决)
  6. HTML5本地存储使用详解
  7. Python 五点搞定作用域
  8. 【转载】登录页面测试用例
  9. 绘画系统(14):【类】QRegion[官翻]
  10. C++调用Python传入回调函数