
系统论研究(操作系统等)-API、内核编程
文章平均质量分 79
wwl33695
这个作者很懒,什么都没留下…
展开
-
使用scrollbar和API ScrollWnd滚动窗口
这个问题说起来简单,做起来难。虽然说是WTL,但我想MFC应该没有太大差别。关键点:ScrollWindow,MoveWindow。首先看ScrollWnd。[cpp] view plaincopyprint?class ScrollWnd : public CWindowImpl //MFC中直接继承CWnd,WTL的精髓就是模板 { priva转载 2013-06-07 20:48:12 · 763 阅读 · 0 评论 -
WIN32 浏览文件 保存文件、浏览文件夹对话框API调用实例
#include #include #include #include #include //选择文件夹 用到 //打开文件 保存文件 #define MAX_FILE_FOR_SEL 20 //最大允许选择的文件数 void showFile(LPCTSTR szFile) { _tprintf(TEXT("FileOrPath:%s/n"),szFil转载 2013-05-30 17:08:56 · 1442 阅读 · 0 评论 -
VS2010 图文并茂 简单 ATL COM开发
1.打开vs2010,新建ATL COM 项目,如下图1 2.勾选【支持COM+ 1.0】和【支持部件注册器】 3 添加了一个com项目,在项目名称上点击右键,添加类,如下图 然后打开如下窗口,选择ATL简单对象即可。 然后是如下窗口,在简称一栏中输入类名称FirstClass,其他输入框会自动填写,然后点击完成即可。如果出现提示【是否覆盖现有文件】,点击【是】即可转载 2013-05-27 17:11:22 · 526 阅读 · 0 评论 -
使用ATL设计组件(vs2008)
新建一个工程: 点击OK,其它都是Next一直到Finish. 工程建好后,可以看到如下类视图: 点击Project->Add Class… 选择ATL Simple Object 在Short name输入新加类名:转载 2013-05-27 17:14:26 · 389 阅读 · 0 评论 -
COM组件设计与应用之VC6中用ATL写组件
一、前言 1、如果你在使用 vc5.0 及以前的版本,请你升级为 vc6.0 或 vc.net 2003; 2、如果你在使用 vc6.0 (ATL 3.0)请阅读本回内容; 3、如果你在使用 vc.net(ATL 7.0)请阅读下回内容;(当然读读本文内容也不错) 4、这第一个组件,除了所有 COM 组件必须的 IUnknown 接口外,我们再实现一个自己定转载 2013-05-27 16:17:34 · 371 阅读 · 0 评论 -
C++编写COM组件
最近在学习COM,自己实现了一个小Demo,拿出来和大家分享一下。求各种批评。我实现的这个组件向外提供了一个接口ICompTest,里面只有一个函数helloworld(),功能为返回一个整数89。实现了自注册功能。下面贴出代码,希望对刚开始学习COM的朋友有所帮助。 首先看一下工程结构,编译环境为vs 2008CompTest工程是服务端工程,是一个dll,CtrlTes转载 2013-05-24 17:58:55 · 531 阅读 · 0 评论 -
WIN32画刷画笔使用
画笔:画线条和轮廓画刷:填充任何闭合对象使用画笔步骤:①定义HPEN white_pen = NULL;②创建使用HGDIOBJ GetStockObject(int fnObject)获取white_pen = GetStockObject(WHITE_PEN);或使用HPEN CreatePen(int fnPenStyle, // sty转载 2013-05-21 17:24:33 · 1194 阅读 · 0 评论 -
Win32 解决窗口闪烁
〇、前提本文采用 Win32SDK 以及 C/C++ 语言描述,其中没有用到 C++ 语言的功能。采用标准 Win32 应用程序模型,即从 WinMain()进入,然后使用 RegisterClassEx() 注册主窗口类,同时主窗口的消息处理回调过程是WndProc(),其它的一些变量和函数在文章中描述。一、闪烁的分类与原因通常的闪烁分为:1. 窗口内容的闪烁,例如使用转载 2013-04-26 17:13:54 · 665 阅读 · 0 评论 -
计算机是如何启动的?
从打开电源到开始操作,计算机的启动是一个非常复杂的过程。 我一直搞不清楚,这个过程到底是怎么回事,只看见屏幕快速滚动各种提示......这几天,我查了一些资料,试图搞懂它。下面就是我整理的笔记。 零、boot的含义 先问一个问题,"启动"用英语怎么说? 回答是boot。可是,boot原来的意思是靴子,"启动"与靴子有什么关系呢? 原来,这里的boot是bootstrap转载 2013-04-09 14:09:29 · 315 阅读 · 0 评论 -
创建API监视器的五大技巧
摘要:开发者在调用API过程中往往需要借助一些工具以便创建更加优质的应用,本文我们将分享构建API监视器的五大实践技巧,以飨读者。此前, 优快云研发频道曾多次报道过有关API的文章,这足以说明API的火热趋势锐不可当。开发者除了学会调用这些API外,还可以基于API创建属于自己的一款应用。在调用API过程中往往需要借助一些工具以便创建更加优质的应用,作者Ole Lensmar分享了构建API转载 2013-05-30 14:34:37 · 374 阅读 · 0 评论 -
串口发送数据机制分析
当发送缓冲区里有数据要传送时,就会产生中断,其中断响应函数为s3c24xx_serial_tx_chars()函数,它做的 工作主要是把发送缓冲区里要发送到数据迅速地传送到TxFIFO中。之后,串口会将TxFIFO中的数据按先入先出的方式,以设置好的波特率传送出去。 整个过程分为两个阶转载 2013-06-09 16:42:29 · 794 阅读 · 1 评论 -
Linux下的多线程编程
1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么有了进程的概念后,还要再引入线程呢?使用转载 2013-06-17 15:57:33 · 331 阅读 · 0 评论 -
win32串口编程
在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行,应用广泛。一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。每次通信都是由PC机通过串口向智能控制单元发布命令,智能控制单元在接收到正确的命令后作出应答。 在Win32下,可以使转载 2013-06-04 16:52:59 · 344 阅读 · 0 评论 -
符号文件——Windows 应用程序调试必备
文章概要:符号文件(Symbol Files)是一个数据信息文件,它包含了应用程序二进制文件(比如:EXE、DLL等)调试信息,专门用来作调试之用,最终生成的可执行文件在运行时并不需要这个符号文件,但你的程序中所有的变量信息都记录在这个文件中。所以调试应用程序时,这个文件是非常重要的。用 Visual C++ 和 WinDbg 调试程序时都要用到这个文件。 在 Windows 系统中,符号文件以转载 2013-06-14 10:56:50 · 526 阅读 · 0 评论 -
GetCurrentTime(),GetLocalTime(),GetSystemTime()之间的区别
1. GetCurrentTime() GetCurrentTime()只和16位版本的windows兼容,在32位windows下最好用gettickcount();2. GetLocalTime() GetLocalTime()在不同的机器中会有不同的结果,这和你在控制面板中的时区设置有关. 该函数是获取的系统当前所属时区的时间, 比如说, 在北京时区, 那转载 2013-06-04 10:47:53 · 586 阅读 · 0 评论 -
windows快捷键
一、常见用法:F1 显示当前程序或者windows的帮助内容。F2 当你选中一个文件的话,这意味着“重命名”F3 当你在桌面上的时候是打开“查找:所有文件” 对话框F10或ALT 激活当前程序的菜单栏windows键或CTRL+ESC 打开开始菜单CTRL+ALT+DELETE 在win9x中打开关转载 2013-06-03 10:09:20 · 343 阅读 · 0 评论 -
Win32 Drag-and-Drop简介
Drag-and-Drop(常译为“拖放”)是GUI应用程序的常见功能,Windows下用的很普遍,现在Web页面通过挖掘Javascript也实现了拖放,Linux GTK虽然也有自己的Drag-and-Drop协议,但几乎见不到支持拖放的软件。在Windows文件浏览器中,把一个文件图标拖到一个可执行文件的图标上,会启动这个可执行文件并把被拖动的文件名作为命令行参数传递给它,我们讨论的转载 2013-06-09 18:40:26 · 630 阅读 · 0 评论 -
win32简单例子-NO MFC ,实现文件拖放
#include #include #include /* Declare Windows procedure */LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);/* Make the class name into a global variable */char szClass转载 2013-06-09 18:02:42 · 398 阅读 · 0 评论 -
PE文件结构
本章提要· PE文件格式概述· PE文件结构· 如何获取PE文件中的OEP· 如何获取PE文件中的资源· 如何修改PE文件使其显示MessageBox的实例2.1 引言通常Windows下的EXE文件都采用PE格式。PE是英文Portable Executable的缩写转载 2013-04-07 17:23:32 · 503 阅读 · 1 评论 -
不用第三方软件查看进程挂载的DLL
现在的木马病毒都喜欢用进程插入的方法,windows 自带的任务管理器无法查看进程加载的DLL,那么是不是一定要用第三方软件才能查看进程加载的DLL了,其它用tasklist命令就可以搞定。打开命令提示符,输入 tasklist /m >a.txt &&a.txt,即可打开查看进程加载的DLL转载 2013-03-21 12:24:51 · 616 阅读 · 0 评论 -
__try,__except,__finally,__leave异常模型机制
导读: 从本篇文章开始,将全面阐述__try,__except,__finally,__leave异常模型机制,它也即是Windows系列操作系统平台上提供的SEH模型。主人公阿愚将在这里与大家分享SEH( 结构化异常处理)的学习过程和经验总结。 深入理解请参阅>第23, 24章.SEH实际包含两个主要功能:结束处理(termination handling)和异常处理(exception转载 2013-03-18 11:38:50 · 2707 阅读 · 0 评论 -
Windows挂起线程/进程?小心吃不了兜着走。
Windows提供一个SuspendThread来挂起线程,被挂起的线程会增加它内核对象中的一个挂起计数,只有挂起计数为0的线程被标记为可调度,从而可以执行。这些都是老生常谈,这篇文章介绍的中心思想是:如果你不清楚被挂起的线程/进程正在做什么,最好不要没事挂起它们。在多线程的环境下,一个最常见的情况就是对临界资源的共享访问,操作系统上我们都学过,如果某一个资源是临界资源,那么对它访问前必须转载 2012-12-20 15:16:21 · 648 阅读 · 0 评论 -
Windows挂起线程/进程?小心吃不了兜着走
Windows提供一个SuspendThread来挂起线程,被挂起的线程会增加它内核对象中的一个挂起计数,只有挂起计数为0的线程被标记为可调度,从而可以执行。这些都是老生常谈,这篇文章介绍的中心思想是:如果你不清楚被挂起的线程/进程正在做什么,最好不要没事挂起它们。在多线程的环境下,一个最常见的情况就是对临界资源的共享访问,操作系统上我们都学过,如果某一个资源是临界资源,那么对它访问前必须要上转载 2012-12-20 15:15:31 · 2340 阅读 · 0 评论 -
你还在用CreateThread创建线程吗?改成_beginthreadex吧!
CreateThread是Window的API函数,所有线程的创建都必须调用这个函数,但是如果当你想在多线程环境下用上CRT的话会怎么样呢?作为一个C/C++程序员,有谁可以拍着胸脯说,我永远也用不上CRT(C Run Time)吗?就算你不显式地使用CRT,你又怎么知道你调用的那些函数哪一个会用上CRT呢?CRT功能强大,而且有着非常悠久的历史,它在19世纪70年代就问世了。这样久远的历史造转载 2012-12-20 15:10:04 · 1519 阅读 · 0 评论 -
使用临界区对象(CriticalSection)需要注意的一些事情
1. 临界区对象不是内核对象,因此不能继承,不能跨进程,也不能用waitfor什么的函数来限定时间等待。这个很好理解,你想想WaitFor要求传一个句柄,而临界区对象的类型都不是句柄,也不能用CloseHandle来关闭,怎么可能会能让WaitForXXX搞了。2. 临界区对象使用前必须初始化,不初始化会崩溃,这是我的亲历。3. 线程进入临界区之前会先自旋那么几次,所有自旋锁都失败转载 2012-12-20 13:54:37 · 1241 阅读 · 0 评论 -
多线程环境下调用SendMessage交叉发送消息可能导致的死锁问题
很多时候多线程环境下你会在不同的线程之间拥有许多窗口,或者多个线程之间通过消息机制通讯,此外,你还用诸如临界区等等互斥体来保护临界数据。在这样的复杂情况,如果不慎在线程之间交叉使用SendMessage发送消息,就可能导致死锁隐患。比如下面的一个例子:线程A对临界区上锁,对数据进行了一个访问之后把结果通过SendMessage发送给线程B然后开锁。线程B的某个函数中同样对临界区上锁,对转载 2012-12-20 14:38:24 · 2271 阅读 · 0 评论 -
Windows内存管理的API函数
数据所在的内存地址,内存最小存储单元是字节,在32位系统上使用32位数来表示内存地址.一共可以表示2^32次地址空间:32位可以使用4GB内存,那么地址空间就是0x00000000~0xFFFFFFFF物理内存:硬件系统中真实存在的存储空间称为物理内存.虚拟地址空间:windows内存管理知识:1.分段或分页内存管理2.物理地址和虚拟地址,虚拟地址空间.3.转载 2012-12-26 18:16:59 · 377 阅读 · 0 评论 -
操作系统真实的虚拟内存
1. 内存及虚存基本布局提起虚存,大都能说出几条来。对于32位系统,大多数操作系统都会将4GB的内存空间的一部分挪给内核使用,应用程序无法直接访问这一段内存,这部分内存空间称为内核空间。Windows默认情况下会将高地址的2GB分配给内核(也可配置为1GB),而Linux默认情况下将高地址的1GB空间分配给内核。参考阅读:《程序员的自我修养—链接、装载与库》第10章--内存Li转载 2012-12-13 14:34:44 · 421 阅读 · 0 评论 -
开机自检,BIOS运行原理
首先必须明确的一点是, BIOS 运行初期,CPU 其实是不能访问内存的。 BIOS 所在的 FLASH 是那种可以被 CPU 直接寻址的 FLASH 芯片。被都固定在0x4FFFF (记不清具体地址了) 地址上了。类似 ARM 使用的 NOR FLASH。 uboot就在 NOR FLASH上。 然后,BIOS 初始化代码开始通过寄存器和北桥芯片沟通。转载 2012-12-25 13:41:15 · 984 阅读 · 0 评论 -
Windows系统CPU内存网络性能统计
《第一篇 内存》本篇将介绍统计系统内存使用情况,包括内存使用率、总物理内存大小、可用物理内存大小、总虚拟内存大小,可用虚拟内存大小等等。统计系统内存使用情况是非常简单的,直接使用GlobalMemoryStatus函数进行查询就可以了。其函数原型如下:void WINAPIGlobalMemoryStatus( __out LPMEMORY转载 2013-01-06 10:27:08 · 550 阅读 · 0 评论 -
Windows界面编程-背景图片、透明特效使用
Windows界面编程第一篇 位图背景与位图画刷 可以通过WM_CTLCOLORDLG消息来设置对话框的背景,MSDN上对这个消息的说明如下:The WM_CTLCOLORDLG message is sent to a dialog box before the system draws the dialog box. By responding to this message,转载 2013-01-09 13:44:10 · 6289 阅读 · 1 评论 -
如何从DLL或者DEF文件生成LIB文件
如何从dll文件导出对应的lib文件? Visual C++ 开发工具提供了两个命令行工具,一个是dumpbin.exe,另一个是lib.exe。利用这两个工具即可从dll导出其对应的lib。 1、在命令行执行: dumpbin /exports yourdll.dll > yourdll.def转载 2013-03-28 17:07:31 · 308 阅读 · 0 评论 -
获取进程的内存信息
首先我们需要做的是,先获取当前活动的进程。因为我们无法保证每次的进程数目都是相同的,所以为了简便,我们直接将STL的vector作为缓存进行数据的保存。 故,我们的函数会如下:[cpp] view plaincopyprint?BOOL GetAllProcInfo(std::vector &vtProcInfo) { vtProcInfo转载 2013-02-17 15:32:24 · 1677 阅读 · 1 评论 -
Socket通信原理和实践
我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:1、网络中进程之间如何通信?2、Socket是什么?转载 2013-02-16 13:58:55 · 221 阅读 · 0 评论 -
Windows 8应用开发书籍汇总
Windows 8作为新一代操作系统,继承以往桌面操作系统的优点,而且还提供移动便携设备支持。Windows使用用户基数庞大,预示着Windows应用巨大的潜在市场,察看Windows Store,每天都有不同的Windows应用上线,越来越多的互联网行业和企业应用也在悄然移植到Windows 8平台。对于Windows开发人员而言,又一次新的机会和挑战即将到来。为了方便更多开发人员学习Windo转载 2013-02-16 11:06:47 · 279 阅读 · 0 评论 -
系统管理员要学习什么编程语言
摘要:许多人会问,系统管理员要学习什么编程语言?如果你是一名Windows系统管理员,答案很明显:PowerShell。而作为一名Unix/Linux系统管理员,由于可选择的脚本语言很多,所以可能会稍显困惑。许多人会问,系统管理员要学习什么编程语言?如果你是一名Windows系统管理员,答案很明显:PowerShell。而作为一名Unix/Linux系统管理员,由于可选择的脚本语言很多转载 2013-01-21 16:13:08 · 1457 阅读 · 0 评论 -
跟我一起玩Win32开发
跟我一起玩Win32开发(1):关于C++的几个要点 我不知道各位,一提起C++,第一感觉是什么?而据俺的观察,许多人几乎成了“谈C色变”。不管是C还是C++,一直以来都被很多人视为相当难学的玩意儿,幸好只是一个C++,没有C--,C**和C//,不然,那还得了?曾记得,某年某月某日,在某论坛上看到有牛人说“C++++”,当时我猜想这是啥玩意儿,后来经过一番顺虅摸瓜,深入调查发现,原来有人作转载 2013-01-16 10:39:12 · 654 阅读 · 0 评论 -
VC内存泄露检查工具:VisualLeakDetector
初识Visual Leak Detector 灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题。当程序越来越复杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问题。内存泄漏是最常见的内存问题之一。内存泄漏如果不是很严重,在短时间内对程序不会有太大的影响,这也使得内存泄漏问题有很强的隐蔽性,不容易被发现。然而不管内存泄漏多么轻微,当程序长时间运行时,其破转载 2013-01-28 17:58:30 · 270 阅读 · 0 评论 -
内存泄漏检测工具大全
1. ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。2. Dmalloc-Debug Malloc Library.3. Electric Fence-Linux分发版中由Bruce Perens编写的malloc()调试库。4. Leaky-Linux下检测内存泄漏的程序。转载 2013-01-28 18:07:43 · 434 阅读 · 0 评论 -
linux、windows内核区别
LINUX 和 WINDOWS 内核的区别[声明:欢迎转载,转载请注明出自CU ACCESSORY http://linux.chinaunix.net/bbs/thread-1153868-1-1.html]关于LINUX和WINDOWS的口水站已经很多了。本文企图从技术角度来比较下2个主流操作系统的异同。偏重于内核部分。一、动机:我最早是 WINDOWS转载 2012-11-12 09:52:21 · 943 阅读 · 0 评论