To help you successfully master the exam objectives presented in this chapter, complete the following tasks:
Enhance Power Management Features
Continue to develop the string driver's power management code.
■ Clear the string buffer Modify the string driver to delete the contents of the string buffer when the device driver switches into the power state D3 or D4.
■ Change the power capabilities See what happens when you return a different POWER_CAPABILITIES value to Power Manager.
More IOCTLs
Expand on the features of the string driver by adding more IOCTL handlers.
■ Reverse the stored string Add an IOCTL to reverse the contents of the string in the buffer.
■ Concatenate a string Add an IOCTL that concatenates a second string to the string stored without overrunning the buffer.
■ Embedded pointers Replace the string parameter with a pointer to a string and access it with CeOpenCallerBuffer.
Installable ISR
Learn more about installable ISRs by reading the product documentation.
■ Learn more about installable ISRs Read the section "Installable ISRs and Device Drivers" in the Windows Embedded CE 6.0 Documentation, available on the Microsoft MSDN Web site at http://msdn2.microsoft.com/en-us/library/aa929596.aspx to learn more about installable ISRs.
■ Find an example of an installable ISR Find an example of an installable ISR and study its structure. A good starting point is the GIISR code that you can find in the %_WINCEROOT%\Public\Common\Oak\Drivers\Giisr folder.
Glossary
Application Programming Interface (API) An API is the function interface that an operating system or library provides to support requests from application programs.
Application Verifier (AppVerifier) AppVerifier enables developers to find subtle programming errors, such as heap corruption and incorrect handle usage, that can be difficult to identify with normal application testing
Asynchronous Access When two or more threads access the same buffer at the same time.
Binary Image Builder (.bib) A bib file defines which modules and files are included in a run-time image.
Boot Loader Piece of code executed at the processor startup to initialize the processor and then launch an operating system.
Board Support Package (BSP) A BSP is the common name for all board hardware- specific code. It typically consists of the boot loader, the OEM adaptation layer (OAL), and board-specific device drivers.
Catalog A container of components that presents a selectable feature for an OSDesign to the user.
Debugger Extension Commands (CeDebugX) CeDebugX is an extension to the Platform Builder debugger. It presents detailed information about the state of the system at break time and attempts to diagnose crashes, hangs, and deadlocks.
Windows Embedded CE Test Kit (CETK) The CETK is a tool you can use to test device drivers that you develop for the Windows Embedded CE operating system.
Cloning During cloning, you generate an exact copy of files to keep a secure copy of them before performing modifications. Code in the PUBLIC folder should always be cloned before making modifications.
Component A CE feature that can be added to or removed from an OS Design using the catalog.
Core Connectivity (CoreCon) Windows CE supports a unified communications infrastructure called Core Connectivity that enables full-featured connectivity for downloading and debugging.
Critical Section An object with a synchronization process that is similar to a mutex object. The difference is that a critical section can only be accessed by the threads of a single process.
Data Marshaling A process done on data to check the access rights and validity of the data for a different process.
Debug Zone A flag to enable or disable debug messages related to a certain functionality or mode of a driver.
Device Driver A device driver is software that manages the operation of a device by abstracting the functionality of a physical or virtual device.
Dirs File A Dirs file is a text file that specifies the subdirectories that contain source code to be built.
Embedded Pointer A pointer embedded in a memory structure.
Environment Variable A Windows environment variable that can enable or disable features. It is generally used to configure the build system and OS design from the catalog
Event Synchronization objects used by threads and the kernel to notify other threads in the system.
Exception An exception is an abnormal situation that happens while a program is running.
Iltiming Iltiming determines interrupt service routine (ISR) and interrupt service thread (IST) latencies on a Windows Embedded CE system.
Interrupt A trigger that suspends (interrupts) the system temporarily to indicate that something has happened that requires processing. Each interrupt on a system is associated with a particular Interrupt Request (IRQ) value and this IRQ value is associated with one or more ISR.
Interrupt Service Routine (ISR) An ISR is a software routine that hardware invokes in response to an interrupt. ISRs examine an interrupt and determine how to handle it by returning a SYSINTR value, which is then associated with an IST.
Interrupt Service Thread (IST) The IST is a thread that does most of the interrupt processing. The OS wakes the IST when the OS has an interrupt to process. After each IST is associated to a SYSINTR value, the SYSINTR value can be returned from an ISR, and then the associated IST runs.
IRQ (Interrupt Request) IRQ values are associated in hardware with interrupts. Each IRQ value can be associated with one or more ISRs that the system will run to process the associated interrupt when it is triggered.
Kernel Debugger The kernel debugger integrates functionality required to configure a connection to a target device and download a run-time image to the target device. It allows the debugging of the OS, abbreviate drivers, and applications.
Kernel Independent Transport Layer (KITL) The KITL is designed to provide an easy way to support debugging services.
Kernel-Mode Driver A driver that runs in the kernel's memory space.
Kernel Tracker This tool provides a visual representation on a development workstation of OS and application events occurring on a Windows Embedded CE-based device.
Layered Driver A driver that is separated into several layers to make it easier to maintain and reuse code at a later date.
Model Device Driver (MDD) The MDD layer of a layered driver has a standardized interface to the OS and Platform Device Driver (PDD) layer and performs all hardware independent processing related to the driver.
Monolithic Driver A driver that is not separated into different layers. It can also mean any driver that does not conform to the standard Model Device Driver (MDD)/Platform Device Driver (PDD) layer architecture of CE, even if the driver does have its own layering scheme.