windows编程
小白起步
每天都要学到新东西
展开
-
Windows I/O操作
在windows程序中,基础的运行单位为线程,为没个线程分配一个处理器,可以让系统执行多个操作,当线程进行I/O操作时会被挂起,从而影响性能,为解决这类问题,windows使用一套非常好的机制:I/O完成端口.因为现在计算机的瓶颈主要是在磁盘操作这块,磁盘的读取速度是以MB为单位的,,如果说我们需要读取1GB的文件大小,此时所耗费的时间是非常长的.如果执行该操作的线程需要等待该操作完成的话,无疑是很原创 2017-05-13 13:37:50 · 1220 阅读 · 0 评论 -
进程权限
进程权限的发展 在DOS时代, 所有程序都能直接操作我们的物理内存操作系统和我们的应用软件都是同一等级的程序,它是不安全的.会造成系统不稳定,毫无保密性 从Win95/98到XP后, 新增了虚拟内存,它杜绝了修改操作系统代码的可能(直接修改物理内存)出现了进程, 它是"完全封闭"(开放了一些接口)的它会使我们的进程没有保密性,我们使用CreateProcess创建一个子进程父进程拥有原创 2017-06-13 16:51:49 · 453 阅读 · 0 评论 -
Windows进程与线程
进程的组成进程是惰性的进程要做任何事情, 都必须让线程来运行线程执行进程地址空间中包含的代码一个进程可以拥有多个线程所有的线程都能在进程的地址空间中"同时"运行代码每个线程都有它自己的一组CPU寄存器和自己的堆栈每个进程必须有一个线程当系统创建一个进程时, 会自动创建第一个线程, 这个线程我们称为主线程如果没有线程要执行进程地址空间中的代码, 进程就失去了存在的意义此时系统会自动销原创 2017-06-13 10:51:31 · 482 阅读 · 0 评论 -
Windows线程(二)
线程退出在主线程退出时,其它所有线程都会被强制关闭,会导致线程中的一些资源无法被释放在主线程退出之前,应该等待其它线程正常退出线程间参数传递必须保证参数生命周期的有效性可以将参数放到堆上可以通过静态全局变量来达到数据的同步#include <Windows.h>#include <tchar.h>class CThreadParam{public: INT m_nNum;}原创 2017-06-19 10:36:28 · 236 阅读 · 0 评论 -
Windows线程(一)
线程启动在进入main函数之前已经启动了线程(mainStartup)这个线程是进程的主线程,它的入口函数默认的为main/WinMain该入口函数可以在编译器中进行设置用CreateThread函数创建线程在线程创建时会创建线程内核对象,它是一个结构体,不代表线程本身,主要是便于Windows管理会分配一块线程堆栈空间,每个线程都有自己的堆栈空间HANDLE WINAPI CreateT原创 2017-06-19 10:13:11 · 344 阅读 · 0 评论 -
ListCtrl的消息响应&MFC基础
MFC是对Win32API的一个封装.通过继承体系大大方便了我们的使用,在创建一个MFC对话框程序的时候默认会生成两个类C___App 它是我们的应用程序类,继承自 CWinApp 类,里面的InitInstance就相当于WinMain,是一个入口函数.和 WinMain 一样, 是被动调用的. C___Dlg 它是我们的应用程序主窗口类,继承自 CDialogEx 类 CDialogEx原创 2017-05-20 14:32:55 · 1882 阅读 · 0 评论 -
异步I/O(3)可提醒I/O
进行异步I/O的四种方式 1. 使用设备内核对象使用设备内核对象 2. 使用事件内核对象使用事件内核对象 3. 可提醒I/O 4. I/O完成端口I/O完成端口在前面所使用的两种异步I/O方式都是 发送一个请求 处理其他的逻辑 进行等待,判断请求是否完成可提醒I/O的操作方式是 发送请求 在请求完成后,操作系统自动提醒可提醒I/O是通过APC机制完成的 APC机制的详细过程不原创 2017-05-27 12:40:35 · 517 阅读 · 0 评论 -
异步I/O(2)使用事件内核对象
进行异步I/O的四种方式 1. 使用设备内核对象使用设备内核对象 2. 使用事件内核对象 3. 可提醒I/O可提醒I/O 4. I/O完成端口I/O完成端口在进行异步I/O操作的时候HANDLE WINAPI CreateFile( _In_ LPCTSTR lpFileName, _In_ DWORD dwDesiredAccess, _In_ D原创 2017-05-27 10:32:39 · 337 阅读 · 0 评论 -
异步I/O(1)使用设备内核对象
进行异步I/O的四种方式 1. 使用设备内核对象 2. 使用事件内核对象使用事件内核对象 3. 可提醒I/O可提醒I/O 4. I/O完成端口I/O完成端口异步I/O的操作过程: 当我们使用异步I/O操作时,我们的程序不会卡死在文件操作的地方.如当我们使用CreateFile打开一个个文件时,它会给操作系统发送一个打开文件的请求然后就直接返回,不会等待文件打开是否成功.此时我们可以进行其原创 2017-05-20 13:38:07 · 438 阅读 · 0 评论 -
异步I/O(4)完成端口
使用设备内核对象使用设备内核对象使用事件内核对象 使用事件内核对象可提醒I/O 可提醒I/OI/O完成端口I/O完成端口是在异步I/O中使用较多的一种异步方式前面使用的三种异步I/O操作都是使用的串行模型来进行的异步I/O操作 而完成端口才是真正使用的并行模型来进行的异步I/O操作在使用完成端口时会创建 设备的队列 设备操作的对列 线程池HANDLE WINAPI CreateIoC原创 2017-05-27 15:14:30 · 412 阅读 · 0 评论 -
Windows Data Type
windows中的数据类型是将C语言的基础数据类型进行再包装产生的,并不是一种新的数据类型.它只适用于windows的SDK中,并不在其他地方通用. 上面是windows将c语言的基础数据类型进行再包装后产生的数据类型..另外windows还包装了一些结构体和一些权限操作的数据类型数据类型的本质其实上是我们可以操作内存的大小内存大小的单位 bit内存中最小的单位 byte 1byte =原创 2017-05-06 16:18:14 · 337 阅读 · 0 评论 -
windows编程简介
在操作系统没有出来之前.我们写的程序是直接和硬件打交道的,这个阶段的程序通用性是非常差的.. 它可能只能在一台电脑或者一类电脑上面运行.因为每台电脑的硬件情况都有可能不同. 在windows出来之后,程序的通用性得到了大大的提升.windows操作系统将硬件和软件隔离..我们所写的程序不用在关注硬件是怎么样的.我们所写的软件调用OS的API,再通过该API来操作硬件windows经过三十多年的发原创 2017-05-05 13:56:37 · 755 阅读 · 0 评论 -
进程遍历
对进程的遍历可以通过微软提供的Tool Help库来实现 里面的几个主要函数有HANDLE WINAPI CreateToolhelp32Snapshot( _In_ DWORD dwFlags, _In_ DWORD th32ProcessID//0代表当前进程,);// 该函数用来获取当前进程的快照,通过flags来决定获取的内容,它的返回值将用于之后函数使用BOOL WINAPI原创 2017-06-14 18:31:08 · 606 阅读 · 0 评论