错误处理常用返回值类型V O I DB O O LH A N D L EP V O I DL O N G / D W O R D为了不让线程间的错误代码互相影响,windows采用了一种叫做thread-local storage的机制,将该线程的错误代码存储到特定的位置从而避免影响其他线程的错误代码使用GetLastError函数获取线程的错误代码,并将其转换成相应的描述信息(W...
转载
2021-06-29 10:50:35
630阅读
错误处理常用返回值类型V O I DB O O LH A N D L EP V O I DL O N G / D W O R D为了不让线程间的错误代码互相影响,windows采用了一种叫做thread-local storage的机制,将该线程的错误代码存储到特定的位置从而避免影响其他线程的错误代码使用GetLastError函数获取线程的错误代码,并将其转换成相应的描述信息(W...
原创
2022-02-28 10:43:25
331阅读
Windows服务(Services),是一些运行在WindowsNT、Windows2000和Windows XP等操作系统下用户环境以外的程序。它不同于一般的可执行程序,不需要系统登录便可以运行,以完成某些特定的功能。
原创
2022-01-06 17:15:48
2381阅读
Windows服务(Services),是一些运行在WindowsNT、Windows2000和Windows XP等操作系统下用户环境以外的程序。它不同于一
原创
2022-09-22 18:05:47
733阅读
一、创建控件或窗口创建控件或者窗口的API是CreateWindow按钮控件的创建,按钮也是一个窗口,他注册的窗口类是BUTTONHWNDhWndBtn=CreateWindow(_T("BUTTON"),_T("我是按钮"),WS_CHILD,0,0,100,30,hWndParent,(HMENU)1,hInst,NULL);在窗口的hWndParent的RECT(0,0,100,300)区域
原创
2018-03-31 19:40:37
971阅读
一、创建过程消息循环1.WinMain首先调用Api函数RegisterClass注册一个窗口类,这个类定义了窗口重要属性,如窗口过程地址,默认背景色,图标.通过WNDCLASS结构字段来定义,程序生成一个窗口时,必须制定窗口类,在类被使用之前,必须先对其进行注册,这就是为什么RegisterClass在程序的开始即被调用的原因,2.一旦WNDCLASS被注册,WinMain讲调用最重要的Crea
原创
2018-03-29 19:51:08
999阅读
一、工具提示窗口1.有时候把鼠标移动到一个窗口控件的时候会有一个提示弹出来,这个的原理就是给工具提示窗口发送一个消息,TM_ADDTOOL 2其中参数LPARAM是TOOLINFO结构体指针typedef struct tagTOOLINFO{UINT cbSize 结构体大小UINT uFlag 焦点域的属性HWND hWnd 包含工具的窗口标题,如果指定TT
原创
2018-04-15 20:44:58
1576阅读
点赞
1评论
核心编程随笔最近在学习Windows底层原理,准备写个系列文章分享给大家,Michael Li(微软实习期间的Mentor,为人超好)在知乎回答过一些关于学习Windows原理的书籍推
转载
2019-12-23 15:36:00
154阅读
2评论
一、窗口非客户区的鼠标消息1.WM_NCMOUSEMOVE鼠标移动鼠标左键WM_NCLBUTTONDOWN按下WM_NCLBUTTONUP松开WM_NCLBUTTONDBLCLK双击鼠标右键WM_NCRBUTTONDOWN按下WM_NCRBUTTONUP松开WM_NCRBUTTONDBLCLK双击鼠标中键WN_NCMBUTTONDOWN按下WM_NCMBUTTONUP松开WM_NCMBUTTOND
原创
2018-04-12 20:13:41
1407阅读
点赞
线程与内核对象的同步 1.用户方式的线程同步机制具有速度快的有点,但是它也具有其局限性。例如,互锁函数家族只能在单值上运行,关键 代码只能对单个进程中的线程进行同步而且很容易陷入死锁状态。内核对象机制的适应性要远远优于用户方式机制,实际上,内核对象机制唯一不足之处是它的速度 比较慢。
2.The WaitForSingleObject() function returns when one
转载
2024-10-08 07:03:45
30阅读
红帽(Red Hat)是世界著名的开源软件公司,其专注于Linux操作系统以及相关的开源技术。在Linux核心编程领域,红帽一直处于领先地位,为开发者提供了丰富的工具和资源,帮助他们更好地进行Linux开发。
Linux操作系统作为一个开放源代码的操作系统,具有高度的自由度和灵活性。对于开发者来说,掌握Linux核心编程技术是非常重要的。红帽作为Linux领域的权威,提供了一系列相关的培训课程、
原创
2024-03-07 11:59:01
68阅读
<br />Windows时间的获取和设置:<br />在Win32编程中,常用的获取系统时间的函数是有两个,即GetLocalTime和GetSystemTime:<br
原创
2022-09-22 18:14:52
202阅读
定时器示例: #include // The caption of our message boxTCHAR g_szCaption[] = TEXT("Timed Message Box");// How many seconds we'll display the message boxint g_nSecLeft = 0;// This is STATIC window control ID...
转载
2021-08-05 14:37:25
243阅读
1,windows对程序错误的处理, int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow){ LPVOID lpMsgBuf; HANDLE hFile = ::CreateFile(_T("C:\\12.txt"),0,0,...
转载
2021-08-05 14:37:31
388阅读
命名内核对象有一种问题:任何程序都可以创建一个命名对象,这样如果某个程序要实现单例运行而创建了一个内核对象,这种情况下另一程序也创建了同名的内核对象时,该单例程序就无法正常运行了。这是DoS攻击的一种。
在Vista中有一种机制使得用户创建的命名内核对象永远不会和其它程序创建的对象冲突,要使用定制的前缀并把它作为人的私有命名空间,如Global和Local,服务进程会确保为内核对象定义一边
转载
2021-08-05 14:37:54
96阅读
当系统创建线程的时候,会为线程栈预订一块地址空间区域,并给该区域调拨一些物理存储器。默认会预订1MB的地址空间并调拨两个页面的存储器。但是在构建 应用程序的时候可以改变这个默认值 在构建应用程序的时候链接器会把栈的大小写入到exe和dll文件的pe文件头中,当创建线程的时候会根据PE文件头中的大小来
转载
2013-07-23 12:20:00
73阅读
2评论
<br />传统的ODBC技术只能访问关系型数据库,且访问速度慢,因此,微软推出了OLE DB(应用在数据库上的对象连接于嵌
原创
2022-09-22 18:08:43
148阅读
字符串处理strcpy和wcscpy不安全,是因为无法判断缓冲区最大长度的参数,不知道是否会破坏内存一个进程—》 一个内核对象+一个地址空间每个对象只是一个内存块文件地址包括字节偏移量。实际地址=段首地址+字节偏移量,原因是因为,地址占的内存大小太大,而一段的大小无法满
原创
2022-12-29 15:27:47
134阅读
一般情况下,应用程序使用的内存空间里有以下“默认”的区域:1)栈:用于维护函数调用的上下文,离开了栈函数调用就没法实现。栈通常在用户空间的最高地址处分配,通常有数兆字节的大小;2)堆:用来容纳应用程序动态分配的内存区域,当程序使用malloc或new分配内存时,得到的内存来自堆里。
原创
2022-01-06 17:04:02
158阅读
Windows提供了一类API来读、写和管理磁盘文件。使用API函数读写文件时,首先要使用CreateFile函数创建文件对象,调用成功会返回文件句柄。我们以此句柄为参数调用ReadFile和WriteFile函数
原创
2022-01-06 17:09:54
208阅读