首页

关于Windows页面错误的一些基础概念

很少被开发者关注的页面错误 今天我们会说说关于虚拟内存处理中最为常见的一个问题:页面错误(Page Fault)。 什么情况下会发生一个页面错误呢? 当应用程序请求的页面地址不在当前的内存驻留页面(Memory resident pages)时,就会发生页面错误。 当发生页面错误的时候,会发生什么? 发生页面错误的线程会被操作系统设置为挂起状态,而此时操作系统会尝试在磁盘上找到对应的页面并将此页面...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:12月13日 |
  • 浏览:1268 |
  • 评论已关闭 条评论

搞清楚系列:什么是一个子(child)窗口  

“还”有这么一个简单的问题 搞了这么久的Windows开发,我依然会频繁地对另一个问题比较茫然:什么是一个子(child)窗口? 那,今天就再来叨叨一下。 一个子窗口是一个设置了WM_CHILD的窗口,并且它又如下属性: > 它有一个父窗口 > 它始终显示在父窗口的客户区(不能显示到父窗口外面) > 如果父窗口被移动了,子窗口也会跟着移动(子窗口相对于父窗...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:09月12日 |
  • 浏览:1030 |
  • 评论已关闭 条评论

搞清楚系列:什么是一个顶级(top-level)窗口  

有这么一个简单的问题 搞了这么久的Windows开发,我依然会频繁地对这个问题比较茫然:什么是一个顶级(top-level)窗口? 那,今天就来叨叨一下。 一个top-level窗口是一个不是子窗口的窗口(绕口令来了)。说白了,就是说,这个窗口不带有WM_CHILD属性。 更多解析 > top-level窗口和子窗口不同,一个top-level窗口可以被显示在屏幕的任何位置,而子窗口一般只能...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:09月11日 |
  • 浏览:1285 |
  • 评论已关闭 条评论

BSTR到底该怎么用?

搞明白BSTR和WCHAR *的区别是很重要的一件事 如果你曾经使用C/C++开发过涉及COM组件的应用,则下面的代码你应该不会陌生: STDMETHODIMP CFo:Bar(BSTR bstrABC) { // … 这个BSTR是个什么神仙玩意儿?它和WCHAR *之间有什么区别吗? 像C/C++这种低层语言给予了开发者十分大的自由度,开发者可以自己决定一串二进制位采用何种模式来抽...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:04月14日 |
  • 浏览:1428 |
  • 评论已关闭 条评论

C++ final指示符带来的性能提升  

final指示符简介 C++中的final指示符可以将一个类或者虚函数标记为不可继承或重写。让我们先看看如下的代码: 如果我们尝试创建一个新类并继承自[derived],则我们会得到一个编译错误,如下图所示: final指示符向类的客户明确传递了这样的信息:这个类不应该用来被继承,并且使用编译器来保证这一点。同时,使用这个标识符可以使用去虚拟化(Devirtualization)来优化代码的性...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:03月05日 |
  • 浏览:2386 |
  • 评论已关闭 条评论

是时候考虑为你的团队定制AI化的IntelliSense了  

让IntelliCode更加智能化 在你敲代码的时候,你正在舒服的享受着自动完成列表所带来的编码快感,这一切都依赖着IntelliCode组件在幕后所做的辛勤工作。在之前的一篇关于IntelliCode文章中,我们解释了IntelliCode是如何通过对几千个GitHub开源项目里的代码进行机器学习,然后作出更加智能化的编码建议。 对于一些类似于标准库的公共API,基于社区知识库的检索分析方式是十...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:02月25日 |
  • 浏览:1361 |
  • 评论已关闭 条评论

DNE LightWeight Filter导致的虚拟机ping不通的问题  

今天被一个问题折腾了一整天了,怒写一篇文章以示纪念。 问题 虚拟机采用桥接方式接入到网络,并通过DHCP服务器获取动态IP。 宿主通过有线方式接入网络并通过DHCP获取到动态IP。 虚拟机中无法ping通宿主机,同时宿主机也ping不通虚拟机。 尝试过的方法 1) 修改虚拟机桥接方式,不适用自动绑定网卡,而是绑定到一个具体的宿主机网卡,无效。 2) 修改虚拟机中的网卡工作方式,从1Gbps修改为1...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:09月26日 |
  • 浏览:8823 |
  • 评论已关闭 条评论

新玩意儿更新:C++编码规则及最佳实践

朋友,你是否也和我一样:咋样都行,就是无法容忍构建结束时出现的编译警告。 对于稍微有点完美主义的我来说,我希望能尽自己最大的能力,消除一切的编译警告。但有时候,我也会感到沮丧:有些警告是无法清除的,至少在目前的开发环境里是没有这种可能性的。 此话怎讲? 比如,我曾经碰到一个关于menifest的格式兼容性报警,要解决此问题,需要升级我电脑里的某一个DLL,但是这个升级需要联系Microsoft售后...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:08月24日 |
  • 浏览:3602 |
  • 评论已关闭 条评论

实战经验:在Windows平台编译x264  

最近想研究一下大名鼎鼎的x264库,由于本人功力实在薄弱,单单是为了能在Windows平台编译这玩意,也花了不少功夫。在摸爬滚打的过程中,也碰到了一些坑,这里记录下来,希望能帮助有需要的朋友。 一. MSYS2配置 1) 首先去MSYS2官网安装包,因为我的电脑是64位系统,所以,这里我选择x86_64版本。MSYS2可以根据需要安装32位和64位版本的mingw和编译工具链,而且还有个十分好用的...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:08月13日 |
  • 浏览:5103 |
  • 评论已关闭 条评论

实战经验:WM_COPYDATA在不同权限进程中的接收问题

问题 在一次开发中,需要使用到WM_COPYDATA方式来实现两个进程之间的数据传输。在网络上可以找到很多关于WM_COPYDATA的示例代码,而且代码结构也比较简单易懂,所以WM_COPYDATA的示例代码不是今天要详细讨论的内容。 今天的问题存在于两个不同权限的进程,例如发送端进程运行在普通用户账户下,而接收端进程则运行在管理员账户下。在这种情况下,发送端发送的WM_COPYDATA消息,将不...
  • 阅读全文 |
  • 分类:技术 |
  • 发表于:05月25日 |
  • 浏览:2916 |
  • 评论已关闭 条评论