摘要: // 第一个Win32窗口.cpp : 定义应用程序的入口点。 // #include "stdafx.h" #include "第一个Win32窗口.h" #include #include "stdio.h" HWND hwnd; PCHAR szOutBuff; LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam,... 阅读全文
posted @ 2019-07-06 15:31 瀚瀚大人 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 1.什么是消息? 当我们点击鼠标的时候,或者当我们按下键盘的时候,操作系统都要把这些动作记录下来,存储到一个结构体中,这个结构体就是消息; 消息队列就是一个大型的“链表” 消息的产生: 鼠标点击产生一个消息 --》系统捕获消息--》在内核遍历所有的句柄看是谁产生的--》找到后将捕获的消息结构体给遍历 阅读全文
posted @ 2019-07-06 14:51 瀚瀚大人 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 1.窗口的本质 :GUI GDI ntoskrnl.exe 和Win32K.sys 两个文件最重要,Kernel32.dll只是提供一个接口;真正的实现都在内核 HANDLE 是私有句柄表的一个索引; HWND 窗口句柄 是全局句柄表的一个索引;所有进程共用; 2.GDI 图形设备接口 1.设备对象 阅读全文
posted @ 2019-07-05 23:58 瀚瀚大人 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 1.通知类型 HANDLECreateEvent( LPSECURITY_ATTRIBUTESlpEventAttributes,// 安全属性 BOOLbManualReset,// 复位方式 BOOLbInitialState,// 初始状态 LPCTSTRlpName // 对象名称 ); 该 阅读全文
posted @ 2019-07-05 22:34 瀚瀚大人 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 1.互斥体不同进程间的“临界区”,跨进程 互斥体防多开例子: 阅读全文
posted @ 2019-07-05 17:58 瀚瀚大人 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 1.线程安全问题: 每个线程都有自己的栈,而局部变量是存储在栈中的,,这就意味着每个线程都有自己的一份“局部变量”,如果线程仅仅使用“局部变量”那么就不存在线程安全问题、 那如果多个线程共用一个全局变量呢? 2.临界区实现之线程锁: 1 // 临界区.cpp : 定义控制台应用程序的入口点。 2 / 阅读全文
posted @ 2019-07-05 17:05 瀚瀚大人 阅读(558) 评论(0) 推荐(0) 编辑
摘要: 1.如何让线程停下来? 让自己停下来: Sleep()函数 让别人停下来(挂起): SuspendThread()函数 线程恢复: ResumeThread()函数 一个线程挂起几次,就需要恢复几次; 2.等待线程结束 WaitForSingleObject(); WaitForSingleObje 阅读全文
posted @ 2019-07-05 16:21 瀚瀚大人 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 1.什么是线程? <1>线程是附属在进程上的执行实体,是代码的执行流程。 <2>一个进程可以包含多个线程,但一个进程至少有一个线程 MSDN中CreateThread原型: HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes,/ 阅读全文
posted @ 2019-07-05 15:30 瀚瀚大人 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 1.ID与句柄 ID 和句柄就是一个“全局变量”和“私有变量的区别” 阅读全文
posted @ 2019-07-05 14:57 瀚瀚大人 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 1.什么是内核对象? 像进程、线程、文件、互斥体、事件等在内核都有一个对应的结构体,这个结构体由内核负责管理。我们管这些叫内核对象 2.怎么区分内核对象? CloseHandle 函数中,有个Remarks属性,里面标注的都是内核对象,或者函数中有安全描述符属性LPSECURITY_ATTRUVYT 阅读全文
posted @ 2019-07-05 13:56 瀚瀚大人 阅读(234) 评论(0) 推荐(0) 编辑