建设企业网站需要注意的问题网站 模板 html

张小明 2026/1/16 5:02:57
建设企业网站需要注意的问题,网站 模板 html,wordpress菜单不兼容,搜一搜排名点击软件在本教程里#xff0c;我假定读者对诸如虚8086模式#xff0c;调页#xff0c;GDT,LDT,IDT之类的INTEL 80x86保护模式的操作比较熟悉。如果你不了解这些#xff0c;那你要先在 http://developer.intel.com/design/pentium/manuals/阅读INTEL的文档。 内容#xff1a;Windo…在本教程里我假定读者对诸如虚8086模式调页GDT,LDT,IDT之类的INTEL 80x86保护模式的操作比较熟悉。如果你不了解这些那你要先在 http://developer.intel.com/design/pentium/manuals/阅读INTEL的文档。内容Windows95是一个运行在最高级特权第0层级别的多线程操作系统。所有的应用程序都运行在最低级特权第3层级别上。这样就限制了应用程序对系统的操作。它们不能使用cpu特权指令不能直接访问I/O端口等等。你对gdi32,kernal32和user32这三个大的系统组件一定很熟悉。你肯定会认为这样重要的代码段一定是在第0层级别下运行的。但是实际上它们和其他的应用程序一样是在第三层级别下运行的。这就是说它们并不比Windows计算器或者扫雷游戏有更多的权限。系统的控制实权掌握在虚拟级管理器(VMM) 和虚拟设备驱动程序(VxD)手中。这一切都是由dos引起的。在Window 3.x的时代在市场上有很多成功的dos软件。Windows 3.x必须同时运行普通的Windows程序和dos程序否则它就会失去市场。这个局面是很难处理的因为dos程序和Windows程序有本质的不同。dos程序认为它们拥有系统的一切键盘cpu内存硬盘等等。dos程序不知道怎样和其他程序合作而Windows程序(从那时候起)是可靠的多任务合作系统。也就是每个Windows程序都必须通过GetMessage或PeekMessage来和其他程序进行交流。解决办法就是在一个8086虚拟机上运行所有的dos程序而在另一个叫做系统虚拟机的虚拟机上运行其他所有的Windows程序。Windows负责把cpu运算时间轮流的分给每个虚拟机。这样在Windows 3.x里。Windows程序之间用的是合作多任务而虚拟机之间用的是优先级多任务。什么是一个虚拟机一个虚拟机是被软件创建的一个假象。一个虚拟机和在它上面运行的程序交互就像这个程序是在真正的机器上运行一样。这样一个程序不知道也不关心自己是否是在虚拟机上运行。只要虚拟机准确的像一个真的机器一样响应程序我们就可以把它当成一个真正的机器。你可以把虚拟机这种实机器和软件之间的接口看作一种API。这种不寻常的API由中断BIOS调用和I/O端口组成。如果Windows能够以某种方法完美的模拟这个API那么在虚拟机上运行的程序就会表现的和它们在实际器上运行时完全一样。这就是为什么会出现VMM和VxD的原因。为了协调和监视虚拟机(VMs)Windows需要一个程序来分配任务。这个程序就是虚拟机管理器(VMM)。虚拟机管理器VMM是一个32位的保护模式程序。它的主要任务是建立和维护一个支持虚拟机的框架。例如它要创建运行和结束一个虚拟机。VMM是众多的系统VxD程序之一它被放在你的系统目录下的VMM32.VxD文件中。VMM本身是一个VxD程序但它被当作一个监视其他VxD程序的监视器。让我们来看一下Windows95的启动次序加载io.sys。执行config.sys和autoexec.bat。调用win.com。win.com运行VMM32.VxDVMM32.VxD实际上是个简单的dos的exe文件。VMM32.VxD用xms驱动程序把VMM加载到扩展内存。VMM初始化自身及其它的默认VxD。VMM把机器转入到保护模式并创建系统虚拟机。最后被加载的虚拟外壳设备在系统虚拟机上通过运行krnl386.exe来启动Windows。krnl386.exe加载所有的文件最后是Windows95外壳。正如你所看到的VMM是第一个被加载到内存的VxD程序。它创建系统虚拟机并初始化其他的VxD程序。它也为这些VxD程序提供许多服务。VMM和VxD的操作模式和真正的程序不同。在大多数时候它们是潜伏的。当应用程序在系统中运行时这些VxD程序没有被激活。当某些需要它们处理的中断/错误/事件发生时它们才被唤醒。VMM是不可重入的。这意味着VxD程序必须使它们的访问和VMM服务同步。在有些情况下调用VMM服务是不安全的比如VMM正在处理一个硬件中断。在这段时间内VMM是不允许重进入的。作为一个VxD编写者你必须对你的所作所为极度的小心。记住你是在最高特权级别第0层级别如果你代码有错的话谁也管不到。虚拟设备驱动程序虚拟设备驱动程序被简称为VxD。x 代表各种设备的名字如虚拟键盘驱动程序(vkd)虚拟鼠标驱动程序(vmd)等等。VxD程序是硬件成功初始化的途径。记得dos程序认为它们拥有系统的一切当它们在虚拟机中运行时Windows需要给它们一个实机器的替身。VxD程序就是这些替身。VxD程序通常虚拟一些硬件设备所以例如当一个dos程序认为它在同键盘通讯时实际是虚拟键盘驱动程序在和dos程序通讯。一个VxD程序通常控制真正的硬件设备并对该设备在各个虚拟机之间的共享进行管理。尽管如此并不是说每个VxD程序必须和一个硬件设备相连。虽然VxD程序是用来虚拟硬件设备的但是我们也可以把VxD程序看作是在第0级别的dll。例如如果你需要做一些只有在第0级别才能做的工作你就可以编一个VxD程序来为你完成这个工作。这样由于此VxD程序并没有虚拟任何设备你就可以把它仅仅看作是你的程序的扩展。在我们更深入的讨论VxD和创建我们的VxD程序之前让我先说一些有关于VxD的事情。VxD程序是Windows 9x特有的它在Windows NT下不能运行。所以如果你的程序是依靠VxD的它就不能被移植到Windows NT平台上去。VxD是系统中权力最大的实体。由于它们可以对系统作任何事情所以它们是极度危险的。一个恶意的/错误的VxD程序可以毁掉整个系统。对于恶意的/错误的VxD程序没有任何的保护措施。通常的不用VxD也有很多办法能达到你的目的。在采用VxD的解决办法之前一定要三思。如果用其他的可以在第三层级别实施的办法就使用这个办法。Windows 95下有两种VxD:静态VxD动态VxD静态VxD是那些从系统启动就被加载在系统关闭之前一直存在于内存中的VxD程序。这种VxD可以追溯至Windows 3.x的时代。动态VxD时只有Windows 9x下才有的。动态VxD程序可以在需要的时候被加载/卸载。这些程序大多数都是用来控制设置管理器和输入输出监视器加载的即插即用设备的。你可以在你的win32应用程序里加载或卸载动态VxD程序。VxD程序之间的通讯VxD程序包括VMM通过以下三种途径在相互之间进行通讯控制消息服务API回调控制消息: 当有VMM感兴趣的事件发生时它就向系统中所有载入的VxD程序发送控制消息。控制消息就像是第三层级别的Windows应用程序的消息。每个VxD程序都有一个接受和处理控制消息的函数叫做设备控制函数。系统控制消息总共有50多个。控制消息不多的原因是系统中通常加载了很多VxD程序而每个VxD程序在收到一个控制消息时都要进行处理。如果控制消息太多就会导致系统停滞。所以控制消息只包括那些与虚拟机有关的重要消息如一个虚拟机被创建被销毁等等。作为对系统控制消息的附加一个VxD程序可以定义自己的控制消息这些消息可以用来和那些能响应这些消息的VxD程序通讯。服务函数: 一个VxD程序包括VMM在内通常要导出一系列的被别的VxD程序调用的公共函数这些函数被称为VxD服务。调用这些服务的机制和在第三层级别运行的的应用程序有很大的不同每个导出VxD服务的VxD程序必须有一个唯一的ID你可以从Microsoft得到一个这样的ID。这个ID是一个包含了一个VxD唯一的身份验证的16位的数字例如UNDEFINED_DEVICE_ID EQU 00000HVMM_DEVICE_ID EQU 00001HDEBUG_DEVICE_ID EQU 00002HVPICD_DEVICE_ID EQU 00003HVDMAD_DEVICE_ID EQU 00004HVTD_DEVICE_ID EQU 00005H你可以看到VMM的ID是1VPICD的ID是3等等。VMM用这些ID来找到导出所需VxD服务的VxD程序。当一个VxD程序导出VxD服务时它把所有服务的地址存在一个表里面。所以你还需要通过服务分支表里面服务的索引来找到你所要的服务。例如如果你要调用第一个服务GetVersion服务你就要指定0(这个索引是从0开始的)。调用VxD服务的实机制包括中断20h你的代码产生一个中断20h并带有一个双字的值这个值包含了设备ID和服务索引。例如如果你要调用一个VxD程序导出的VxD服务假设VxD程序设备ID是000DH服务号码是1那么代码应该是int 20hdd 000D0001h跟在中断20H后的双字的高字包含设备ID。低字是在服务列表中的索引。当20H中断执行时VMM得到了控制权并马上检测跟着的双字。然后它提出设备ID用来找到VxD程序用服务索引来定位在那个VxD程序中的所要求的服务的地址。你可以看到这个操作时很费时的。VMM必须浪费很多时间来定位VxD程序和所要服务的地址所以VMM作了个小小的弊 。当中断20H操作成功后VMM抓取链接。这就是说VMM用直接的服务调用来替代20H中断和它后面的双字。所以上面的20H中断代码片断就被改变成:call dword ptr [VxD_Service_Address]这个把戏是成功的因为int 20hdword加一个双字用6个字节正好和call dword ptr结构相等。所以接下来的服务调用是快速而有效的。这个方法具有直接性简洁性。在好的一方面它减轻了VMM和VxD载入器的工作量因为它们不用定位VxD中所有的服务那些没有执行过的服务将会保持原样。再不那么好的一方面一旦一个静态VxD程序导出的服务被调用那么就不可能把这个静态的VxD程序卸载了。由于VMM把调用锁定到VxD服务的实际地址上如果提供这个服务的VxD程序从内存中被卸载了其他VxD程序调用这个服务时就会很快的因为调用无效的内存地址而导致系统崩溃。没有办法来消除抓取的链接。这个问题的结论是动态VxD不适合作为服务提供者。回调: 回调或者回调函数是在VxD程序中给其他的VxD程序调用的函数不要把回调函数和VxD服务搞混淆了。回调函数不像服务那样是公共的它们是私有函数VxD在特定的情况下把它们的地址送给其他的VxD程序。例如当一个VxD程序在处理一个硬件中断时由于VMM是不可重入的这个VxD程序不能使用VxD服务否则会引起页面错误(重入VMM)。这个VxD程序可以把它自己的一个回调函数的地址给VMM这样VMM就可以在能忍受页面错误时调用这个函数。回调函数的想法不是VxD独有的。许多Windows API都在用。最好的例子也许是窗口函数你把窗口函数的地址填在WINDCLASS或WINDCLASSEX结构里并把它当作函数来调用RegisterClass或者RegisterClassEx。当有这个窗口的消息传来时Windows就会调用你的窗口函数。另一个例子是窗口接管函数。你的程序把接管函数的地址送给Windows这样当你感兴趣的事件发生时Windows就会调用你的接管函数。上述三种方法是VxD之间通讯的我们还要讲对V86保护模式和Win32应用程序的接口。在下一章里我们要学习VxD对Win32应用程序的接口。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站 固定ip营销策划方案总结

【PYTHON】视频转图片 一、前期准备:安装依赖库二、方案1:基础版 - 按帧提取(提取所有帧/每隔N帧提取)完整代码 三、方案2:进阶版 - 按时间间隔提取(更精准可控)完整代码 四、核心功能说明1. 关…

张小明 2026/1/8 19:39:39 网站建设

php网站开发流程逻辑网站优化怎么做ppt

在数字化转型浪潮中,精准的行政区划数据已成为各类应用系统的核心基础设施。无论是电商平台的地址选择、公共服务的区域定位,还是数据分析的地理维度,都离不开稳定可靠的行政区划数据支持。本文将为您详细解析如何基于开源数据构建企业级的行…

张小明 2026/1/9 20:49:45 网站建设

黄岩城市建设发展集团网站58同城网站建设目的

Flexbox实战:构建响应式导航、卡片布局和等高列 在Web开发领域,响应式设计已成为现代网页的核心标准。随着移动设备的普及,开发者需要确保页面在不同屏幕尺寸下都能提供一致且友好的用户体验。CSS3的Flexbox(弹性盒子布局&#x…

张小明 2026/1/13 7:17:08 网站建设

博罗县建设局网站做外贸的 需要什么样的网站

缓存在服务端是一个非常重要的东西,今天我们来聊聊怎么把 Amazon ElastiCache应用整合到 Spring Boot 上,让服务响应提速、系统整体轻盈起来。一、为什么你迟早要上缓存你有多少次在日志里看着那几百毫秒的 SQL 延迟叹气?尤其当系统访问量上去…

张小明 2026/1/6 18:49:36 网站建设

网站设计服务流程做网站工资多钱

Wan2.2-T2V-A14B适合哪些行业?这5大领域最具潜力 你有没有想过,未来拍电影可能不再需要摄影棚、灯光组和复杂的剪辑流程? 只需输入一句描述:“夕阳下,穿旗袍的女子撑着油纸伞走过青石板路,雨滴轻敲屋檐”&a…

张小明 2026/1/8 0:57:18 网站建设

公司网站怎么建网站开发 石家庄

Langflow 快捷键与高效操作全指南 在 AI 应用开发日益依赖复杂 LLM 工作流的今天,效率不再只是“锦上添花”,而是决定原型验证速度和团队协作质量的关键因素。Langflow 作为可视化构建 LangChain 流程的领先工具,其真正强大的地方不仅在于拖…

张小明 2026/1/7 21:22:43 网站建设