Delphi的Win32的API调用简单介绍
1. 介绍Win32 API和Win32系统。还要讨论Win32系统的功能以及它与16位系统在功能上的几个主要区别。只是让对Win32系统有一个基本的了解。当已经基本了解Win32操作后,就可以在任何需要的时候使用Win32系统提供的高级功能了。
2. Win32环境中有两种基本的对象类型:内核对象和GDI/用户对象。
内核对象是Win32系统原有的,包括事件、文件映射、文件、邮件槽、互斥、管道、进程、信号灯和线程。Win32 API包含有针对不同内核对象的函数。
3. 对象与它的句柄之间存在直接的关系。一个对象的句柄实际上是一个指针,这个指针指向构成对象的数据。依赖于不同的对象类型,对象数据存储于GDI或用户数据段中。另外,对于分配于全局堆的对象,他们的句柄也是指针,指向全局内存段。
Win32 GDI子系统对GDI句柄的管理包含两个方面,一个是对GDI对象的校验,另一个是句柄的重复使用
用户对象和GDI对象有些类似,它是由Win32用户子系统管理的。然而用户对象的句柄不想GDI对象那样存储于进程的地址空间,而是有一个专门的用户句柄表。因此,像窗口、窗口类、原子等对象可以在不同的进程之间共享。
4. 多任务是指操作系统可以同时运行多个应用程序。操作系统把CPU的时间分成片分配给每个应用程序。在这种情况下,多任务其实并不是真正的多任务,只能说是任务切换。或者说,操作系统并没有真正同时运行多个应用程序。相反,它先运行一个应用程序一定的时间,再切换到另一个应用程序运行一定的时间。它对每个应用程序都这样处理。因为时间被划分得很短,对于用户来说,就好像多个应用程序在同时运行一样。
5. 多线程是指一个应用程序内部的多任务。这意味着应用程序可以同进行不同类型的处理。一个进程可以有多个线程,每个线程都有各自不同的执行代码。一个线程可能要依赖于另一个线程,这样就必须要同步。例如,不能假设一个线程在另一个线程要使用它的结果时已完成了处理。线程同步技术用于十多个线程能够同步执行。
6. 你的计算机不太可能安装4 G B的物理内存。那么,Wi n 3 2系统是怎样获得比实际安装的物理内存大得多的地址空间的?3 2位的地址并不真正代表物理内存的一个位置,其实Wi n 3 2使用的是虚拟地址。
通过虚拟地址,每一个进程可以获得4 G B的虚拟地址空间。上端的2 M B空间属于Wi n d o w s,下端的2 M B空间是放置应用程序及可以分配内存的地方。这种模式的优势在于一个进程中的线程不能访问其他进程的内存。同样的地址$ 5 4 5 4 5 4 5 4在不同的进程中指向不同的位置。
一个进程并不是真的有4 G B的内存而只是具有访问4 G B内存的能力,注意到这一点是很重要的。一个进程真正能够访问的内存大小取决于计算机安装了多少物理内存以及磁盘上有多少的空间可被页交换文件使用。对于一个进程而言,物理内存和页交换文件是按页来划分使用的。页的大小取决于Win32安装在什么类型的系统上。在Intel的平台上,没页的长度是4KB;在Alpha平台上,每页的长度是8KB。对于PowerPc和MIPS平台而言,每页的长度也是4KB。系统会把页从页交换文件移到物理内存中,需要的时候在移回来。系统会维护进程当中虚拟地址和物理地址之间的关系。
Delphi的Win32的API调用简单介绍的更多相关文章
- 浅议Delphi中的Windows API调用(举的两个例子分别是String和API,都不错,挺具有代表性)
浅议Delphi中的Windows API调用http://tech.163.com/school • 2005-08-15 10:57:41 • 来源: 天极网为了能在Windows下快速开发应用程 ...
- Delphi XE6 通过JavaScript API调用百度地图
参考昨天的内容,有朋友还是问如何调用百度地图,也是,谁让咱都在国内呢,没办法,你懂的. 首先去申请个Key,然后看一下百度JavaScript的第一个例子:http://developer.baidu ...
- Java系统属性与Preferences API的简单介绍
系统属性在和Preferences API都是键值对,前者只能当前应用程序中共享数据,而后者可以在用户的各个应用或用户之间共享数据. 系统属性 Java 的系统属性决定了 Java 程序实际运行的环境 ...
- 信鸽推送 .NET (C#) 服务端 SDK rest api 调用库(v1.2)
信鸽推送 .NET 服务端 SDK rest api 调用库-介绍 该版本是基于信鸽推送v2版本的时候封装的,先拿出来与大家分享,封装还还凑合,不依赖其他http调用件,唯一依赖json序列化dll ...
- webservice和wcf和web.api简单介绍
转自:无废话的wcf等等 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下,你有很多的选择来构建一个HTTP Ser ...
- jira以及jira API简单介绍
最近需要预言:是否可以通过jira API实现用例管理,对jira的应用.API.扩展等进行了一定的了解. Jira介绍: jira是目前比较流行的基于Java架构的管理系统(Atlassian公司支 ...
- C#中可直接调用WIN32的API函数--USER32.DLL
Win32的API函数可以直接在C#中直接调用,在做WinForm时还是很有帮助的.有时候直接调用Win32的API,可以很高效的实现想要的效果. using System; using System ...
- 阿里云api调用做简单的cmdb
阿里云api调用做简单的cmdb 1 步骤 事实上就是调用阿里api.获取可用区,比方cn-hangzhou啊等等.然后在每一个区调用api 取ecs的状态信息,最好写到一个excel里面去.方便排序 ...
- Win32编程API 基础篇 -- 2.一个简单的窗口 根据英文教程翻译
一个简单的窗口 例子:简单的窗口 有时人们在IRC提问,”我应该怎样制作一个窗口”...嗯,这恐怕不是完全这么简单好回答!其实这并不难一旦你明白你在做什么,但在你得到一个可展示的窗口之前还有一些事情需 ...
随机推荐
- Ubuntu14.04安装intel集显驱动
Ubuntu14.04安装intel集显驱动 标签(空格分隔): ubuntu linux 驱动安装 1.查看本机显卡型号 使用lspci命令来获取PCI接口硬件信息 o@o-pc:~$ lspci ...
- String和StringBuffer的转换
从String到StringBuffer: StringBuffer sb = New StringBuffer("abcd");从StringBuffer到String: Str ...
- [转]Mysql海量数据存储和解决方案之一—分布式DB方案
1) 分布式DB水平切分中用到的主要关键技术:分库,分表,M-S,集群,负载均衡 2) 需求分析:一个大型互联网应用每天几十亿的PV对DB造成了相当高的负载,对系统的稳定性的扩展性带来极大挑战. 3 ...
- Gitlab的Gravatar头像无法显示的问题
通过gitlab搭建的git仓库,由于Gravatar被墙了,导致Gravatar头像无法显示.总觉得怪怪的. 社区版gitlab解决办法: vi /var/opt/gitlab/gitlab-rai ...
- 使用jsvc启动tomcat
1.在/usr/local/apache-tomcat-7.0.68/bin中有commons-daemon-native.tar.gz 压缩包 2.解压commons-daemon-native. ...
- redis 中文字符显示
2015年5月20日 09:57:01 星期三 方法一: redis-cli -h --raw 方法二: linux 终端: echo -e "\xe7\xa5\x9e\xe6\xa3\x8 ...
- MySQL thread pool【转】
本文来自:http://blog.chinaunix.net/uid-26896862-id-3993773.html 刚刚经历了淘宝的双11,真实感受到了紧张的氛围.尽管DB淡定的度过,但是历程中的 ...
- percona-toolkit 之 【pt-slave-delay】说明
摘要: 在主从复制的架构中,正常情况下主上操作的记录也会在从上进行操作,虽说是异步复制,但操作会“实时”的同步到从.比如在主上不小心误操作了,还没等反应过来从上也会马上执行误操作,后期只有通过二进制或 ...
- FFmpeg-20160428-snapshot-bin
ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 F ...
- SAP SMARTFORM 变量显示技巧
&symbol& (括号中,小写字母为变量) &symbol& 屏蔽从第一位开始的N位&symbol (n)& 只显示前N位&sym ...