wince 笔记
genovia
这个作者很懒,什么都没留下…
展开
-
wince 6.0 基础知识锦集
1.运行操作系统镜像时,带年纪Target-》connectivity options。debugger:kdstud。 点击download后面的setting按钮,设置“显示”,“外围设备”里如果勾选“为串行口1创建文本控制台窗口”,在这里勾选这个,其作用就是在模拟器运行的时候可以通过屏幕参数的显示来查看内核调用的过程,便于发现问题。 2.SDK的添加,系统默认情况下到处的SDK是不包含模拟器的,因此要想在自定义的模拟器上运行程序,就必须进行相应的设置。具体如下: Configur原创 2010-11-25 12:50:00 · 1351 阅读 · 0 评论 -
文件系统浏览
1.文件与目录管理:copeFile,MoveFile,deleteFile,Createdirectory,removedirectory。 当复制一个大文件时,等待copyFile函数返回可能会让用户因无法预测时间长短而不安。从WinCE5开始支持copyFileex。 BOOL CopyFileEx(LPCTSTR lpExistingFileName,LPCTSTR lpNewFileName,LPPROGRESS_ROUTINE lpProgressRoutine,LPVOID lpData,原创 2010-07-25 15:13:00 · 1648 阅读 · 0 评论 -
mapped File
Do not store pointers in the memory mapped file,store offsets from the base of the file mapping so that the mapping can be used at any address.原创 2010-07-23 20:18:00 · 489 阅读 · 0 评论 -
线程通信
Interprocess Communication There are many cases where two Windows CE processes need to communicate. The walls between processes that protect processes from one another prevent casual exchanging of data. The memory space of one process isn't exposed t原创 2010-07-23 18:56:00 · 586 阅读 · 0 评论 -
线程本地存储
<br />线程本地存储(TLS)运行一个进程拥有自己的变量缓冲,保证对进程中的每个线程都是唯一的。这个变量缓冲很小,因为进程中每个线程在创建时都必然会创建一个TLS数组元素,但是如果灵活的使用,这个缓冲是足够的。具体讲,系统常数TLS_MINIMUM_AVAILABLE,定义了每个进程可以使用的TLS数组中槽的数目。在WinCE下,这个值为64,。所以每个进程拥有64个4字节变量,可以用来存储该进程中每个线程需要的唯一数据。为了得到更好的效果,当然,你必须自己管理这64个槽。<br /> <br />预留原创 2010-07-22 16:45:00 · 960 阅读 · 0 评论 -
线程
一个线程分配的内存对该进程内的所有其他线程都是可以访问的。进程内的所有线程对句柄都拥有同样的访问权限,包括文件句柄、内存对象句柄,或者同步对象的句柄。进程的主线程的栈大小是通过链接器设置的(vs中设置栈大小的链接器开关为/stack)。后续创建的线程将默认和主线程拥有相同的栈大小,这个默认栈大小可以在创建线程时被替换掉。因为WinCE进程没有优先级类别,所有进程都被平等对待。每个线程可以有不同的优先级,但是拥有这些线程的进程无法影响这些线程的优先级。从WinCE3.0后,优先级增加到256个,但多数应用程序原创 2010-07-22 10:59:00 · 574 阅读 · 0 评论 -
Wince unicode
<br /> <br />Windows CE是一种Unicode环境。他支持ASCII函数以实现文本的转换,但其原有的文本格式是Unicode。<br />将ASCII应用程序转换为Unicode程序的一些通用指导方针如下:<br /><br />①包含Tchar.h文件。该文件包含所有必要的转换。<br />②使用Win32字符串函数(例如lstrlen)而不是C运行时态(run-time)库的函数。<br />③声明中使用TCHAR、LPTSTR和其他类型。这样代码将易于编译为ASCII或Unicod转载 2010-07-21 16:14:00 · 799 阅读 · 0 评论 -
typedef struct 用法详解
<br />1. 基本解释<br /> typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。<br /> 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。<br /> 至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。<br /><br /> <br /><br /> 2. typedef & 结构的问题<转载 2010-07-21 09:51:00 · 887 阅读 · 0 评论 -
typedef的四个用途和两个陷阱
<br />用途一: <br />定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: <br />char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, <br />// 和一个字符变量; <br />以下则可行: <br />typedef char* PCHAR; // 一般用大写 <br />PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针 <br />虽然: <br />char *pa转载 2010-07-21 09:36:00 · 375 阅读 · 0 评论 -
内存管理
1.关于虚拟内存:主要优点:应用程序与设备物理地址的实现无关。分页式内存:每页大小4kb。虚拟页面有3种状态:空闲(free)、保留(reserved)、提交(committed)。2.系统内存查询:GetSysemInfo、GlobalMemoryStatus、GetStoreInformation。原创 2010-07-21 09:35:00 · 575 阅读 · 0 评论 -
字符串学习
<br />A<br />如果程序定义了_UNICODE宏直接用<br />WCHAR *str=L"unicodestring";<br />TextOut(0,0,str);<br />否则就需要转换类型<br />#include <comdef.h><br />WCHAR *str=L"unicodestring";<br />bstr_t str1=str;<br />TextOut(0,0,(char*)str1); <br />Q 如何实现ANSI和UNICODE的相互转换<br />A<br转载 2010-07-20 20:05:00 · 475 阅读 · 0 评论 -
纤程
<br />纤程的构造类似线程,在应用程序内被调度,而不是被调度器调度。纤程和线程类似,有自己的栈和上下文。不同的是应用程序自己管理纤程,手动的在纤程之间切换,这样每个纤程都在应用程序的安排获得合适的执行时间。<br /> <br />一个应用程序在创建纤程时,首先创建一个线程。这个线程调用一个函数将自己转换成一个纤程后。这个线程,在成为纤程后,可以从自身创建多个纤程。<br />操作系统将所有的纤程作为一个线程来调度--该线程就是原来转换成第一个纤程的线程。所以系统对应用程序中原来那个线程分配调度时间,应原创 2010-07-22 15:29:00 · 1019 阅读 · 0 评论 -
进程
1.创建进程BOOL CreateProcess();原创 2010-07-21 15:56:00 · 454 阅读 · 0 评论 -
模块
<br />包含可执行代码的win32文件被称为模块。WinCE支持两种类型的模块:可执行程序,exe;动态链接库 dll;一个进程就是一个可执行程序的单个实例。每个进程至少拥有一个线程,线程在进程内执行代码。<br /> dll有两种加载方式:隐式加载和显式加载。隐式加载通过exe和dll加载;显式加载通过应用程序对如下两个函数的调用来加载:LoadLibrary和LoadLibraryEX。<br /> <br />当dll加载完成后,通过调用GetProcAddress()函数得到该dll导出函数的原创 2010-07-21 15:34:00 · 413 阅读 · 0 评论 -
注册表
注册表由主键和值组成。主键可以包含主键、值或者两者都有。主键包含的数据有一系列预定义的格式。主键可以包含 主键,所以注册表是典型的层次结构。最高层主键,即根主键,通过他们预定义的数值常数指定。根主键以下的主键和值通过他们的名称来区别。多级主键可以在一个字符串中指定,通过反斜杠/将主键隔开。 查询和修改一个值,必须先打开包含该值的主键,然后对值进行查询或者写入,最后关闭主键。主键和值也可以被枚举,这样应用程序可以确定某个主键包含的内容。注册表中的数据可以按照一系列预定义的数据类型来存储。这些数据类性有:字符原创 2010-07-26 02:14:00 · 1291 阅读 · 0 评论 -
存储处理
存储发展促使WinCE需要一种管理不同文件系统的方法。管理这些文件系统的存储管理器,提供了一系列方法使应用程序可以管理文件系统和文件系统卷。 1.对象存储 2.使用文件API访问卷 CeGetVolumeInfo()获得卷的信息。 WINBASEAPI BOOL CeGetVolumeInfo( LPCSTR pszRootPath, CE_VOLUME_INFO_LEVEL InfoLevel, LPCE_VOLUME_INFO lpVolumeInfo);Param原创 2010-07-25 09:18:00 · 2830 阅读 · 0 评论 -
让程序在Windows CE系统启动时自动运行
[分享] 让程序在Windows CE系统启动时自动运行 Windows, 系统, 程序, 自动, 运行 转自:CSDN Blog 原文地址:http://blog.csdn.net/zggxyx2004/archive/2008/10/10/3050308.aspx 让程序在Windows CE系统启动时自动运行(方法一) 1. 假定Windows CE.NET目标工程目录为E:/ SMDK2440,并且工程已经Build成功, 假定Windows CE.NET的应用程序为MyApp.原创 2010-10-29 10:38:00 · 673 阅读 · 0 评论 -
WinCE上BINFS实现详解
WinCE上BINFS实现详解 binfs, multi-bin, 启动加速 转载请注明原帖地址及出自ARMCE,此为ARMCE定制原创稿 作者: wwfiney@ARMCE 网上不少介绍三星24x0系列的BINFS启动方式实现,有些内容上描述的不是非常全面 下面就WinCE6上的BINFS实现,从基本原理到修改BSP,再到如何烧录启动做一个较全面的讲解 一 BINFS到底是什么? 其实BINFS就是MS给CE做的一种存放系统镜像的一个文件系统。 一说文件系统,大家可原创 2010-10-29 10:27:00 · 821 阅读 · 1 评论 -
WinCE驱动开发基础
WinCE中的进程(process)是程序的一次动态执行实例(instance)。进程不参与系统调度,没有优先级和上下文。每个进程在创建时都会创建一个主线程作为其默认的执行体。 真正参加系统调度的是线程。 WinCE提供了互斥Mutex,事件Event,信号量Semaphore 3种内核机制来实现多线程间的同步。 WinCE还为用户态线程提供了两种同步方法:临界区段(Critical section)和互锁函数(interlocked function),这两种方法不能跨进程使用,但效率很高。 Wi原创 2010-08-13 16:39:00 · 914 阅读 · 0 评论 -
复制对象句柄--D u p l i c a t e H a n d l e 函数
共享跨越进程边界的内核对象的最后一个方法是使用D u p l i c a t e H a n d l e 函数: BOOL DuplicateHandle( HANDLE hSourceProcessHandle, HANDLE hSourceHandle, HANDLE hTargetProcessHandle, PHANDLE phTargetHandle, DWORD dwDesiredAccess, BOOL bInheritHandle,原创 2010-07-28 11:23:00 · 2655 阅读 · 0 评论 -
Unicode 字符串—Windows 核心编程
2.8.1 C 运行期库对Unicode的支持 为了利用U n i c o d e 字符串,定义了一些数据类型。标准的C 头文件S t r i n g . h 已经作了修改,以便定义一个名字为w c h a r _ t 的数据类型,它是一个U n i c o d e 字符的数据类型: typedef unsigned short wchar_t;例如,如果想要创建一个缓存,用于存放最多为9 9 个字符的U n i c o d e 字符串和一个结尾为零的字符,可以使用下面这个语句:wcha原创 2010-07-28 07:18:00 · 746 阅读 · 0 评论 -
3.3 跨越进程边界共享内核对象
许多情况下,在不同进程中运行的线程需要共享内核对象。下面是为何需要共享的原因: • 文件映射对象使你能够在同一台机器上运行的两个进程之间共享数据块。 • 邮箱和指定的管道使得应用程序能够在连网的不同机器上运行的进程之间发送数据块。 • 互斥对象、信标和事件使得不同进程中的线程能够同步它们的连续运行,这与一个应用程序在完成某项任务时需要将情况通知另一个应用程序的情况相同。 由于内核对象句柄与进程相关,因此这些任务的执行情况是不同的。不过,M i c r o s o f t 公司有若干很好的理由将句柄设计成与原创 2010-07-28 11:26:00 · 691 阅读 · 0 评论 -
设备驱动程序和服务
1.1.驱动程序基础 1.1 驱动程序的名称 在历史上,流式接口设备驱动曾经用3个字母的名称和紧随其后的一个数字进行标识,如COM2。这样的安排导致同时加载的同种wince驱动最多智能有10个。应用程序使用3个字母一个数字和一个冒号来引用一个流式接口驱动。wince需要用冒号来识别这是一个驱动程序的名称。 1.2 设备驱动加载过程 当设备管理器加载时,他会在[HKEY_LOCAL_MACHINE]/Drivers中查找一个名为RootKey的字符串键值。该值指向一个指示系统启动时应该加载的驱动程序列原创 2010-07-27 13:56:00 · 760 阅读 · 0 评论 -
WinCE下的非常用字符串操作函数
<br />Windows CE是一种Unicode环境,使用wchar_t来描述字符型变量。注意,这并不是说它不支持char型字符,char* p = "你好"同样是合法的,只不过在显示的时候必须转换成wchar_t类型。<br />来看看WinCE下的字符串操作函数:<br />wcscat<br />wcschr<br />wcscmp<br />wcscpy<br />wcscspn<br />wcslen<br />wcsncat<br />wcsncmp<br />wcsncpy<br />wc原创 2010-07-27 15:18:00 · 772 阅读 · 0 评论 -
电源管理
1.查询电源状态 This function retrieves battery status information. DWORD GetSystemPowerStatusEx2(PSYSTEM_POWER_STATUS_EX2 pSystemPowerStatusEx2,DWORD dwLen, BOOL fUpdate);ParameterspSystemPowerStatusEx2[out] Pointer to a buffer that receives pow原创 2010-07-26 08:18:00 · 485 阅读 · 0 评论 -
通知
WinCE应用程序可以注册一个通知,该通知可以在一个预设的时间启动,或者在某个系统事件发生时启动。应用程序也可以注册一个用户通知。设定用户通知后,系统将在指定的时间通知用户,而不用单独运行一个应用程序等到那个时间来通知用户。另外一种类型的通知可以显示消息窗口,或者气泡窗口,在里面用纯文本甚至是格式化HTML文本来显示信息。 1.用户通知 设置用户通知 CeSetUserNotificationEx() This function creates a new user notification or m原创 2010-07-26 07:43:00 · 3345 阅读 · 0 评论 -
内存映射文件
内存映射文件在读写文件方面提供了一种完全不同的方法。采用标准文件IO函数将文件以流的形式读入。要访问一个文件不同部分的字节数据,必须将文件指针移至第一个字节处,读入数据,移动文件指针,再读入数据。 当你对内存映射文件进行读写操作时,这些改动将会反映在你从同一缓冲区中所读回的数据上。当你关闭了内存映射文件时,系统将改动过的数据写回到原始文件中。如果你想让数据在关闭文件前就歇会文件的话,可以使用下面的函数:FlushViewofFile()。 当你不再使用内存映射文件时,必须做一点清理工作。首先必须调用Un原创 2010-07-25 10:51:00 · 555 阅读 · 0 评论 -
wince 文件系统API
1.创建、打开文件 CreateFile() 除了可以打开文件和设备以外,CreateFile还可以打开诸如硬盘,flash卡之类的存储卷。要打开一个卷,必须传递它的名字,并在后面附上/Vol: 。举例来说:要打开一个由目录名Storage Card 代表的CF卡,可以按一下方式: h= CreateFile(TEXT(“//Storage Card//vol:”),GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NOMAL,原创 2010-07-25 10:27:00 · 1173 阅读 · 0 评论 -
串行通信
1.打开和关闭串行端口 和所有的流式设备一样,串行端口设备也使用CreateFile函数打开。所使用的名称要遵循特定的规范,即3个字符的COM后紧跟要打开的COM端口号,再几个冒号。冒号是WinCE所必须的,它是为了区别于在桌面版本的Windows系统中的设备驱动程序的命名规则。 传统的驱动程序命名规则中只允许有10个端口实例。WinCE也支持扩展的命名规则,这样就可以使用除了0--9以外的其他实例值。在这个命名规则中,驱动程序的前缀是“/$device/”,然后忽略掉末尾的冒号。如/$device/C原创 2010-07-27 01:17:00 · 1362 阅读 · 0 评论 -
WINAPI
<br />WINAPI见windef.h这个头文件<br />#define WINAPI __stdcall<br /> 默认情况下,我们的函数调用都是遵循__stdcall这个规则的。当然,也有诸如__cdecl、__pascal等规则。<br /> 使用__stdcall还是__cdecl或__pascal,在纯Windows编程下并非特别需要。<br />__stdcall:<br /> 1、进行函数调用,函数参数的入栈方式是最右边先入栈。<br /> 2、同时__stdcall规定,调用转载 2010-07-22 11:00:00 · 462 阅读 · 0 评论 -
进程间通信
1. 命名内存映射对象 使用命名内存映射对象,两个进程能够分配一块共享内存,同时两个进程都是可以平等访问的。你必须使用命名内存映射对象,这样两个进程才能够访问到同一块数据。系统能够为该对象的使用维持合适的计数,知道所偶打开它进程都关闭,才释放对象。 这个级别的交互是有代价的。在他们读写共享内存块的数据时,你需要进程间同步。 CreateFileMapping()创建内存映射对象 MapViewofFile()为该对象创建一个试图。 当映射对象使用完毕,通过下面函数关闭试图: UnmapViewo原创 2010-07-23 15:57:00 · 580 阅读 · 0 评论 -
映像配置文件
MAKEIMG应用配置文件来创建操作系统运行时的映像,常用的配置文件包括二进制映像构建器文件(.BIB),注册表文件(.REG),文件系统文件(.DAT),和数据库文件(.DB)。BIB文件用来定义操作系统运行时映像中都包含哪些模块和文件,同时,MAKEIMG实用BIB文件来决定如何将这些模块和文件加载到目标设备的存储器中。BIB文件是包含关键词的纯文本文件,关键词定义了MODULES、FILES、MEMORY、CONFIG共4个区域。modules:定义要被romimage.exe加载到存储器里的对象模块原创 2010-07-14 15:23:00 · 586 阅读 · 0 评论 -
使用pb创建wince系统流程
本文创建一个运行Hello World 应用程序的Internet Appliance 设备的模拟器操作系统运行时映像和一个运行于geode硬件平台的操作系统运行时映像,并学会如何从零开始逐步的定制、配置、创建、调试和运行一个wince操作系统运行时映像及应用程序。1. platform 3: 平台选择,GEODE x86是基于美国国家半导体geode x86 cpu 的一种硬件平台。 CEPC:X86 以pc作为平台。Build OS -- set active configuration ...原创 2010-07-14 09:13:00 · 747 阅读 · 0 评论 -
wince系统创建
每个组件都有一个名称和唯一的标识GUID,每个组件都有一个代表它的系统变量,只有当这个变量为1时,pb才会将它添加到当前平台配置。另外,每个组件都可能支持多种cpu类型和多种平台配置。 通常pb为一个操作系统设计产生两种配置: debug;release。 这两种配置都支持对操作系统和应用程序的调试,但debug配置会在操作系统组件和驱动程序模块的运行时镜像中添加更丰富和灵活的跟踪信息。原创 2010-07-14 08:41:00 · 479 阅读 · 0 评论 -
wince开发典型周期
<br />在一个典型的操作系统开发周期中,操作系统开发者创建一个基本的操作系统镜像,将它下载到一个sdb或模拟器上,对它进行调试或者在定义,在调试达到预定效果且没有问题之后再将它移植到定制的设备硬件上。如果定制的设备硬件不能使用一个标准的bsp,那么开发者在将操作系统映像下载到定制的设备硬件之前,还需要为这个定制的设备硬件创建一个boot loader 和OAL ,其中boot loader 用于将操作系统镜像下载到目标设备硬件。<br />原创 2010-07-13 12:58:00 · 444 阅读 · 0 评论 -
注册表
<br />在所有Windows系统中,注册表都是由若干个键及其键值组成的。这点类似于文件系统,键相当于目录,键值相当于文件。<br /> <br />在Windows CE 中,整个系统 的注册表形成了一个有三个节点的森林,每个根键下都存储一类配置信息。三个根键为:<br />1. HKEY_LOCAL_MACHINE<br />2. HKEY_CLASSES_ROOT<br />3. HKEY_CURRENT_USER<br /> <br />HKEY_LOCAL_MACHINE用来存储硬件和驱动程序的原创 2010-07-16 14:23:00 · 422 阅读 · 0 评论 -
wince中断
<br />在wince6.0中,各种外设是通过中断和wince的核心进行通信的。其过程为:<br />1 . 硬件设备产生硬件中断<br />2 . OAL完成硬件中断到逻辑中断(SYSINTR)的转换<br />3 . 系统识别逻辑中断,同时进行相应的处理。<br /> <br /> <br />其中。OAL层的中断处理包括以下一些功能:<br />1. 中断初始化;有函数BOOL BSPIntrInit(void)完成。实现的功能有为相关的寄存器分配虚拟地址,相关中断的初始化,将逻辑中断与硬件中断相关原创 2010-07-16 16:31:00 · 448 阅读 · 0 评论 -
内存映射
<br />内存映射文件一般用于以下三种不同的目的:<br /> <br />1. 可以使用内存映射文件来访问磁盘上的数据文件,这样就不必对文件进行IO操作,因此就不必对文件内容进行缓存。<br />2. 系统通过内存映射文件,可以方便的加载和执行可执行文件(.exe)和动态链接库(.dll)文件。这样就可以大大的节省应用程序启动时所需的时间和页文件空间。<br />3. 可以提供内存映射文件,使在同一台计算机上运行的多个进程可以共享数据资源。内存映射文件已经成为了一台计算机上多个进程之间相互通信的最有效的原创 2010-07-16 13:14:00 · 384 阅读 · 0 评论 -
build OS 命令
<br />build OS 命令<br />Sysgen :用于操作系统初次创建或再次创建。在初次创建后,如果添加或删除了新的catalog项目,建议选择clean before Building,然后运行Sysgen再次创建。<br />Build and Sysgen:除非修改了wince提供的源代码,否则只要运行上面的Sysgen就可以了。Build重新编译wince提供的源代码。本菜单命令运行数小时之久,不建议开发者使用此命令。<br />Build and Sysgen Current BSP原创 2010-07-15 10:47:00 · 584 阅读 · 0 评论 -
在BP中导入BSP包
<br /> <br />在PB中--file--manage catalog items --import 选择.cec文件原创 2010-07-15 10:43:00 · 593 阅读 · 0 评论