Windows编程
文章平均质量分 88
艺术人生666
这个作者很懒,什么都没留下…
展开
-
Windows编程_Lesson003_Windows 基础数据类型
Windows一些特有的数据类型:typedef unsigned long DWORD;typedef int BOOL;typedef unsigned char BYTE;typedef unsigned short WORD;typedef float FLOAT;typedef FLOA原创 2017-05-09 23:03:50 · 546 阅读 · 2 评论 -
Windows编程_Lesson007_内核对象之二
可等待计时器内核对象我们在开发的时候经常会遇到这样的事情,在某一些时间点上或者按照某个频率启动一个线程来做一些事情。前面我们已知的事件内核对象,它可以帮助我们决定线程执行的顺序,但是它没有办法帮我们频繁的启动或者暂停一个线程。而可等待计时器内核对象就可以帮助我们很容易的完成这些事情! 我们使用CreateWaitableTimer函数可以创建一个可等待计时器内核对象,同样的,跟其它的一些函数一样,原创 2017-07-05 19:04:31 · 368 阅读 · 0 评论 -
Windows编程_Lesson008_内存
我们接下来将要比较神秘,也是平时接触比较少的一个东西,那就是内存。 有人会说我们平时接触的内存不是很多吗?尤其是对于C/C++程序员,好像无时无刻都在于内存打交道啊!怎么会说它比较神秘呢?说的也并不无道理,但是我们这里所说的内存并不是站在程序员的角度来看待内存的。如果站在程序员的角度看内存,内存的机制是透明的,但是这对于我们以后想要开发更好的程序,或者说想要我们的程序运行的更快,这是不利的。下面我原创 2017-07-05 19:05:24 · 321 阅读 · 0 评论 -
Windows编程_Lesson008_内存_内存修改器
内存修改器修改指定进程名字中的指定值所在的地址,进而改变这个值。单线程版本#include <Windows.h>#include <stdio.h>#include <vector>// 第一次查找void FirstFind(HANDLE hProcess, BYTE *pBuffer, DWORD dwPageSize, DWORD dwVal, std::vector<DWORD>原创 2017-07-05 19:06:37 · 586 阅读 · 0 评论 -
Windows编程_Lesson008_内存_内存修改器
内存修改器修改指定进程名字中的内存单线程版本#include <Windows.h>#include <stdio.h>#include <vector>// 第一次查找void FirstFind(HANDLE hProcess, BYTE *pBuffer, DWORD dwPageSize, DWORD dwVal, std::vector<DWORD> &vecAddr){原创 2019-09-06 00:14:34 · 206 阅读 · 0 评论 -
Windows编程_Lesson004_库存管理系统
主要考核点Windows文件操作、STL标准库函数对数据进行处理(不同的容器有各自的优劣势,需要注意效率等问题),自己搭建文件系统来代替数据库功能。原创 2017-05-11 00:16:05 · 400 阅读 · 0 评论 -
Windows编程_Lesson004_Windows I/O操作
在Windows程序中,最基础的运行单元是线程!Windows为每一个线程分配一个处理器,可以让系统执行多个操作!当线程进行一个io操作时,线程会被挂起,从而影响性能。为了解决这类问题,Windows使用了一套非常好的机制I/O**完成端口**,接下来我们将学习Windows中的相关操作。设备文件(实际存在的)Windows编程中的文件定义二进制数据集合 维基百科的参考资料 文件格式列表广义文件原创 2017-05-08 21:04:05 · 354 阅读 · 0 评论 -
Windows编程_Lesson004_Windows消息机制
WinMain函数int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdSh原创 2017-05-12 20:26:53 · 351 阅读 · 0 评论 -
Windows编程_Lesson001_Windows 简介
Windows简介Microsoft Windows(中文有时译作微软视窗,通常不做翻译)是微软公司推出的一系列操作系统。它问世于1985年,起初是 MS-DOS 之下的桌面环境,其后续版本逐渐发展成为主要以个人电脑和服务器用户设计的操作系统,并最终获得了世界个人电脑操作系统的垄断地位。此操作系统可以在几种不同类型的平台上运行,如个人电脑(PC)、移动设备、服务器(Server)和嵌入式系统等等,其原创 2017-05-09 19:08:53 · 459 阅读 · 0 评论 -
Windows编程_Lesson004_项目预备_重新认识MFC
MFC本质MFC本质上就是一套开发框架,它可以帮助我们快速开发。MFC是以类的方式重新将Windows API进行了归类,MFC层次结构图链接。一提到类,相信对于了解C++或者其它比较高级一点的开发语言的同学肯定就不会感到那么恐惧MFC了。MFC既然是一套,所以你就不一定非得在VS环境下编译,它可以在任何支持C++的编译器下面进行编译,但是这些编译器必须是在Windows下的,因为它所使用的大多数A原创 2017-05-17 23:51:44 · 621 阅读 · 0 评论 -
Windows编程_Lesson002_Windows与编程语言
Windows APIWindows操作系统应用程序接口(Windows API),有非正式的简称方法WinAPI,是微软对Windows操作系统中可用的核心应用程序带上接口的称法。它被设计为各种语言的程序调用,也是应用软件与Windows系统最直接的交互方式。大多数驱动程序需要对Windows系统更底层访问接口,有所有版本的windows的Native API来提供接口。 Windows有一个软原创 2017-05-09 20:43:17 · 773 阅读 · 0 评论 -
Windows编程_Lesson004_项目预备_同步IO操作
封装File类我们在进行文件操作时,会有两个版本,一个带_s的版本,一个不带_s的版本,带_s的版本多传递了一个size_t的参数,这个参数有两个功能:进行文件操作的时候不会越界;不会被别人使用shellcode进行注入,造成被黑客攻击。 所以在Windows下编程,建议使用_s版本。先看原始的例子#include <iostream>#include <Windows.h>#inclu原创 2017-05-13 16:23:08 · 263 阅读 · 0 评论 -
Windows编程_Lesson006_初识线程之二
线程优先级我们知道Windows最强大的地方在于它让我们在使用操作系统时变得更加简单,因为它有一个个的窗口,并且窗口与窗口之间能够交互(每个窗口的资源都是分配到各自对应的线程里面),正是由于多线程的存在,才支持了Windows的多界面功能,才让Windows变得强大。我们之前在说旋转锁的时候就提到过线程的优先级,并且还说过旋转锁会导致饥饿线程的出现,但是这个饥饿线程只会出现在单核CPU的进程中。因为原创 2017-06-25 23:59:59 · 567 阅读 · 0 评论 -
Windows编程_Lesson007_内核对象
内核对象概述在前面课程中,我们学习了很多关于内核对象、句柄等各种各样的使用,并且在使用过程中,我们好像拥有了当前这个句柄,并且操作当前内核对象,但是我们从未深入的解析过,在Windows中这个内核对象到底意味着什么!句柄的本质又是怎么回事!我们接下来会使用一些工具来查看我们系统中内核对象的意思是什么!我们系统中的句柄本质是什么! 我们首先使用的第一个工具是WinObj,它可以用来查看我们系统中的原创 2017-07-01 00:08:08 · 414 阅读 · 0 评论 -
Windows编程_Lesson006_初识线程
进程内容的回顾我们知道,在启动一个线程的时候,操作系统会自动的为我们创建进程内核对象和线程内核对象; 进程内核对象主要代表了当前进程中的地址空间等,而线程内核对象才是执行进程地址空间的代码,所以线程才是Windows中的重点,也是较为难以理解的一部分内容。线程的创建其实在进入main函数之前就已经启动了主线程mainStartUp,并且这个线程就会调用指定的函数,这个函数我们是可以手动设置的,比如原创 2017-06-13 22:21:39 · 473 阅读 · 0 评论 -
Windows编程_Lesson005_项目预备_初识进程
进程的组成进程是“惰性”的,进程要做任何事情,都必须让线程来运行,线程执行进程地址空间中包含的代码。 一个进程可以拥有多个线程,所有的线程都能够在进程的地址空间中“同时”运行代码,每个线程都有它自己的一组CPU寄存器以及自己的堆栈。 每个进程必须有一个线程,当系统创建一个进程时,自动创建第一个线程,这个线程我们称为主线程,如果没有线程要执行进程地址空间中的代码,进程就失去了存在的意义,此时系统会原创 2017-06-02 20:03:30 · 618 阅读 · 0 评论 -
Windows编程_Lesson004_项目预备_异步IO操作(使用IOCP实现大文件拷贝的项目)
异步IO机制异步IO是Windows给我们读写文件提供的的一种的机制,在我们执行CreateFileEx函数是,通过传递相应的参数,就会向操作系统发送请求,那么CreateFileEx函数就会直接返回,它不会等到这个函数操作完成才返回,返回后,这个线程就可以做一些其它的操作,直到收到操作系统完成文件操作的通知,再去处理文件相关的操作,这样不会导致当前的线程发生阻塞;当操作系统收到这个请求时,就原创 2017-05-19 00:19:03 · 1301 阅读 · 1 评论