关于windows系统的机制的信息

windows消息机制是怎么一回事?谢谢!Windows的消息系统是由3个部分组成的:
· 消息队列 。Windows能够为所有的应用程序维护一个消息队列 。应用程序必须从消息队列中获取
消息 , 然后分派给某个窗口 。
· 消息循环 。通过这个循环机制应用程序从消息队列中检索消息,再把它分派给适当的窗口,然
后继续从消息队列中检索下一条消息,再分派给适当的窗口,依次进行 。
· 窗口过程 。每个窗口都有一个窗口过程来接收传递给窗口的消息,它的任务就是获取消息然后
响应它 。窗口过程是一个回调函数;处理了一个消息后,它通常要返回一个值给Windows 。
注意回调函数是程序中的一种函数,它是由Windows或外部模块调用的 。
一个消息从产生到被一个窗口响应,其中有5个步骤:
1) 系统中发生了某个事件 。
2) Windows把这个事件翻译为消息,然后把它放到消息队列中 。
3) 应用程序从消息队列中接收到这个消息,把它存放在TMsg记录中 。
4) 应用程序把消息传递给一个适当的窗口的窗口过程 。
5) 窗口过程响应这个消息并进行处理 。
步骤3和4构成了应用程序的消息循环 。消息循环往往是Windows应用程序的核心 , 因为消息循环
使一个应用程序能够响应外部的事件 。消息循环的任务就是从消息队列中检索消息,然后把消息传递给适当的窗口 。如果消息队列中没有消息,Windows就允许其他应用程序处理它们的消息 。
Windows操作系统最大的特点就是其图形化的操作界面,其图形化界面是建立在其消息处理机制这个基础之上的 。如果不理解Windows消息处理机制,肯定无法深入的理解Windows编程 。可惜很多程序员对Windows消息只是略有所闻,对其使用知之甚少 , 更不了解其内部实现原理,本文试着一步一步向大家披露我理解的Windows消息机制 。可以说 , 掌握了这一部分知识,就是掌握了Windows编程中的神兵利器,灵活运用它,将会极大的提高我们的编程能力 。
Windows系统实现安全机制的基本手段有哪些1.标识、鉴别及可信通路机制
用于保证只有合法用户才能以系统允许的方式存取系统中的资源 。用户合法性检查和身份认证机制通常采用口令验证或物理鉴定(如磁卡或IC卡、数字签名、指纹识别、声音识别)的方式 。而就口令验证来讲,系统必须采用将用户输入的口令和保存在系统中的口令相比较的方式,因此系统口令表应基于特定加密手段及存取控制机制来保证其保密性 。此外,还必须保证用户与系统间交互特别是登陆过程的安全性和可信性 。2.自主访问控制与强制访问控制机制
访问控制是操作系统安全的核心内容和基本要求 。当系统主体对客体进行访问时,应按照一定的机制判定访问请求和访问方式是否合法,进而决定是否支持访问请求和执行访问操作 。通常包括自主访问控制和强制访问控制等两种方式,前者指主体(进程或用户)对客体(如文件、目录、特殊设备文件等)的访问权限只能由客体的属主或超级用户决定或更改;而后者则由专门的安全管理员按照一定的规则分别对系统中的主体和客体赋予相应的安全标记,且基于特定的强制访问规则来决定是否允许访问 。
3.最小特权管理机制
特权是超越访问控制限制的能力,它和访问控制结合使用 , 提高了系统的灵活性 。然而,简单的系统管理员或超级用户管理模式也带来了不安全的隐患 , 即一旦相应口令失窃,则后果不堪设想 。因此,应引入最小特权管理机制 , 根据敏感操作类型进行特权细分及基于职责关联一组特权指令集,同时建立特权传递及计算机制,并保证任何企图超越强制访问控制和自主访问控制的特权任务,都必须通过特权机制的检查 。
4.隐蔽通道分析处理机制
所谓隐蔽通道是指允许进程间以危害系统安全策略的方式传输信息的通信信道 。根据共享资源性质的不同 , 其具体可分为存储隐蔽通道和时间隐蔽通道 。鉴于隐蔽通道可能造成严重的信息泄漏,所以应当建立适当的隐蔽通道分析处理机制,以监测和识别可能的隐蔽通道,并予以消除、降低带宽或进行审计 。
5.安全审计机制
安全审计是一种事后追查的安全机制,其主要目标是检测和判定非法用户对系统的渗透或入侵,识别误操作并记录进程基于特定安全级活动的详细情况 。通常 , 安全审计机制应提供审计事件配置、审计记录分类及排序等附带功能 。
微软Windows 7系统开机加载过程的原理和机制 微软Windows 7系统开机加载过程windows系统的机制的原理和机制
一个Windows 操作系统用的久了windows系统的机制,自然而然的要出很多问题windows系统的机制,系统也会明显的变慢 , 原因固然很多:注册表日益庞大、无用字体越来越多、启动加载的程序越来越多、系统默认开启的服务越来越多、计划任务列表中被加入了一些莫名其妙的开机启动项目、磁盘碎片越来越多、杀毒软件的开机动作选项没有合理设置等等 。不仅是用久了的系统,就算是一个新安装好的操作系统,也需要进行一些设置优化,关闭不常用的服务、屏蔽一些压根无用的开机启动项目等等 。下面,windows系统的机制我们一起来看看整个Windows 7系统的完整开机加载过程的原理和机制 。
1、开启电源
计算机系统将进行加电自检(POST) 。如果通过 , 之后BIOS会读取主引导记录(MBR)——被标记为启动设备的硬盘的首扇区,并传送被Windows 7建立的控制编码给MBR 。这时,Windows接管启动过程 。接下来,MBR读取引导扇区-活动分区的第一扇区 。此扇区包含用以启动Windows启动管理器(Windows Boot Manager)程序Bootmgr exe的代码 。
2、启动菜单生成
Windows启动管理器读取“启动配置数据存储(Boot Confi guration Data store)中的'信息 。此信息包含已被安装在计算机上的所有操作系统的配置信息 。并且用以生成启动菜单 。
3、当您在启动菜单中选择下列动作时:
1 如果您选择的是Windows 7(或Windows Vista),Windows 启动管理器(Windows Boot Manager)运行%SystemRoot%\System32文件夹中的OS loader——Winload.exe 。
2 如果您选择的是自休眠状态恢复Windows 7 或 Vista,那么启动管理器将装载Winresume.exe并恢复您先前的使用环境 。
【关于windows系统的机制的信息】3 如果您在启动菜单中选择的是早期的Windows版本,启动管理器将定位系统安装所在的卷,并且加载Windows NT风格的早期OS loader(Ntldr.exe)——生成一个由boot.ini内容决定的启动菜单 。
4、核心文件加载至登录画面
Windows7启动时 , 加载其核心文件 Ntoskrnl.exe和hal.dll——从注册表中读取设置并加载驱动程序 。接下来将运行Windows会话管理器(smss.exe)并且启动 Windows启动程序(Wininit exe),本地安全验证(Lsass.exe)与服务(services.exe)进程,完成后,就可以登录windows系统的机制你的系统了 。
5、登陆后的开机加载项目
当你输入您的用户名和密码 , 登陆进入您的系统那一刻 , 硬盘发出的声音和硬盘灯的再次提醒你:系统正在加载您这个账户的个人专用设置文件,正在加载当前电脑和当前用户所指定的一些开机启动项目内的软件 。这是众多软件(包括木马病毒)最喜欢的地方,包括我们最常用的QQ、MSN、杀毒软件,因为它们要靠这里来常驻桌面右下角和内存之中 , 方便进行正当的和不正当的一些工作(此处指的是某些流氓和恶意软件) 。当这些加载完毕,才算真正进入了您的 Windows桌面 。
;
windows的消息机制具体是按照什么逻辑实现的Windows窗体是怎样展现在屏幕上的呢?众所周知windows系统的机制,是通过API绘制实现的 。Windows操作系统提供了一系列的API函数来实现界面的绘制功能,例如windows系统的机制:
DrawText 绘制文字
DrawEdge 绘制边框
DrawIcon 绘制图标
Bitmap 绘制位图
Rectangle 绘制矩形

再复杂的程序界面都是通过这些函数来实现的 。
那什么时候调用这些函数呢?显然我们需要一个控制中心,用来进行“发号施令”,我们还需要一个命令传达机制 , 将命令即时的传达到目的地 。这个控制中心,就是一个动力源,就像一颗心脏 , 源源不断地将血液送往各处 。这个命令传达机制就是Windows消息机制,Windows消息就好比是身体中的血液,它是命令传达的使者 。
Windows消息控制中心一般是三层结构,其顶端就是Windows内核 。Windows内核维护着一个消息队列,第二级控制中心从这个消息队列中获取属于自己管辖的消息 , 后做出处理,有些消息直接处理掉 , 有些还要发送给下一级窗体(Window)或控件(Control) 。第二级控制中心一般是各Windows应用程序的Application对象 。第三级控制中心就是Windows窗体对象,每一个窗体都有一个默认的窗体过程,这个过程负责处理各种接收到的消息 。如下图所示:
(注:windows指windows操作系统;窗口:即windows窗口;窗体:包括窗口,以及有句柄的控件;control指控件,控件本身也可能是一个window,也可能不是;Application即应用程序 , 应用程序也可能不会用到Windows消息机制,这里我们专门讨论有消息循环的应用程序)
消息是以固定的结构传送给应用程序的,结构如下:
Public Type MSG
hwnd As Long
message As Long
wParam As Long
lParam As Long
time As Long
pt As POINTAPI
End Type
其中hwnd是窗体的句柄 , message是一个消息常量,用来表示消息的类型,wParam和lParam都是32位的附加信息,具体表示什么内容,要视消息的类型而定,time是消息发送的时间,pt是消息发送时鼠标所在的位置 。
Windows操作系统中包括以下几种消息:
1、标准Windows消息:
这种消息以WM_打头 。
2、通知消息
通知消息是针对标准Windows控件的消息 。这些控件包括:按钮(Button)、组合框(ComboBox)、编辑框(TextBox)、列表框(ListBox)、ListView控件、Treeview控件、工具条(Toolbar)、菜单(Menu)等 。每种消息以不同的字符串打头 。
3、自定义消息
编程人员还可以自定义消息 。不是每个控件都能接收消息,转发消息和绘制自身,只有具有句柄(handle)的控件才能做到 。有句柄的控件本质上都是一个窗体(window),它们可以独立存在,可以作为其它控件的容器 , 而没有句柄的控件,如Label,是不能独立存在的,只能作为窗口控件的子控件,它不能绘制自身,只能依靠父窗体将它绘制来 。
句柄的本质是一个系统自动维护的32位的数值,在整个操作系统的任一时刻,这个数值是唯一的 。但该句柄代表的窗体释放后,句柄也会被释放,这个数值又可能被其它窗体使用 。也就是说,句柄的数值是动态的,它本身只是一个唯一性标识,操作系统通过句柄来识别和查找它所代表的对象 。
然而,并非所有的句柄都是窗体的句柄,Windows系统中还中很多其它类型的句柄,如画布(hdc)句柄,画笔句柄,画刷句柄,应用程序句柄(hInstance)等 。这种句柄是不能接收消息的 。但不管是哪种句柄,都是系统中对象的唯一标识 。本文只讨论窗体句柄 。
那为什么句柄使窗口具有了如此独特的特性呢?实际是都是由于消息的原因 。由于有了句柄,窗体能够接收消息,也就知道了该什么时候绘制自己,绘制子控件,知道了鼠标在什么时候点击了窗口的哪个部分,从而作出相应的处理 。句柄就好像是一个人的身份证 , 有了它,windows系统的机制你就可以从事各种社会活动;否则的话,你要么是一个社会看不到的黑户,要么跟在别人后面 , 通过别人来证明你的存在 。1、从消息队列获取消息:
可以通过PeekMessage或GetMessage函数从Windows消息队列中获取消息 。Windows保存的消息队列是以线程(Thread)来分组的,也就是说每个线程都有自己的消息队列 。
2、发送消息
发送消息到指定窗体一般通过以下两个函数完成:SendMessage和PostMessage 。两个函数的区别在于:PostMessage函数只是向线程消息队列中添加消息,如果添加成功,则返回True,否则返回False , 消息是否被处理,或处理的结果,就不知道了 。而SendMessage则有些不同,它并不是把消息加入到队列里,而是直接翻译消息和调用消息处理(线程向自己发送消息才是这样),直到消息处理完成后才返回 。所以,如果我们希望发送的消息立即被执行 , 就应该调用SendMessage 。
还有一点,就是SendMessage发送的消息由于不会被加入到消息队列中(错:线程向其windows系统的机制他线程发送消息也是追加到其windows系统的机制他线程的发送消息队列的,即使这两个线程在同一个进程也是如此),所以通过PeekMessage或GetMessage是不能获取到由SendMessage发送的消息 。
另外,有些消息用PostMessage不会成功,比如wm_settext 。所以不是所有的消息都能够用PostMessage的 。
还有一些其它的发送消息API函数,如PostThreadMessage,SendMessageCallback , SendMessageTimeout,SendNotifyMessage等 。消息循环是应用程序能够持续存在的根本原因 。如果循环退出,则应用程序就结束了 。
我们来看一看Delphi中封装的消息循环是怎样的:
第一步:程序开始运行(Run)
Application.Initialize; //初始化
Application.CreateForm(TForm1, Form1); //创建主窗体
Application.Run; //开始运行,准备进行消息循环
如果不创建主窗体,应用程序同样可以存在和运行 。
第二步:开始调用消息循环(HandleMessage)
procedure TApplication.Run;
begin
FRunning := True;
try
AddExitProc(DoneApplication);
if FMainFormnil then
begin
case CmdShow of
SW_SHOWMINNOACTIVE: FMainForm.FWindowState := wsMinimized;
SW_SHOWMAXIMIZED: MainForm.WindowState := wsMaximized;
end;
if FShowMainForm then
if FMainForm.FWindowState = wsMinimized then
Minimize else
FMainForm.Visible := True;
Repeat//注:循环开始
try
HandleMessage;
except
HandleException(Self);
end;
until Terminated; //循环结束条件
end;
finally
FRunning := False;
end;
end;
第三步:消息循环中对消息的处理 。
procedure TApplication.HandleMessage;
var
Msg: TMsg;
begin
if not ProcessMessage(Msg) then Idle(Msg);
end;
function TApplication.ProcessMessage(var Msg: TMsg): Boolean;
var
Handled: Boolean;
begin
Result := False;
if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
begin
Result := True;
if Msg.MessageWM_QUIT then
begin
Handled := False;
if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
if not IsHintMsg(Msg) and not Handled and not IsMDIMsg(Msg) and
not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end
else
FTerminate := True;
end;
end;
窗体过程实际上是一个回调函数 。所谓的回调函数,实际上就是由Windows操作系统或外部程序调用的函数 。回调函数一般都有规定的参数格式,以地址方式传递给调用者 。窗口过程中是Windows操作系统调用了,在一个窗口创建的时候,在分配窗体句柄的时候就需要传入回调函数地址 。那为什么我们平时编程看不到这个回调函数呢?这是由于我们的编程工具已经为我们生成了默认的窗体过程,这个过程的要做的事情就是判断不同的消息类型,然后做出不同的处理 。例如可以为键盘或鼠标输入生成事件等 。事件本质上是对消息的封装,是IDE编程环境为了简化编程而提供的有用的工具 。这个封装是在窗体过程中实现的 。每种IDE封装了许多Windows的消息,例如: 事件 消息 OnActivate WM_ACTIVATE OnClick WM_XBUTTONDOWN OnCreate WM_CREATE OnDblClick WM_XBUTTONDBLCLICK OnKeyDown WM_KEYDOWN OnKeyPress WM_CHAR OnKeyUp WIN_KEYUP OnPaint WM_PAINT OnResize WM_SIZE OnTimer WM_TIMER
揭秘Windows Vista引导机制简介揭秘Windows Vista引导机制
所谓的引导机制就是在炒作系统内核运行前的一小段程序 。其主要作用是初始化电脑硬件设备 , 建立内存空间的映射图 。从而将系统的软件和硬件设备环境调配到一个适合的状态 , 以使电脑最终调用系统内核而准备好适合的环境 。
那么vista的引导机制是否和以前的windows的版本不同呢?其实vista引导机制是一项全新的技术 。以前寄予nt的windows系统采用“ntldr”作为“boot loader" 来启动系统 。vista则是采用了”windows boot manager“引导机制 。由vista系统中“bootmger.exe”实现系统引导 。我们完全可以这样理解vista中的“bootmger 。exe”文件取代了寄予nt技术windows中的`“ntldr , boot 。ini”引导文件 。
如果想修改系统引导菜单他们之间就有很大的差别了 。vista同过“Bootmgr 。exe”文件学要用vista内置的工具“bcdedit.exe".来实现 。但是我们如果想修改xp的引导文件我们只要同过修改:boot.ini 。既可以实现系统引导菜单的修改 。
windows系统的机制的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、windows系统的机制的信息别忘了在本站进行查找喔 。

    推荐阅读