迷你5207专属论坛

注册

 

发新话题 回复该主题

[WinCE] WinCE service开发【转】 [复制链接]

发表者
因为要做一个CDMA/WiFi连接管理监视模块,所以开始研究WinCE service开发。虽然网上有一些文章将如何开发service,包括MSDN上有一些例子说明,开发过程中还是遇到一些问题导致耽搁了好久。特此记录以帮助可能遇到同样问题的后来人。
第一步,建立一个WinCE dll工程。
第二步,按照service开发规则定义一系列接口,并定义def文件。
  extern"C" DWORD __declspec(dllexport) TSX_Init (DWORD dwContext);
  extern"C" DWORD __declspec(dllexport) TSX_Deinit (DWORD dwContext);
  extern"C" DWORD __declspec(dllexport) TSX_IOControl (DWORD dwOpen, DWORD dwCode,
                                PBYTE pIn, DWORD dwIn,
                                PBYTE pOut, DWORD dwOut,
                                DWORD *pdwBytesWritten);
  extern"C" DWORD __declspec(dllexport) TSX_Write( DWORD dwData, LPCVOID pInBuf, DWORD dwInLen) ;
  extern"C" DWORD__declspec(dllexport) TSX_Seek( DWORD dwData, long pos, DWORD type);
  extern"C" DWORD__declspec(dllexport) TSX_Read( DWORD dwData, LPVOID pBuf, DWORD dwLen) ;
  extern"C" DWORD __declspec(dllexport) TSX_Open( DWORD dwData, DWORD dwAccess, DWORD dwShareMode) ;
  extern"C" DWORD__declspec(dllexport) TSX_Close(DWORD dwData) ;

def文件定义如下:
  EXPORTS
      ; Explicit exports can go here
     TSX_Deinit
     TSX_Init
     TSX_IOControl
     TSX_Close
     TSX_Open
     TSX_Read
     TSX_Seek
     TSX_Write

提示:这里的前缀有特殊用处,将会出现在后面的注册表内容里,用于services.exe进行方法引用。
第三步,开发代码。如果需要在某处打断点调试,需要使用DebugBreak()方法。我在VS2008里尝试F9是无法将程序断下来。但是在PBCE中F9还是有效的。
第四步,编译并生成DLL文件。
第五步,开始调试。首先,启动Emulator,并通过VS2008自带的remote file viewer将dll传到/window目录下。然后,通过remote registry editor编辑service注册信息。
  [HKEY_LOCAL_MACHINE\Services\TESTSVC]    
    "Dll"="testsvc.dll"    
    "Order"=dword:8    
    "Keep"=dword:1    
    "Prefix"="TSX"    
    "Index"=dword:0    
    "Context"=dword:0    
    "DisplayName"="Sample MFC Service"    
    "Description"="Sample Service demonstratig MFC usage"

提示:Prefix就是接口使用的前缀
第六步,重启Emulator,如果没有什么错误的话,service就可以运行了。

原:http://jameshublog.blogspot.com/2009/02/wince-service.html
分享 转发
相信与不相信都是矛盾的.  5207宣!欢迎您来到点滴论坛
TOP
发新话题 回复该主题