* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Xerox PARCTAB
Survey
Document related concepts
Transcript
Windows CE Object Store • Windows CE name for persistent storage • Provides storage for the – Registry – Databases – File System • In a non-volatile portion of RAM Registry • To centralize applicationr, user and system settings • Consolidates what was done earlier with autoexec.bat, config.sys, etc. • Stored as a hierarchy, with each element termed a key. • Each key has a default value and several optional extra values • Four hierarchies – – – – HKEY_LOCAL_MACHINE: char. of m/c HKEY_USERS: default user config. HKEY_CURRENT_USER: for current user HKEY_CLASSES_ROOT: types and properties of supported documents Registry (contd.) • RegCeateKeyEx() to create keys • RegSetValueEx() to update a value of a key • RegQueryValueEx() retrieves the associated type and data Databases • CE offers an integrated database not offered by other Windows versions • Note that this is not really a DBMS – No SQL (direct API) – No concurrency control – No transactional notion Terminology • • • • • Volume: A collection of tables Database: One of these tables Record: One row of table Property: A column of the table Sort Order: A method to quickly access rows • Each database can support upto 4 sort orders (specified at creation). • • • • Databases are stored in a file (called volume). First mount a volume using CeMountDBVol() CeCreateDatabaseEx() to create a database CeOpenDatabaseEx() to open an existing database – can ask to be notified if someone else modifies when in use. • CeWriteRecordProps() to create or update a record. • Each call to CeReadRecordProps() returns the next record in the specified sort order (at open) • CeSeekDatabase() to seek to a specific record – record id, matching a value, having the immediate previous value, etc. File System • Portion of object store where files reside (\Windows) • Differences from normal Windows: – No security/access permissions – No notion of drives (A:, C:, etc.) – everything is accessible from “\” – No concept of current directory, always need to specify from “\” • When inserting flash cards, they appear under the directory “\StorageCard1”, “\StorageCard2”, etc. File System API • CreateFile() to create files – analogous to Unix open • ReadFile() and WriteFile() to read and write data from/to files. • Writes are buffered and flushed to appropriate device sometime later • Applications can force the writes with FlushFileBuffers() call • File seeking is done with SetFilePointer() call. • Can use same calls for device interfaces as well. In addition there is a DeviceIOControl() call similar to Unix ioctl(). Memory Mapped Files • Allows normal memory load/store interface to files • Also, allows creating shared memory • Different from traditional Unix in that it increases the virtual address space of process. E.g. a process (normally 32MB) mapping a 4MB file becomes 36MB, but not all of it is contiguous Memory Mapping API • CreateFileForMapping() is done first • Then the handle is passed to CreateFileMapping() which creates a file mapping object and associates it with the opened file. • MapViewOfFile() maps the file in memory and returns a memory pointer to it. • When two processes do this, they have created a shared memory region. Device Drivers • Native drivers – Control low level devices built-in with the CE platform (audio, battery display, keyboards …) – They can have unique APIs • Stream drivers – They export the same API – They usually drive 3rd party devices (GPS receivers, printers, etc.) Interface between Kernel and Native Driver Kernel Interrupt Service Handler (ISH) Event Handler (EH) 6 4 OAL 1 2 3 7 Interrupt Service Routine (ISR) Native Driver Interrupt Service Thread (IST) 5 Platform Dependent Driver HARDWARE • EH in kernel is first invoked. • EH disables all interrupts and invokes appropriate ISR in OAL • ISR performs some minimal processing and returns interrupt id to kernel • ISH re-enables all but this interrupt, uses the interrupt id to signal an event on which a IST of a native driver is waiting (Event Object). • IST may need to perform some hardware specific actions to process interrupt • IST then notifies kernel once it is done • ISH then re-enables this interrupt by calling some functions in OAL. Stream Drivers • Presents the device as being a special file • Standard API regardless of the device • Strict naming rules: 3 upper case letters (identifies function prefix) + single digit + colon • They can be loaded/unloaded by the Device Manager. Loading Drivers • At boot time, Device Manager loads all drivers listed under HKEY_LOCAL_MACHINE\Drivers\Builtin registry key. • When a device is connected, the Device Manager calls the native socket driver to obtain a Plug and Play id. This id is compared against registry entries in HKEY_LOCAL_MACHINE\Drivers\PCMCIA. If found, that driver is loaded. Else, it calls functions listed in ….\PCMCIA\Detect that are Stream Driver functions. If one of them says it can handle, then that driver is loaded. • If an application attempts to open a device without driver loaded, then the application can explicitly load the driver. Stream Interface Functions • • • • • • • • • • XXX_Close() XXX_Deinit() XXX_Init() XXX_IoControl() XXX_Open() XXX_PowerDown() XXX_PowerUp() XXX_Read() XXX_Seek() XXX_Write()