<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>D－Windows CE</title><link>http://blog.vckbase.com/zuilang/category/796.html</link><description>声明：所记录的点点滴滴，仅仅对初学者有一点点参考作用。
Windows CE .NET初学者：我说的初学者大概是这样的人：有c基础，接触过C++；有过编写windows程序的经验；略懂vc6，使用过MFC；但对于那些已经在其它方面相当有造诣的资深程序员来说，大概是不算的。要是一个精通com的、研究linux源码的人来学习CE，实在很难让人说他是一个“初学者”。</description><managingEditor>zuilang</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>zuilang</dc:creator><title>艰苦的过程：在evc中使用ADOCE的前期准备</title><link>http://blog.vckbase.com/zuilang/archive/2005/09/28/12600.html</link><pubDate>Wed, 28 Sep 2005 02:34:00 GMT</pubDate><guid>http://blog.vckbase.com/zuilang/archive/2005/09/28/12600.html</guid><wfw:comment>http://blog.vckbase.com/zuilang/comments/12600.html</wfw:comment><comments>http://blog.vckbase.com/zuilang/archive/2005/09/28/12600.html#Feedback</comments><slash:comments>77</slash:comments><wfw:commentRss>http://blog.vckbase.com/zuilang/comments/commentRss/12600.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zuilang/services/trackbacks/12600.html</trackback:ping><description>&lt;H1&gt;&lt;FONT color=#ff1493&gt;&lt;FONT color=#000000&gt;作者：&lt;/FONT&gt;&lt;A href="http://blog.vckbase.com/zuilang"&gt;&lt;FONT color=#000080&gt;zuilang&lt;/FONT&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;H1&gt;&lt;FONT color=#ff1493&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/H1&gt;
&lt;H1&gt;&lt;FONT color=#ff1493&gt;目标：evc4下在standardsdk emulator或者ppc2003用adoce3.0（或者3.1）访问sdf数据库&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT size=3&gt;问题：使用evc4第一个碰到的问题就是，ADOCE3.1在哪里？怎么安装ADOCE3.1？&lt;BR&gt;先来看一段SQL SERVER CE2.0的Readme：(节选)&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;2.3.1&amp;nbsp; Setup for eMbedded Visual Tools&lt;BR&gt;1.Before you install SQL Server CE for use with the eMbedded Visual Tools development environment, you must: Install Microsoft eMbedded Visual Tools 3.0 and at least one of the following software development kits: Microsoft Windows Powered Pocket PC 2002, Pocket PC, or Handheld PC 2000. &lt;BR&gt;2.Upgrade to Microsoft ActiveSync&amp;#174; 3.5 or later. &lt;BR&gt;3.Verify that you have Administrator access on the target system and that the Administrators group has change permission on the installation directory.&lt;BR&gt;Install Development Tools on the computer that you will use to develop your SQL Server CE-based applications, and install Server Tools on the computer that you will use as the server running Microsoft Internet Information Services (IIS). SQL Server CE Setup prompts you for a Development Tools or a Server Tools installation. If the development computer and the computer running IIS are the same, you can install both Development Tools and Server Tools. &lt;BR&gt;&lt;BR&gt;1.A Development Tools installation first installs the Microsoft ActiveX&amp;#174; Data Objects for Windows CE (ADOCE) 3.1 components and then the SQL Server CE components. The following table shows the products and where they are installed by default. &lt;BR&gt;Product&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Folder &lt;BR&gt;ADOCE 3.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\Windows CE Tools\Dataaccess31 &lt;BR&gt;SQL Server CE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\Program Files\Microsoft SQL Server CE 2.0 &lt;BR&gt;Server Tools Setup (a self-extracting executable, which can be used to configure the IIS computer)&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\Program Files\Microsoft SQL Server CE 2.0\Redist &lt;/P&gt;
&lt;P&gt;2.A Server Tools installation, by default, first installs Microsoft Data Access Components (MDAC) 2.6, and then the SQL Server CE components in C:\Program Files\Microsoft SQL Server CE 2.0\Server on the computer running IIS. If a later version of MDAC is already installed on the computer, the Server Tools installation does not install MDAC 2.6. Server Tools requires Microsoft Internet Explorer 5.01. &lt;BR&gt;&lt;BR&gt;To install SQL Server CE on a Pocket PC-based, Pocket PC 2002-based, or Handheld PC 2000-based device, use either the eMbedded Visual Basic procedure or the manual procedure described in SQL Server CE Books Online. The Include and Lib files for SQL Server CE are located in the Lib and Inc subdirectories of the SQL Server CE installation directory. The Include and Lib files for OLE DB for SQL Server CE are located in the Include and Lib subdirectories of the Dataaccess31 folder. Use the Lib file that matches the processor and platform for which you are compiling.&lt;BR&gt;&lt;BR&gt;Note&amp;nbsp; Using ADOCE through Microsoft eMbedded Visual C++&amp;#174; is not a supported means for accessing SQL Server CE.&lt;/P&gt;
&lt;P&gt;装了很多次了，都没有安装ADOCE3.1(暂时的证据是整个硬盘都找不到Dataaccess31文件夹),于是我到微软上下载了这两个东西：&lt;/P&gt;
&lt;P&gt;（1）ActiveX Data Objects for the Windows CE operating system (ADOCE) 3.1&lt;BR&gt;文件名：adocepbzip.exe&lt;BR&gt;地址：&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=929bb147-281c-4d6e-a727-67271075fadb&amp;amp;DisplayLang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=929bb147-281c-4d6e-a727-67271075fadb&amp;amp;DisplayLang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;（2）ActiveX Data Objects for the WindowsCE operating system (ADOCE) 3.1 for Windows 3.0 SDKs&lt;BR&gt;文件名：adocesdkzip.exe&lt;BR&gt;地址：&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=929bb147-281c-4d6e-a727-67271075fadb&amp;amp;DisplayLang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=929bb147-281c-4d6e-a727-67271075fadb&amp;amp;DisplayLang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;安装第一个时提示要先装PB，我没装，放弃，装第二个时提示要先装至少一个windows ce platform sdk，我已经有了standardsdk emulator还有ppc和sp（都是2003），怎么还提示我这个？又放弃。后来看readme发现：&lt;/P&gt;
&lt;H1&gt;Requirements&lt;/H1&gt;
&lt;P&gt;Windows&amp;#174; CE Data Access 3.1 requires the new release of Microsoft&amp;#174; Embedded Visual Tools. Prior to installing this SDK add-on, you must have previously installed any or all of the following Windows CE SDKs: 
&lt;UL type=disc&gt;
&lt;LI&gt;Microsoft SDK for Windows CE, Handheld PC Professional Edition 3.0 
&lt;LI&gt;Microsoft SDK for Windows CE, Palm-size PC Edition 1.2 
&lt;LI&gt;Microsoft Windows Platform SDK for Pocket PC &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;明白！&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#a52a2a&gt;且看网友怎么说：&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;网友jiess(杰西)说：&lt;BR&gt;装了sqlce2.0,在PC机上有adoce31,拷贝到DEVICE上,运行时,用dllregister注册一下就行了.&lt;/P&gt;
&lt;P&gt;网友jacky_emdoor(浪子)说：&lt;BR&gt;其实只需要（下载下来的安装文件里面的）\adocepb\setup\Data Access 3.1\Program Files\DataAccess31\DEVICE\ARM\SA1100\CE\RETAIL下的DLL文件拷贝到WINCE下\WINDOWS下,并且注册必要的组件，再运行你的数据库软件就可以了。&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#a52a2a&gt;疑问&lt;/FONT&gt;：&amp;#8220;装了sqlce2.0,在PC机上有adoce31&amp;#8221;，我的怎么没有？\Windows CE Tools目录下没有dataaccess的目录。于是我按照jacky_emdoor(浪子)的说法去做，的确是可以注册的。&lt;/P&gt;
&lt;P&gt;另外：&lt;BR&gt;有网友说：&lt;BR&gt;在evc里使用&lt;BR&gt;namespace MSADOCE&lt;BR&gt;{&lt;BR&gt;#include &amp;lt;adoce31.h&amp;gt;&lt;BR&gt;}&lt;BR&gt;我编译时出现fatal error C1083: Cannot open include file: 'adoce31.h': No such file or directory&lt;BR&gt;&lt;FONT color=#a52a2a&gt;那么，如何获得这个adoce31.h？（后面会说到）&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;vvv_for_ever (vvvvv) 说：&lt;/P&gt;
&lt;P&gt;1)生成adoce31.h头文件&lt;BR&gt;2)用dllregster.exe注册了所有有关adoce31的dll文件&lt;BR&gt;3)已经可以正确地生成connection和recordset&lt;BR&gt;但是出现了如下问题:&lt;BR&gt;1)当recordset调用put_ActiveConnection的时候发生如下错误:datatype misalignment&lt;BR&gt;2)使用VOConnection和VORecordset时,也出现了一样的问题.&lt;BR&gt;3)我将VOConnection和VORecordset中对ADO30.h的引用都改成了ado31.h,是不是这样就能完成Connection和VORecordset到ado31的过渡了?&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#a52a2a&gt;不明白他是怎么生成adoce31.h头文件的？（后面会说到）&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;回过头来看看Readme，你会发现，上面说的都是evt（evc3）环境下的安装，呜呼！&lt;BR&gt;于是，我在已安装evc4的情况下安装evt，结果依然。并且这个时候我发现，vc#.net的移动设备开发被破坏了，根本不能建立这样的工程。没办法，我只好都卸掉evc4和evt，然后重装evt。发现原来evt自带ppc2002。装好后，发现已经有了这样一个文件夹：\Windows CE Tools\wce300\Pocket PC 2002\dataaccess31，实在不明白，dataaccess31不是在安装SQL SERVER CE的时候才安装的吗？（而且我在安装SQL SERVER CE2.0时发现它的安装过程的确有复制adoce的东西）另外，在\Windows CE Tools\wce300\Pocket PC 2002\include里面还发现了ADOCE30这些头文件，&lt;FONT color=#a52a2a&gt;3.0和3.1都有了？？？&lt;/FONT&gt;不解！&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ee82ee&gt;下面来看看如何获得ADOCE31.h文件&lt;/FONT&gt;，其实很简单：&lt;BR&gt;先在下载下来的ADOCE3.1的安装文件里面找到adoce31.idl、adocec31.idl这两个文件，然后在命令行下执行&amp;nbsp;midl adoce31.idl就会生成&lt;FONT color=#ee82ee&gt;ADOCE31.h&lt;/FONT&gt;&lt;FONT color=#000000&gt;了。同时，你还需要执行midl adocec31.idl来获得adocec31.h。&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;顺便来看&lt;FONT color=#a52a2a&gt;一个常见的问题&lt;/FONT&gt;：&lt;/P&gt;
&lt;P&gt;大哥，再问下！ 我装好后里面就有一个Configure Connectivity Support in IIS&amp;nbsp; 我再什么地方加数据库 设计表啊？是不是我装得不对 我都装了3遍了啊 ！&lt;/P&gt;
&lt;P&gt;回答：安装正确！&lt;BR&gt;创建数据库的两种方法：&lt;BR&gt;1.用sql语句创建&lt;BR&gt;2.还可以通过isqlw20.exe来可视化创建（关于这个，请看下面）&lt;/P&gt;
&lt;P&gt;来看看SQL Server Books Online里面的Installing SQL Server CE on a Device Using eMbedded Visual Tools&lt;/P&gt;
&lt;P&gt;Manual Installation Process&lt;BR&gt;You can manually install SQL Server CE and your eMbedded Visual Tools application on a Windows CE-based device by copying and registering all the required files. Use the following information to determine which files the application requires. Select the files appropriate for the processor type of the Windows CE-based device. To determine the processor type of the device, see the device documentation.&lt;/P&gt;
&lt;P&gt;Application Files&lt;BR&gt;On Pocket PCs, you can copy the application executable to the \Windows\Start Menu folder, and then run it from the Start menu on the device. The application executable file is located in the project tree that you create: &lt;/P&gt;
&lt;P&gt;Microsoft eMbedded Visual Basic creates the executable file directly in the project subdirectory. &lt;BR&gt;Microsoft eMbedded Visual C++&amp;#174; creates a separate subdirectory for each platform processor type that you want it to build. For example, MIPS processor application executables are created in \projectname\MIPSRel for the release version and \projectname\MIPSDbg for the debug version. &lt;BR&gt;&lt;BR&gt;SQL Server CE Files&lt;BR&gt;Copy the SQL Server CE files to the \Windows directory of the Windows CE-based device. These files are located in \Program Files\Microsoft SQL Server CE 2.0\Device\processor family\processor type by default. For more information about file locations and descriptions, see Installing SQL Server CE with eMbedded Visual Tools. &lt;/P&gt;
&lt;P&gt;File&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Requirement &lt;BR&gt;Ssce20.dll&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Required. Must be registered. &lt;BR&gt;Ssceca20.dll&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Required for replication and remote data access (RDA). Must be registered. &lt;BR&gt;Ssceerror20en.dll&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Optional for error messages used during development. &lt;BR&gt;Isqlw20.exe&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Optional for SQL Server CE Query Analyzer. &lt;/P&gt;
&lt;P&gt;ADOCE and OLE DB Files&lt;BR&gt;Copy the SQL Server CE files to the \Windows directory on the Windows CE-based device. These files are located by default in \Windows CE Tools\dataaccess31\Windows CE OS version\processor type.&lt;/P&gt;
&lt;P&gt;File&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Requirement &lt;BR&gt;Msdaeren.dll&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Optional for error messages. Msdaeren.dll is the English version of the Microsoft ActiveX&amp;nbsp; Data&amp;nbsp;&amp;nbsp;Objects for Windows CE (ADOCE) error DLL and works on devices of all languages. For localized ADOCE error messages, substitute the Msdaerxx.dll that corresponds to the language setting of the device. &lt;BR&gt;Adoce31.dll&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Required. Must be registered. &lt;BR&gt;Adoceoledb31.dll&amp;nbsp;&amp;nbsp; Required. &lt;BR&gt;Adoxce31.dll&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Required for ADOXCE. Must be registered. &lt;/P&gt;
&lt;P&gt;Registering the SQL Server CE Application on the Device&lt;BR&gt;Use DllRegister.exe to register the DLLs that require registration. DllRegister.exe registers all the SQL Server CE, ADOCE, and OLE DB CE components on the device and warns if optional components are missing from the device. DllRegister.exe is located by default in \Program Files\Microsoft SQL Server CE 2.0\Device\processor family\processor type.&lt;BR&gt;&lt;BR&gt;To register the SQL Server CE application &lt;/P&gt;
&lt;P&gt;Select the appropriate version of DllRegister.exe based on the processor type of the device. &lt;BR&gt;Copy DllRegister.exe from the development system to the Windows CE-based device, and then run the executable. On Pocket PCs, you can copy DllRegister.exe to the \Windows\Start menu folder, and then run it from the Start menu on the device. &lt;BR&gt;&lt;BR&gt;Alternately, you can register the DLLs individually by using Regsvrce.exe from the Windows CE SDK or by calling the DllRegisterServer function in each DLL. &lt;/P&gt;
&lt;P&gt;这是手工安装的过程，基本上是把相关的dll放到设备（或模拟器）当中使用DllRegister.exe注册，注意，当中有些路径可能和文档所说的有点出入，我的就不一样，例如dataaccess31的路径。还有一个要注意的是(以x86为例)，在\Device\X86目录下有两个文件夹\I486和\Emulation，里面都有相同的dll，在模拟器当中应该使用\I486文件夹的（奇怪，为什么不是Emulation？），在实际设备当中没有测试过。&lt;/P&gt;
&lt;P&gt;在ppc中，也许你还可以复制\Microsoft Visual Studio .NET 2003\CompactFrameworkSDK\v1.0.5000\Windows CE\wce300\x86下面的文件，然后在ppc中单击安装，同样会得到isqlw20.exe来可视化创建数据库。&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#006400&gt;暂时得到的结论是：&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;1，evt下使用ADOCE比较方便，安装ppc2002时就会安装ADOCE3.0，同时也会安装ADOCE3.1，不过，也许这些会在安装SQL SERVER CE才安装。&lt;BR&gt;2，evc4下也是可以使用ADOCE3.1的，已有网友成功。估计是不需要在pc机上安装的，有网友说只需要找到相关文件（例如可以在我上面说的下载的文件里面找到）在pc机上设置好路径就可以开发，至于在设备中，可以用dllregister注册。（这个未经证实：））&lt;BR&gt;3，看看吧：Note&amp;nbsp; Using ADOCE through Microsoft eMbedded Visual C++&amp;#174; is not a supported means for accessing SQL Server CE.看来，真的要考虑.net了。&lt;BR&gt;4，绕弯路的最大原因是没有看文档，或者看了也不仔细，或者英文水平有限，不能很好的理解。其实选择微软的东西开发有一个很大的好处就是：文档齐全！&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/zuilang/aggbug/12600.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>zuilang</dc:creator><title>Windows CE .NET中实现服务的简单过程</title><link>http://blog.vckbase.com/zuilang/archive/2005/09/24/12375.html</link><pubDate>Sat, 24 Sep 2005 06:12:00 GMT</pubDate><guid>http://blog.vckbase.com/zuilang/archive/2005/09/24/12375.html</guid><wfw:comment>http://blog.vckbase.com/zuilang/comments/12375.html</wfw:comment><comments>http://blog.vckbase.com/zuilang/archive/2005/09/24/12375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/zuilang/comments/commentRss/12375.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zuilang/services/trackbacks/12375.html</trackback:ping><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;作者：&lt;A href="http://blog.vckbase.com/zuilang"&gt;&lt;FONT color=#000080&gt;zuilang&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Windows CE .NET中的服务是一种流接口驱动程序,并不是真正的设备驱动程序，它以动态链接库DLL的形式出现，并被Services.exe加载运行。我们知道，在2000/NT中服务是以exe形式存在的，在CE中采用DLL的形式，很大一个原因是CE受到32进程数的限制。Services.exe在Windows CE .NET启动时自动启动并枚举注册表HKEY_LOCAL_MACHINE\Services的每个子项（这里每个子项对应一个服务）以便加载服务。&lt;/P&gt;
&lt;P&gt;1，首先使用evc4创建一个新的 WCE 动态链接库项目MyService，然后添加导出函数定义：&lt;BR&gt;DWORD TEST_Init(DWORD dwData)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;//初始化函数,可以在这里做其它事情&lt;BR&gt;&amp;nbsp;return 1;&lt;BR&gt;}&lt;BR&gt;DWORD TEST_Open(&amp;nbsp; DWORD dwData,&amp;nbsp; DWORD dwAccess,&amp;nbsp; DWORD dwShareMode)&lt;BR&gt;{&amp;nbsp;return 0;&amp;nbsp; }&lt;BR&gt;DWORD TEST_Read(&amp;nbsp; DWORD dwData,&amp;nbsp; LPVOID pBuf,&amp;nbsp; DWORD dwLen)&lt;BR&gt;{&amp;nbsp;return 0;&amp;nbsp; }&lt;BR&gt;&amp;#8230;&amp;#8230;&lt;BR&gt;将这些函数名称添加到项目 .def 文件导出表中:&lt;BR&gt;EXPORTS&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Explicit exports can go here&amp;nbsp;&lt;BR&gt;&amp;nbsp;TEST_Init&amp;nbsp;&lt;BR&gt;&amp;nbsp;TEST_Open&lt;BR&gt;&amp;nbsp;TEST_Read&lt;BR&gt;&amp;#8230;&amp;#8230;&lt;BR&gt;编译生成MyService.dll。&lt;/P&gt;
&lt;P&gt;2，利用evc4的Remote Registry Editor向注册表 HKEY_LOCAL_MACHINE\Services\Service 项添加一个子项MyService，并指定相关键值。&lt;BR&gt;[HKEY_LOCAL_MACHINE\Services\MyService]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Dll"="MyService.dll"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Order"=dword:8&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Keep"=dword:1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Prefix"="TEST"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Index"=dword:0&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Context"=dword:0&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "DisplayName"="DisplayName_Test"&lt;BR&gt;"Description"="Description_Test "&lt;BR&gt;这些值的意义可以查看MSDN。&lt;/P&gt;
&lt;P&gt;3，用Remote File Viewer把MyService.dll复制到模拟器windows文件夹。重新启动Windows CE .NET即可启动服务。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;利用Remote Process Viewer可以查看Services.exe是否已经加载了MyService.dll，若已经加载，表示服务已经开始。当然，也可以在服务中显示一个提示框，直观的显示服务正在运行。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/zuilang/aggbug/12375.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>zuilang</dc:creator><title>学习Windows CE .NET（使用EVC4开发）碰到的几个问题</title><link>http://blog.vckbase.com/zuilang/archive/2005/09/24/12368.html</link><pubDate>Sat, 24 Sep 2005 02:03:00 GMT</pubDate><guid>http://blog.vckbase.com/zuilang/archive/2005/09/24/12368.html</guid><wfw:comment>http://blog.vckbase.com/zuilang/comments/12368.html</wfw:comment><comments>http://blog.vckbase.com/zuilang/archive/2005/09/24/12368.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.vckbase.com/zuilang/comments/commentRss/12368.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zuilang/services/trackbacks/12368.html</trackback:ping><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;作者：&lt;A href="http://blog.vckbase.com/zuilang"&gt;&lt;FONT color=#000080&gt;zuilang&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 本人在学习过程中走了不少弯路，以我碰到的问题的顺序来和大家分享一下。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我的环境：evc4＋模拟器，没有实际设备，需要注意的是我因为某些原因，没有安装PB！&lt;BR&gt;&lt;BR&gt;1，怎么安装？&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;由于时间有点久了，不太记得，安装过程当中还碰到了一点困难，好像还重装了一次系统。反正：需要的东西都可以在微软下载，包括中文的模拟器。我安装了这些东西：eVC4.exe，evc4sp3.exe，Microsoft Pocket PC 2003 SDK.msi，Microsoft SMARTPHONE 2003 SDK.msi，MSASYNC.EXE，Windows Mobile 2003 Second Edition Emulator Images for Smartphone - WWE.msi，Chinese (Simplified) Emulation Images.msi。其中，模拟器不是必须的，但是还是建议你都安装上，有个感性认识也好啊。除非你硬盘空间不够，我就是因为硬盘没有空间了，受到了很多限制。需要说明的是，EVC4的安装需要序列号，放心，微软网站公布了的，仔细找一下，在这里我把他贴出来：TRT7H-KD36T-FRH8D-6QH8P-VFJHQ&lt;BR&gt;&lt;BR&gt;2，在模拟器中可以使用pc机上的串口吗？&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在模拟器中可以使用pc机上的串口，我曾经在模拟器上从pc的串口上接收GPS数据。想当初我为了搞清模拟器到底可以使用pc机上的什么资源，花了不少时间。现在可以肯定的告诉你，可以使用pc上的串口。由于时间也有点久了，不太记得怎么弄了，反正还是有点麻烦，evc-&amp;gt;Tools-&amp;gt;configure platform manager,选择模拟器（若没有说明，模拟器都指 Standardsdk Emulator），点Properties，设置Start up，你就看到串口的相关设置了，好像还要设置ActiveSync。总之，我忘了，你看了该绕的弯路还是要绕，唉，有时间我再整理一下吧。&lt;BR&gt;&lt;BR&gt;3，模拟器到底是怎么一个东西？&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;暂时没必要管它是什么东西，就把它当作一个黑盒子就好了，或者说把它当成是透明的，不要试图去看看它在我们的pc机的硬盘上是怎么样的。你要想像在资源管理器那样看看它有什么东西的话，就要先运行模拟器。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;怎么运行模拟器？安装了sdk后，ppc和sp都可以直接在pc机上的开始-&amp;gt;程序里面直接打开，惟独Standardsdk Emulator，我一直没有找到直接打开的方法，在pc机的资源管理器里面找了半天没找着，谁要是知道的话，还请多多指教^_^。我们可以这样打开，建立一个WCE MFC AppWizard(EXE)工程，选择Standardsdk Emulator编译，evc就会自动运行Standardsdk Emulator。或者不用新建工程，直接用evc的tools菜单下面的工具也可以运行Standardsdk Emulator。Standardsdk Emulator的界面就像一台pc机，那么，要看它里面有什么内容就很简单了。&lt;BR&gt;&lt;BR&gt;4，几个工具的使用&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;当我们需要把一些文件放到pda中时，因为我们有实际的设备，很自然的，把pda与pc机连接起来然后传输文件就可以了。现在，我们需要把pc机上的文件放到模拟器算上，应该怎么办呢？因为模拟器也是在pc机上放着，于是就有人想到了这样一个方法：直接把文件放到模拟器的安装目录上。事实上这样是不行的，这里需要用到一个工具Remote file viewer，它在evc4的tools下。运行后，打开到你需要放置文件的地方，然后点Export File按钮（奇怪，怎么是Export？它的提示是：Export file to device，既然现在是在设备上运行，应该是import才对啊），就是那个向上的箭头，然后就可以选择pc机上的文件来export（别扭）到模拟器上了。当然，相反的过程是先在模拟器选择文件，然后点向下的箭头按钮来import了。曾经碰到一个朋友，他说他在程序里创建了一个数据库文件，可是在硬盘上怎么也找不到。这里再提醒一次，当你打开emulator时，就把它当作一个用线连起来的在你的pc机外面的一台实际设备，当你关闭它时，就当作它从你的pc机上把线拔掉了，再也不存在，不要试图在硬盘上寻找它的影子。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;顺便讲一下在Tools菜单下的我用过的几个工具：&lt;BR&gt;1，Remote Process viewer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;看名称就知道它是干什么的。我在Standardsdk Emulator中曾经想打开任务管理器查看有哪些进程正在运行，结果发现功能非常的简单，只能查看相当于pc机上的应用程序这一页，不能查看进程。Remote Process viewer可以看到的信息相当多。&lt;BR&gt;2，Remote Registry viewer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;查看注册表的工具。在ce下再也不能享受regedit的便利了，要查看注册表一般有两种方法，一种是通过其它的查看注册表的工具，另一种就是利用evc的Remote Registry viewer。&lt;BR&gt;3，其它的还有Spy++等.....&lt;BR&gt;&lt;BR&gt;后面的写我正在学习的(服务，SQL CE)，应该详细一些，希望会有帮助。&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/zuilang/aggbug/12368.html" width = "1" height = "1" /&gt;</description></item></channel></rss>