还记得几个月前还刚开始准备今年的TechEd,今天已经是大会的第二天了。 我们Windows Embedded事业部的总经理Kevin Dallas 这回儿正在给媒体做新技术和产品发布演讲,而我马上也要上“战场”讲课了。今年的几大“战事”如下,主要是关于Windows Embedded Standard 2011, 基于Windows 7的嵌入式开发平台。希望各位中国的大侠到场切磋 :)
课程 :
EMB201 基于Windows 7的专用设备开发平台 - Windows Embedded Standard 2011技术概览 实战:开发基于嵌入式Windows 7 - Windows Embedded Standard 2011 的专用设备 (L200), 11月6日,14:25 - 15:35, 分会场五
EMB202 实战:开发基于嵌入式Windows 7 - Windows Embedded Standard 2011 的专用设备 (L200), 11月7日,13:00 - 14:10, 分会场五
动手实验:
EMBHOL138 如何在Windows Embedded Standard 2011中配置写过滤器 (L300), 11月6日,13:00 - 14:10, 分会场八
EMBHOL218 创建一个适用于特定应用程序的Windows Embedded Standard 2011系统映像 (L200), 11月7日, 9:25 - 10:35, 分会场八
详情请参阅TechEd China 网站 http://www.microsoft.com/china/teched/2009/。 会场见了!
施卫娟
本周三西雅图的最高气温达到摄氏39度,创了15年历史新高,可把我们都热坏了,下班后都躲到游泳池,商场,影院去了。不过上班时间大家的工作热情有增未减,昨天中午还和我们在北京做嵌入式的开发团队共聚了午餐 (pizza!),交流了工作和生活体会,其乐融融。
回到技术上来,我们下一次的网络广播已安排在8月13号早上10点,课题是 “在Windows Embedded设备上使用Powershell”,级别300。讲师是Thomas Yong,是我们产品组的项目经理,有很多业界的经验,能讲很流利的中文。
讲座内容:
Windows PowerShell 是微软最新发布的shell工具,它在一个强大且安全的环境下,集合了本地shell以及脚本语言。它提供了 WMI、COM和.NET项目之间的无缝集成技术。在这一讲中,我们主要研究如何实现在Windows Embedded Standard设备上使用Powershell,以及怎样本地和远程管理这些设备。
听课登记网站:http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032422721&culture=zh-CN
欢迎大家准时收听!
施卫娟
不知不觉中,2009年上半年将过,西雅图也已经理论上进入夏天多日了,前一阵猛热了一阵后(可能达到33-35度),现在基本保持在20度以下,清凉宜人。
我们的产品开发组可是热乎着呢,忙着开发测试Windows Embedded Standard的下期发布。玄机不可泄露,我暂时得缄默不语,大家翘首以待吧 :).
不过,倒是可以给大家推荐一下我同事Lynda Allen最近几个月来录制的关于Windows XP Embedded/Windows Embedded Standard技术技巧的视频。每个视频集中讲解某个技术诀窍,配以实时抓取的鼠标或键盘操作,很容易理解试用。Lynda是用英文讲的。大家试试看看,如果听起来不方便,给我们提意见,我们可以考虑能否中文化。
- Windows Embedded Standard 新功能概览 (1)
- Windows Embedded Standard 新功能概览 (2)
- Windows Embedded Standard 新功能概览 (3)
- Windows Embedded Standard 小窍门集锦(1)
- Windows Embedded Standard 小窍门集锦(2)
- Windows Embedded Standard 小窍门集锦(3)
- Windows Embedded Standard 组件化一个音频驱动
- Windows Embedded Standard: 在组件设计器里导入一个INF文件
- Windows Embedded Standard:Sysprep的使用方法
施卫娟
最近在与国内市场部门同事电子邮件联系中,得知他们正在北京和深圳举办培训,内容都是从我们总部最新拿过去的资料,看起来很不错,给大家转发一下,抓紧报名参加啊。
- 施卫娟
![clip_image001[1] clip_image001[1]](http://blogs.msdn.com/blogfiles/embeddedchina/WindowsLiveWriter/47464112f25d_14D01/clip_image001%5B1%5D_thumb.jpg)
微软嵌入式培训邀请函
尊敬的各位合作伙伴:
感谢长期以来您对Windows Embedded开发技术的关注与支持,为了进一步促进大家的沟通与交流,更好的掌握嵌入式开发技术,我们特地举行为期两天的微软嵌入式开发培训,本次活动面向企业开发人员及高校相关技术专家。诚挚欢迎您的出席。
| 时间: | 城市 | 地点 |
| 2009年5月23-24日 | 北京 | 北京市西城区裕民路18号北环中心A座610室 (北环中心位于北三环马甸桥东北角裕民路) |
| 2009年6月11-12日 | 深圳 | 深圳市福田区深南中路2008号华联大厦13楼1302室 (华联大厦位于深南中路和上步路的交汇点。) |
主办单位:微软平台与合作开发部&微软嵌入式产品市场部
日程安排
| Day 1 | | 9:00 | Windows Embedded Overview (60 min) - Industry trends - Microsoft vision | | 10:00 | Windows Embedded CE technical overview (60 min) - Discover Windows CE - Tools and frameworks - Building a device using Windows CE | | 11:00 | Break | | 11:15 | Windows Embedded Standard Technical overview (60 min) - Discover Windows Embedded Standard - Tools and Framework - Deploy and service Windows Embedded Standard devices | | 12:15 | Lunch Break (45 min) | | 13:00 | Windows Embedded Standard first steps lab (60 min) - Creating an image - Deploying an image | | 14:00 | Embedded Enabling features configuration lab (90 min) - Implement write filters | | 15:30 | Break | | 15:45 | Shell customization lab (90 min) - Create a WPF shell using Expression Blend - Create and run an image using the new shell | | Day 2 | | 9:00 | Windows Embedded CE 6 fundamentals Course (90 min) - Embedded OS - Real Time - Tools | | 10:30 | Break | | 10:45 | Platform Builder 6 first steps lab (45 min) - First OSDesign creation - Deployment on an emulator | | 11:30 | Debugging Windows Embedded CE applications and drivers lab (45 min) - Debugging an application - Debugging a driver | | 12:15 | Lunch Break (45 min) | | 13:00 | Windows Embedded CE 6 application development (native and managed) lab (60 min) | | 14:00 | Windows Embedded CE 6 Driver development basics course (60 min) | | 15:00 | Break | | 15:15 | Windows Embedded distributed development (60 min) | |
报名表
公司名称: ______________________________________
| 报名培训城市 | 姓名 | 职务 | 部门 | 电子邮件 | 手机 |
| 北京\深圳 | | | | | |
| 北京\深圳 | | | | | |
请认真填写本报名表并发送至 wzhong@microsoft.com,请在主题中注明“Windows Embedded 培训”字样。如有任何疑问或者建议,请致电 钟卫:010- 58968926
(注:由于场地有限,每公司最多可派3人参加,请您尽快报名!谢谢。)
| 地点 | 乘车路线 |
| 北京市西城区裕民路18号北环中心A座610室 (北环中心位于北三环马甸桥东北角裕民路) | 地铁:10号线,在健德门站下车,往南步行约5分钟;; 公交:乘坐727、387、702路,在马甸桥东下车,往北步行3分钟左右; 乘坐367、302、300、801、731,836路公共汽车,在马甸桥东下车往北走约10分钟 |
| 地点 | 乘车路线 |
| 深圳市福田区深南中路2008号华联大厦13楼1302室 (华联大厦位于深南中路和上步路的交汇点。) | 地铁:科学馆B出口上即是; 公交:任何一班经过深南大道的公交,兴华宾馆下即是。 |
大家可能注意到我们这个博客刚起步时,只限于Windows Embedded Standard团队热心于参与中文社区的同事。上周,我们终于有机会和其他在Windows Embedded大旗下的姐妹产品组的同样“有心人士”一起在午餐时间的一个会议室碰了头(见下图)。大家的背景各不相同, 其中有几位同事或者只会讲广东话不会普通话,或者只会听得懂普通话不会说, 但是那不是问题, 用一句流行的话来描述是“与会人士畅所欲言,会议气氛热烈”:). 大家都很愿意抽时间帮助建设我们的中文社区资源,包括这个博客,论坛,撰写技术白皮书,网络广播等等,让中文客户更方便地使用我们的产品。
其他姐妹产品组包括Windows Embedded Compact (前身CE)和Windows Embedded System and Service (系统和服务)。大家对前者可能比较熟悉了,后者则是一个全新的团队,将负责将Software+Service的概念在Windows Embedded平台上实现。以后我们会陆续介绍。如果想先睹为快,可以看一下有关WIndows Embedded Server的新闻发布(英文)。
快要五一节了.祝大家玩好休息好!
施卫娟
(注:本文由邹少颖译自Andy Allred2005年的英文博客系列之二。如果你要查看中文版的系列之一,请点击此处.)
在这个帖子里,我会给您展示如何把应用程序组件化的第一阶段。我们可以从一些容易的实例开始, 例如Winamp 。网上可以找到好些个不同版本的Winamp,为简单起见我选择了“Winamp-Lite” , 版本号是5.08e ,自解压缩EXE包的名字是“ winamp508e_lite.exe ”,这个软件包解压缩后大小是516KB。
您将会见到,这个组件的文件包里包括23个文件(有一些文件我们并不关心,比如卸载程序和它的相关链接文件)。这个文件包在压缩前是1.84MB,压缩后只有1.24MB。由此可见,这是一个超轻量级的软件,希望它对其它文件资源的依赖也很小。
但是有时候虽然应用程序很小,它仍然可以对其它文件资源有着很大的依赖。试想一下,如果一个应用程序是用托管代码 (例如C#)开发的,那么我们将不得不把整个.NET Framework给添加到组件里来。所以在有些情况下,应用程序文件的大小并不能正确反映出它对其它资源的依赖。
把应用程序组件化的基本步骤是:
1.安装系统监测工具(比如InCtrl5或者Ashampoo’s Uninstaller或者CleanSweep )
2.下载并安装该应用程序。使用工具来监测整个系统的变化。
3.从监测工具中得到系统变化的列表。在这个实验里,它扫描了Winamp安装前后所有的文件和注册表文件,并且比较了这两个状态之间的变化。
4.分析系统变化列表,然后把相关信息加到组件里
5.收集程序文件,并将它们添加到该组件的文件包里。
6.分析文件资源的静态依赖项,然后把它们加入到组件的依赖中。
7.把Winamp组件引入系统,然后部署这个系统。
8.洗手,在裤子上蹭干,重复步骤1-8(如果不成功的话)。
首先,我把监测程序下载到我的工作用电脑里,(这是我犯的第一个错误,我会在第3部分解释原因)。我为什么要把监测程序安装在我的工作用电脑上?您将会在XP Pro上做这些分析工作。 您的目的是了解Winamp如何和XP Pro交互,然后把这些变化体现在您的组件里。
接下来,我从Ashampoo下载和安装了系统监测软件。就个人而言,我更喜欢Ashampoo’s Uninstaller,但其他很多人似乎更喜欢InCtrl5。我不知道在哪里可以找到InCtrl5,它曾经可以从PC Magazine免费下载,但现在好像他们开始收费,或需要注册才能使用。从Ashampoo下载的系统监测软件原来的名字叫EZClean,和CleanSweep类似,当你安装应用程序和驱动程序时,它会监测系统里所有的注册表和文件的变化。它可以用来代替的Windows系统还原功能。如果有应用程序/驱动程序造成电脑不稳定,它可以让您的系统恢复到初始状态。其实使用哪个工具并不重要,最终目的是找到一个方法能够发现电脑里所有文件资源上的变化。
再下一步,下载Winamp,开启系统监测工具,然后安装该应用程序。我建议你在安装成功后继续监测系统变化,直到您确认应用程序可以成功运行为止。
当您确认应用程序能够正常启动并运行后,可以停止监测工具,这样您就不会再捕捉任何信息。
如果你之前从来没有这样做过,你会发现监测工具捕捉到的更多的是Windows的活动,而不是简单得放置二进制文件和注册表值的增加和替换。 Windows总是在后台做着一些工作,比如创建预取数据,为Explorer更新最近使用( MUR,'most recently used' )列表,等等,等等......。因此,越早关掉监测程序,在系统变化记录中的噪音就会越少。
当我完成了整个监测过程,并得到了一个系统变化记录后,所有的一切都很正常。 20多个文件被添加到”Program Files\Winamp”文件夹和子文件夹中,Winamp.ini被添加到System32文件夹中。注册表值也不错(并没有成百上千个注册表值被添加或改变)。
根据得到的系统变化纪录,我现在可以开始创建一个应用程序的组件。在这里我发现我犯了个'菜鸟'才会出的错,然后我根据这个做了些相应的调整。我会在下次当我转换系统变化记录到实际组件定义文件时展开讨论。
所有的过程,从安装监测程序,打开它,到安装 Winamp Lite, 到捕捉系统变化纪录花了不到10分钟。
我注意到最近我们的市场部门推出了一个新的网页:简体中文页 或 繁体中文页,主题是“市场先机”风云志。挺有趣,大家不妨看一下。
配套推出的还有几个很简短的英文视频:信心(Confidence), 互联(Connectivity), 社区 (Community)。就当是享用了一些精神“零食”吧:).
施卫娟
(注:本文由吴先明译自英文博客)
我是嵌入式Windows产品组的项目经理,具体负责写过滤器(Write Filters)模块,包括Enhanced Write Filter (EWF), File Based Write Filter (FBWF), 和Registry Filter。我已经在微软工作9年,并从去年开始参与基于Windows 7的新一代嵌入式Windows产品的开发。
写过滤器是嵌入式功能的一部分,他们能够帮助保护嵌入式设备的硬盘驱动器。写过滤器具备许多优势,包括系统稳定性与可靠性,无状态设备操作,基于HORM (Hibernate Once Resume Many, 休眠一次 启动多次) 的快速启动,以及减缓闪存设备的损耗。这篇博客文章 Disk Protection in Windows Embedded Standard - more than just a useful feature 系统地讲述了写过滤器以及他们相应的优势。除此之外,写过滤器为系统映像创建过程以及系统运行过程提供了配置和管理功能。另一篇博客文章Managing Disk Protection具体讲解了如何使用写过滤器进行系统配置和运行期间管理。然而,使用写过滤器有时也会带来一定的系统开销,因为它们会和系统的许多其他功能进行交互,尤其是要求对硬盘进行永久写操作的功能;更新服务(servicing)就是一个典型的例子:用户无法更新一个正被写过滤器保护的系统, 除非在更新之前关掉写过滤器对硬盘的保护,并且在更新结束之后再把它打开。
现在我们希望能够从读者这里得到使用写过滤器的反馈,包括使用体验,实际用例,感觉不便之处,以及任何其他对写过滤器的建议。你们的反馈将直接帮助我们完善产品,使其更加贴近实际用户的需求。尽管我不能保证在未来投放市场的产品中满足你们提出的所有需求,但是我将确保在产品设计过程中对所有反馈给于重点考虑,并将他们列为核心需求。
感谢你们阅读我的第一篇博客文章,我期待在这个博客里看到更多有益的文章以及富有成效的讨论。
- Abdelkader
注:本文由邹少颖译自2005年Andy Allred所写的关于组件化的博客系列的引子,及之一。
在05年春季,我在博客上发布了一系列的文章,描述如何把第三方应用程序或驱动程序组件化。我之所以发表这些文章,是因为我看到了很多人抱怨这个过程太难,不直观。特别是对一些不明白什么是“应用程序接口”,或者不知道什么是MSDN的人来说。
还有就是,我们的客户是程序开发人员,他们的生活就是写代码。他们知道什么是延时加载(delay load), shell32是一种静态依赖 (static dependency)。这篇描述如何把应用程序组件化的文章同样也适合于这些开发人员。
在这个系列的第一篇文章里,我选择把Winamp组件化作为例子,是因为这个软件比较小,这样读者不会感到不知所措。在过去很多年里,我使用同样基本的方法把数以百计的驱动程序和应用程序组件化。读者可以看到我使用同样的方法把一个另一个应用程序(而且是更复杂的)组件化了。
系列一: Winamp组件化 - 简介
系列二:抓取文件和注册表资源
系列三:将资源填入组件
系列四:为"Package"和"Rep”创建组件
系列五:检查组件依赖
系列六:大结局
今天我们先讲系列一:
系列一: Winamp组件化 - 简介
在这篇文章里,我会示范如何组件化第三方应用程序。让我们从一些小的软件开始,例如Winamp-Lite。我会把所有实验步骤记录下来。如果我在这个过程中犯了错误,您可以从我的错误里吸取教训。希望这个教程可以让您了解如何把应用程序组件化。
通过组件化Winamp软件,我希望达到这些目标。
第一,通过比较组件化后可以在嵌入式系统上运行的Winamp和Windows Media Player,我们可以向Windows Media Player开发团队显示WMP里错综复杂的依赖项。我不知道其结果是什么,但我敢肯定的是Winamp软件会更小。在过去的很多年里,客户给了我们很多关于WMP 那些复杂的依赖项的反馈。他们(Windows Media Player团队)是一个非常好的开发团队。 过去5年里,他们的项目经理和开发人员为我们组件化了各种版本的WMP。我们很想知道他们是怎么看待这个问题。
第二,我会把这个组件共享给读者。我不会发布组件化后的二进制文件,但读者可以拿到SLD文件,一个Winamp的下载链接,和一个读者组件化Winamp所需要收集的文件列表。我为什么会这样做?因为我想告诉大家Xpe的好处,和其他系统的比较;比如:WindRiver/Linux/QNX等。同时,我也理解“社区”的重要性。所以我想回报一些有用的东西给读者,而不是花时间在这个博客上瞎扯。
第三,最主要的目的是通过这个练习,来和大家分享中如何组件化第三方应用程序。我不知道这个实验的最终结果会怎么样,那些非直观的,和不可发现的文件和注册表的dependencies可能会变成一场噩梦。不过,这可能给读者一个机会,去了解他们以后可能会去处理的一些问题。
从第二部分开始,我会列出些初始的步骤。在这个练习完成后,我们将可以挑选一些更为复杂的应用程序;或者是一些比较难的驱动程序(如生物指纹读取机)或者是其他更大的应用程序。
Andy
转眼间就到了大年三十了。在此向所有我们的中国客户朋友们和其他读者们拜年了!大家牛年更牛!
前天终于解决了匿名用户不能留言的问题。大家现在终于可以一吐为快,不用登记帐号就可留言了。“问渠哪得清如许,为有源头活水来”。希望大家一起建议支持,把这个博客搞得更旺!
再次祝大家新年新气象!
施卫娟
(本文由作者译自其英文博客原文)
正如我们知道,每次当我们在计算机上运行应用程序的时候,操作系统会把程序从硬盘加载到内存中,然后根据内存里的数据来执行指令或者进行运算。大多数操作系统(如XP, Vista)可以让用户同时处理多个任务,并且可以同时执行多个应用程序。为了最大限度的利用内存,操作系统只会把应用程序当前使用的部分代码和数据加载到内存中。每当应用程序需要用到那部分不在内存的代码或数据时,操作系统就会产生一个内存页面异常,并开始把所需的代码或者数据从硬盘加载到内存中。很明显,整个过程会降低应用程序的性能,因为把数据读取到内存中需要些的额外时间。更糟糕的是,如果内存中没有可用空间了,操作系统会根据算法挑选一些内存页面,把其中的内容写回硬盘,然后再把所需要的数据加载到这些页面中。所以,内存的大小是一个影响计算机性能的关键因素。内存越大,越多应用程序和数据可以被加载在计算机内存里,然后计算机可以更快得运行。
目前来说,内存的价格越来越低,用户也愿意通过增加更多的内存来提高计算机的整体性能。但是,多少内存是合适的呢?以一个大多数人使用过或者正在使用操作系统来说,例如32位XP或Vista,操作系统只能获得总额为232的地址空间; 也就是说4GB是它的上限。那么是不是用户只要插上2根2GB的内存,就可以直接使用4GB的内存了?
当我们插上4GB的内存后,再重启计算机和进入BIOS之后,我们可以看到已经识别的内存大小是4096MB。到目前为止,一切都很顺利。我们可以更进一步确认这4GB内存已经被操作系统识别到了。在Windows启动后,通过选择“电脑”,然后右击它,然后选择属性,我们应该能在屏幕上看到 “内存 (RAM):”是4.00GB的(见下图)。这样从另外一个方面证实,32位的操作系统能够支持高达4GB的内存。

目前来说一切都正常。不过,让我们再看看Windows Task Manager。首先,打开Task Manager,然后单击Performance属性页。

我们可以看到物理内存 (MB)的数值是3566MB,而不是4096MB。 那么剩下的530MB到哪去了呢? 为什么BIOS和系统属性,和Windows Task Manager给出的数值不一样呢?
其实这两个值, 4GB和3566MB,都是对的。4GB是安装在计算机上内存总量,而3566MB当前可以使用的内存总量。换个说法,操作系统分配了3566MB的地址空间给内存。对于多出来的530MB,操作系统没有相应的物理地址来对其进行读写操作。
理论上说, 32位操作系统支持232的物理地址空间(4GB),从0x00000000到0xFFFFFFFF。但并非所有的地址空间都被分配给了内存。其他设备,比如显卡或USB控制器,也需要占用地址空间。比如说,一块带256 MB显存的显卡,操作系统也需要指定一段地址空间范围分配给显卡上的显存,然后才可以对它进行读写。
我们可以通过Device Manager来查看地址空间是如何分配给所有设备的。打开Device Manager中,然后在View菜单里选择”Resources by type”。从这个窗口(见下图) ,我们可以清楚地看到所有物理地址空间从0x00000000到0xFFFFFFFF已经分配给计算机上所有的设备 。Device Manager没有具体标出内存所占用的地址空间,但它存在于一些以System board命名的空间段。

为了验证这点,我们可以通过运行一个叫MemInfo.exe的应用程序 (http://www.winsiderss.com/tools/meminfo/meminfo.zip)。 从结果上我们可以知道有3段地址范围分配给了内存。如果我们把这3个数值加在一起(然后转换成MB),我们可以发现,操作系统拨出3565.35MB的物理地址空间给内存。这个数值和Windows Task Manager上的一样。

所以,如果用户想要充分利用4GB或者更多的内存,可以考虑从32位转到64位的操作系统。
邹少颖
(感觉自己好像是叫卖的,呵呵)
两大好消息!
Windows 7 的Beta测试版下载开通了(是桌面版的,不是我们嵌入式版的)。大家可以去此网站下载体验一下。也可以不妨访问Windows 7产品组的博客网站获得更多第一手消息。
同样令人兴奋的是,我们Windows Embedded Standard 2009的学院版(Academic SKU)也今天RTM了。不多久,MSDN Academic Alliance (简称MSDNAA,一个专为高校和中学用户服务的MSDN项目)网站将会发行该产品,供注册了的学校免费下载使用。有关该版本开发的更多背景故事,可查看我的英文博客.
来点香槟吧,庆祝一下。
施卫娟