
windows核心编程
文章平均质量分 78
whitesilt
这个作者很懒,什么都没留下…
展开
-
《windows核心编程系列》一谈谈windows中的错误处理机制
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/7912489 错误处理 我们写的函数会用返回值表示程序执行的正确与否,使用void,就意味着程序一定不会出错。Bool类型标识true时为真,false时为假。其他类型根据需要可以定义成不同意转载 2013-10-13 21:17:51 · 742 阅读 · 0 评论 -
《Windows核心编程》---Interlocked原子访问系列函数
转载自:http://blog.youkuaiyun.com/asce1885/article/details/5729912所谓原子访问,指的是一个线程在访问某个资源的同时能够保证没有其他线程会在同一时刻访问同一资源。Interlocked系列函数提供了这样的操作。所有这些函数会以原子方式来操控一个值。Interlocked函数的工作原理取决于代码运行的CPU平台,如果是x86系列CPU转载 2013-10-14 08:40:49 · 787 阅读 · 0 评论 -
windows核心编程 第四章 进程
转载自:http://blog.youkuaiyun.com/oqixilaotou/article/details/8437950 一般将进程定义成一个正在运行的程序的实例,它由以下两部分构成: 1)一个内核对象,操作系统用它来管理进程。内核对象也是系统保留进程统计信息的地方; 2)一个地址空间。其中包含所有可执行文件或DLL模块的代码和数据。此外它还包括动态内存分配,比转载 2013-10-14 08:40:49 · 786 阅读 · 0 评论 -
Windows核心编程学习五:进程的环境变量
转载自:http://blog.youkuaiyun.com/guzhou_diaoke/article/details/8828608注:源码为学习《Windows核心编程》的一些尝试,非原创。若能有助于一二访客,幸甚。1.进程的环境变量每个进程都有一个与它关联的环境块(environment block),这是在进程地址空间内分配的一块内存,其中包含字符转载 2013-10-14 08:41:38 · 823 阅读 · 0 评论 -
UNREFERENCED_PARAMETER的作用
转载自:http://blog.youkuaiyun.com/apunix/article/details/2043945UNREFERENCED_PARAMETER 的作用2007年06月16日 星期六 14:38我们从 UNREFERENCED_PARAMETER 开始吧。这个宏在 winnt.h 中定义如下: #define UNREFERENCED_PARAMETER(转载 2013-10-14 08:41:38 · 546 阅读 · 0 评论 -
Windows定义的关于字符串的几种类型
转载自:http://blog.youkuaiyun.com/lifeng5055/article/details/8123175经常被这几种类型搞混淆:PSTR, PWSTR, PTSTR, PCSTR, PCWSTR, PCTSTR, LPSTR, LPWSTR, LPTSTR, LPCSTR, LPCWSTR, LPCTSTR不过只要明白了每个字母代表什么意思,就很容易区转载 2013-10-14 08:41:47 · 1092 阅读 · 0 评论 -
《windows核心编程系列 》六谈谈线程调度、优先级和关联性
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/8046723线程调度、优先级和关联性 每个线程都有一个CONTEXT结构,保存在线程内核对象中。大约每隔20ms windows就会查看所有当前存在的线程内核对象。并在可调度的线程内核对象中选择一个,将其保存在CONTEXT结构的值载入cpu寄存器。这被转载 2013-10-13 21:36:08 · 998 阅读 · 0 评论 -
《Windows核心编程系列》九谈谈同步设备IO与异步设备IO之同步设备IO
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/8307633同步设备IO所谓同步IO是指线程在发起IO请求后会被挂起,IO完成后继续执行。 异步IO是指:线程发起IO请求后并不会挂起而是继续执行。IO完毕后会得到设备的通知。而IO完成端口就是实现这种通知的很好的一种方式。 线程转载 2013-10-13 21:49:57 · 765 阅读 · 0 评论 -
《windows核心编程系列》十六谈谈内存映射文件
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/7001650 内存映射文件允许开发人员预订一块地址空间并为该区域调拨物理存储器,与虚拟内存不同的是,内存映射文件的物理存储器来自磁盘中的文件,而非系统的页交换文件。将文件映射到内存中后,我们就可以在内存中操作他们了,就像他们被载入内存中一样。内存映射文件主要有三方面的用转载 2013-10-13 21:58:22 · 685 阅读 · 0 评论 -
《windows核心编程系列》十七谈谈dll
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/7021274DLL全称dynamic linking library.即动态链接库。广泛应用与windows及其他系统中。因此对dll的深刻了解,对计算机软件开发专业人员来说非常重要。 windows中所有API都包含在DLL中。三个最重要的DLL是Kernel32.转载 2013-10-13 21:59:47 · 720 阅读 · 0 评论 -
《windows核心编程系列》十八谈谈windows钩子
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/7031587windows应用程序是基于消息驱动的。各种应用程序对各种消息作出响应从而实现各种功能。 windows钩子是windows消息处理机制的一个监视点,通过安装钩子可以达到监视指定窗口某种类型的消息的功能。所谓的指定窗口并不局限于当前进程的窗口,也可转载 2013-10-13 22:00:44 · 760 阅读 · 0 评论 -
《Windows核心编程系列》二十谈谈DLL高级技术
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/7051558本篇文章将介绍DLL显式链接的过程和模块基地址重定位及模块绑定的技术。 第一种将DLL映射到进程地址空间的方式是直接在源代码中引用DLL中所包含的函数或是变量,DLL在程序运行后由加载程序隐式的载入,此种方式被称为隐式链接。 第二转载 2013-10-14 08:37:56 · 729 阅读 · 0 评论 -
《windows核心编程系列》二十一谈谈基址重定位和模块绑定
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/7058576 每个DLL和可执行文件都有一个首选基地址。它表示该模块被映射到进程地址空间时最佳的内存地址。在构建可执行文件时,默认情况下链接器会将它的首选基地址设为0x400000。对于DLL来说,链接器会将它的首选基地址设为0x10000000,然后将该地址以及代码、数据的转载 2013-10-14 08:37:58 · 849 阅读 · 0 评论 -
windows核心编程---StringCbCopy和StringCchCopy 函数
转载自:http://blog.youkuaiyun.com/wangqiulin123456/article/details/8193933StringCbCopy函数用于拷贝string,且提供了目标缓冲区的大小作为参数,防止缓冲区溢出等安全问题。这个函数可用于替换以下函数的使用:strcpy, wcscpy, _tcscpylstrcpyStrCpy转载 2013-10-14 08:41:15 · 1040 阅读 · 0 评论 -
vs2012延迟加载dll
参考自windows核心编程第五版20.3延迟加载DLL一:编译 20-DelayLoadLib.dll和20-DelayLoadLib.lib二:将20-DelayLoadLib.dll放入当前工程目录中三:打开工程属性修改相关参数四:完成编译,运行如图显示无20-DelayLoadLib.dll原创 2013-10-15 13:02:56 · 1620 阅读 · 0 评论 -
《谈谈windows核心编程系列》 结构化异常处理SEH之__finally终止处理
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/8790567结构化异常处理SEH:__finally终止处理。 结构化异常处理(Structuredexception handling)简称SEH。是windows系统提供的异常处理机制。促使windows将SEH加入到windows系统的一个关键原因就是转载 2013-10-14 08:38:50 · 677 阅读 · 0 评论 -
浅谈windows句柄表
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/8708299 浅谈windows句柄表 windows定义了很多内核对象:进程对象、线程对象、互斥量对象、信号量对象、事件对象、文件对象等等。在调用相应的函数创建这些对象后,我们都可以通过HANDLE类型的句柄来引用它们。或许你在一些书上看到过说句柄相当于转载 2013-10-14 08:38:41 · 729 阅读 · 0 评论 -
《windows核心编程系列》二谈谈ANSI和Unicode字符集
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/7916732第二章:字符和字符串处理 使用vc编程时项目--》属性--》常规栏下我们可以设置项目字符集合,它可以是ANSI(多字节)字符集,也可以是unicode字符集。一般情况下说Unicode都是指UTF-16。也就是说每个字符编码为两个字节。65535个转载 2013-10-13 21:19:43 · 775 阅读 · 0 评论 -
《windows核心编程系列》三谈谈内核对象及句柄的本质
http://blog.youkuaiyun.com/ithzhang/article/details/7920204 内核对象 本章讨论的是相对抽象的概念,不涉及任何具体的内核对象的细节而是讨论所有内核对象的共有特性。首先让我们来了解一下什么是内核对象。内核对象通过API来创建,每个内核对象是一个数据结构,它对应一块内转载 2013-10-13 21:21:34 · 1053 阅读 · 0 评论 -
《windows核心编程系列》四谈谈进程的建立和终止
http://blog.youkuaiyun.com/ithzhang/article/details/7927682第二部分:工作机理第一章:进程上一章介绍了内核对象,这一节开始就要不断接触各种内核对象了。首先要给大家介绍的是进程内核对象。进程大家都不陌生,它是资源和分配的基本单位,而进程内核对象就是与进程相关联的一个数据结构。操作系统转载 2013-10-13 21:24:41 · 908 阅读 · 0 评论 -
《windows核心编程系列》五谈谈线程基础
转载自: http://blog.youkuaiyun.com/ithzhang/article/details/8046721 线程基础 与前面介绍的进程一样,线程也有两部分组成。一个是线程内核对象。它是一个数据结构,操作系统用它来管理线程以及用它来存储线程的一些统计信息。另一个是线程栈,用于维护线程执行时所需的所有函数参数和局部变量。位转载 2013-10-13 21:32:03 · 764 阅读 · 0 评论 -
《windows核心编程系列》七谈谈用户模式下的线程同步
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/8066658用户模式下的线程同步 系统中的线程必须访问系统资源,如堆、串口、文件、窗口以及其他资源。如果一个线程独占了对某个资源的访问,其他线程就无法完成工作。我们也必须限制线程在任何时刻都能访问任何资源。比如在一个线程读内存时要限制其他线程对此块内存进行写入转载 2013-10-13 21:40:17 · 886 阅读 · 0 评论 -
《Windows核心编程系列》八谈谈用内核对象进行线程同步
http://blog.youkuaiyun.com/ithzhang/article/details/8291027转载使用内核对象进行线程同步。 前面我们介绍了用户模式下线程同步的几种方式。在用户模式下进行线程同步的最大好处就是速度非常快。因此当需要使用线程同步时用户模式下的线程同步是首选。 但是用户模式下的线程同步也存在缺点。如InterLock转载 2013-10-13 21:48:07 · 860 阅读 · 0 评论 -
《Windows核心编程系列》十谈谈同步设备IO与异步设备IO之异步IO
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/8316171 同步设备IO与异步设备IO之异步IO介绍 设备IO与cpu速度甚至是内存访问相比较都是比较慢的,而且更不可预测。虽然如此,通过使用异步设备IO我们仍然能转载 2013-10-13 21:51:10 · 653 阅读 · 0 评论 -
《Windows核心编程系列》十一谈谈Windows线程池
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/8373243 Windows线程池 上一篇博文我们介绍了IO完成端口。得知IO完成端口可以非常智能的分派线程。但是IO完成端口仅对等待它的线程进行分派,创建和销毁线程的工作仍然需要我们自己来做。转载 2013-10-13 21:52:11 · 683 阅读 · 0 评论 -
《Windows核心编程系列》十二谈谈Windows内存体系结构
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/8392933 Windows内存体系结构 理解Windows内存体系结构是每一个励志成为优秀的Windows程序员所必须的。 进程虚拟地址空间 每个进程都有自己的虚拟地址空间。对转载 2013-10-13 21:54:18 · 685 阅读 · 0 评论 -
《Windows核心编程系列》十三谈谈在应用程序中使用虚拟内存
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/8442981 在应用程序中使用虚拟内存 Windows提供了以下三种机制对内存进行操控: 一:虚拟内存。最适合来管理大型对象数据或大型结构数组。 二:内存映射文件。最适合用转载 2013-10-13 21:55:53 · 678 阅读 · 0 评论 -
《windows核心编程系列》十五谈谈windows线程栈
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/6998147谈谈windows线程栈。 当系统创建线程时会为线程预订一块地址空间区域,注意仅仅是预订。默认情况下预定的这块区域的大小是1MB,虽然预订这么多,但是系统并不会给全部区域调拨物理存储器。默认情况下,仅仅为两个页面挑拨。x86系统下每个页面是4K转载 2013-10-13 21:57:44 · 657 阅读 · 0 评论 -
《windows核心编程系列》十九谈谈使用远程线程来注入DLL。
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/7042613windows内的各个进程有各自的地址空间。它们相互独立互不干扰保证了系统的安全性。但是windows也为调试器或是其他工具设计了一些函数,这些函数可以让一个进程对另一个进程进行操作。虽然他们是为调试器设计的,但是任何应用程序都可以调用它们 。接下来我们来谈谈使用远转载 2013-10-14 08:37:29 · 925 阅读 · 0 评论 -
《windows核心编程系列》二十二谈谈修改导入段拦截API。
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/7071600一个模块的导入段包含一组DLL。为了让模块能够运行,这些DLL是必须的。导入段还包含一个符号表。它列出了该模块从各DLL中导入的符号。当模块调用这些导入符号的时候,系统实际上会调用转换函数,获得导入函数在导入表的地址,然后再跳到相应的位置。如果我们能将导入段中相应导入函数的转载 2013-10-14 08:38:12 · 692 阅读 · 0 评论 -
《Windows核心编程系列》十异步IO之IO完成端口
转载自:http://blog.youkuaiyun.com/ithzhang/article/details/8508161 IO完成端口 为了将Windows打造成一个出色的服务器环境,Microsoft开发出了IO完成端口。完成端口需要与线程池配合使用转载 2013-10-14 08:38:29 · 727 阅读 · 0 评论 -
线程局部存储(TLS)
转载自:http://blog.youkuaiyun.com/x313695373线程局部存储,Part 1:概述线程局部存储,Part 2:显式TLS线程局部存储,Part 3:编译器和链接器对隐式TLS的支持线程局部存储,Part 4:访问__declspec(thread)变量线程局部存储,Part 5:加载器对__declspec(thread)变量的支持(转载 2013-10-15 13:06:30 · 1179 阅读 · 0 评论