cover
Inside Microsoft Windows CE
by John Q. Murray



From Inside Microsoft Windows CE

Read an excerpt from the preface to John Murray's Inside Microsoft Windows CE.


Preface

With Windows CE, Microsoft is extending the franchise to televisions, telephones, and other "intelligent" devices that can incorporate cheap, powerful, 32-bit microprocessors and communicate with one another. This book is a survey of the Windows CE operating system---its architecture, some design details, and ways to think about it---in the words of the Microsoft developers who created it. If you are an embedded systems developer, Win32 programmer, or entrepreneur, you will benefit from the instant expertise to be gained from their tutorials.

I spent a year and a half with the Windows CE team, writing developer documentation, sample code, and white papers, then took my video camera or tape recorder around and asked the developers to explain their piece of the system. Sometimes I said, "Imagine that you are explaining the architecture to a new hire who will be taking over your code." I basically asked variations of three questions:

  • What is new or different about the Windows CE design compared to other Windows operating systems?

  • What parts of Windows CE can other developers replace, customize, or configure?

  • Where have developers been asking the most questions?

I then edited and arranged the interviews into a sequence that provides a workable survey of the entire system. Every one of the chapters can be expanded into a complete book, but I wanted to produce a single book that you can read on a cross-country plane flight. By the time you pick up your luggage on the other coast, you will understand the Windows CE vision and know where to find more detailed information.

Many books in Microsoft Press’s Inside series describe new programming interfaces, but Windows CE is based on the existing, well-known Win32 programming interfaces, and dozens of excellent introductory books and training programs are already available. (Even the new programming interfaces unique to Windows CE are already featured in The Windows CE Programmers’ Guide, and Doug Boling’s Programming Windows CE. Accordingly, this book focuses on the vision and architecture of the system.

About the approach to this book: I like two kinds of computer books, those that are concise, and those that reveal the personalities of the developers. The Kernighan and Ritchie The C Programming Language and Helen Custer and David Solomon’s Inside Windows NT fall into the first category. The passages about the Microsoft developer in Fred Moody’s I Sing the Body Electronic fall into the second category. With this book, I tried to achieve both concision and personality, and employed oral history as the technique to get there.

This book aims for a balance between solid technical information and letting the developers tell their stories. The title Inside Microsoft Windows CE suggests a blend of system architecture details and a look at what it is like to be inside a development team working on a new Microsoft OS.

Overall, the book captures the developers’ personalities with only a slight additional cost: it could have been more terse, but preserving the context and integrity of each interview meant allowing some redundancy. On the other hand, because I did eliminate almost all of the redundancy, I am obliged to offer a few impressions from my 50 interviews and 18 months behind the scenes with the Windows CE team:

  • Nearly every interview started with a recap of overall product goals before moving to the architecture of an individual area. The same product vision was repeated, almost verbatim, in interview after interview. Also, nearly every team member recited a genealogy of Microsoft product teams leading to the Windows CE team (which usually included one of the predecessor teams, WinPad or Pulsar). Many expressed a strong and deep sense of loyalty, even to teams long since disbanded.

  • People who are not inside Microsoft can’t fully appreciate the fierce rivalries and pitched battles that take place within the company itself. I spoke with the survivors on both sides of three major design wars. These stories, told to me independently by many different people, shared underlying themes: the importance of each individual contributor and the belief that each individual should take risks and compete for his or her vision.

  • At some point almost every developer, unprompted, tempered a discussion of a successful design by mentioning tradeoffs or even initial failures or flaws in their work that had to be corrected. This honesty and humility is a trait that I appreciate and often find in engineers.

  • While oral history can accurately portray team members' perceptions, it can also provide conflicting and inaccurate accounts. I contacted the Intel Corporation and the Microsoft Corporation Legal department to obtain official statements regarding the termination of the WinPad project, but they were either unwilling or unable to provide these details before the book went to press. The material in this book, therefore, cannot be viewed as a complete and objective portrayal of the WinPad project. It must instead be interpreted only as a subjective description that explains the team's motivation to design Windows CE as a portable system.

The development team was articulate and engaging. I have tried to preserve the "sleazy hacks," the "weird and complex beast," "the civil libertarian palette model," the "rock, paper, scissors arrangement," "the unified field theory people," "Roland’s rule of thumb," "the beautiful scenario," "Yoo-hoo, HTML control," and the many other vivid phrases that embody the spirit of this important new operating system.

About This Book

Chapter 1, Setting the Stage, introduces the goals of the development team by walking through a proposed mission statement: Windows CE is a new, portable, real-time, modular operating system that features popular Microsoft programming interfaces and that is supported by tools that enable rapid development of embedded and dedicated systems. Chapter 1 also helps explain the context in which team members worked by describing the roles on a typical Microsoft development team.

Chapter 2, An Overview of Windows CE, offers a longer high-level discussion of the embedded markets and Microsoft’s strategy with Windows CE. Windows CE assumed its current form as a modular operating system, suitable for a variety of different devices, with the 2.0 release. Each subsequent release offers a set of tested configurations. This chapter explains the componentization model and offers a block diagram of a system that includes all of the available components. Subsequent chapters examine these individual blocks in detail.

Chapter 3, The Kernel, describes the innermost part of the operating system. The kernel supports the standard Win32 process and thread model and provides round-robin, priority-based thread scheduling. This chapter also describes the virtual memory system and the use of protected server libraries (PSLs) to enhance performance and minimize memory use. The kernel is written to provide low latency times, thus making it appropriate for use in real-time systems.

Chapter 4, Data Storage, describes the three components of the object store: the file system or systems, the registry, and Windows CE property databases. Many Windows CE devices do not offer a physical hard drive but instead provide persistent storage in RAM built on top of an underlying subsystem, called the internal heap. This chapter describes the heap in detail, including its built-in compression and its support for transactioning, which ensures data integrity on low-power devices. It also describes how embedded developers can add their own extensible file systems.

Chapter 5, The GWE Subsystem, describes the graphics, window manager, and event manager subsystem, subsets of the standard Windows Kernel32, User32, and Gdi32 libraries. The chapter also describes the Windows message-based programming model from the point of view of the Windows CE components that manage user applications. It shows how the GWE design separates event management and graphics, allowing the smallest possible system size while still supporting Windows programs---even on devices without display hardware.

Chapter 6, Porting to New Hardware, dives down to the lowest levels of the system to explain the porting layer and the device driver models that tie Windows CE to the device hardware. This chapter explains the OEM Adaptation Layer and the native and stream interrupt device drivers. This chapter also walks through the interrupt model, showing the interactions between the kernel, the interrupt service routine (ISR), and the device driver’s interrupt service thread (IST).

Chapter 7, Communications, describes the complete set of options available to communicate with the desktop, the Internet, and other Windows CE devices. Windows CE supports a wide variety of Win32 communication APIs, supporting modems, networking cards, and serial and infrared communications. The block diagram shows the relationship between the communications protocols and the standard higher-level Win32 programming interfaces supported by Windows CE. This chapter also describes the desktop synchronization model, ActiveSync, and Mobile Channels, a high-level scripting interface for the Palm-size PC that is built on top of the other communications interfaces.

Chapter 8, User Interface and Shell Services, provides an overview of the challenges in user interface design for new information appliances and offers suggestions for designers working with smaller input and display areas. Windows CE supports a variety of shell options, ranging from custom minimum shells produced independently by embedded developers, to shells that are similar to the Microsoft Windows 98 look and feel. Some devices, such as the Auto PC and Palm-size PC, support alternate forms of user input, such as voice input and handwriting input.

Chapter 9, Testing Your Embedded System, describes some of the challenges facing developers building embedded systems and applications, especially the new challenges that differ from those faced by developers of the traditional PC platform. The Microsoft software engineers who managed the Windows CE QA efforts provide suggestions on how to approach testing, from specific practices and tools through management and communications strategies. The device driver tests and test harness developed by the QA team are provided to embedded developers in the Device Driver Test Kit (DDTK).

Chapter 10, Development Tools, describes the wide variety of development kits and tools offered for Windows CE and provides overviews of the programming interfaces. The Windows CE development kits build on standard Microsoft IDEs, such as Microsoft Visual C++, adding emulation and remote debugging tailored for Windows CE devices. The tools support Win32, COM, ActiveX, MFC, ATL, Visual Basic, and Visual J++ programming.

Chapter 11, A Look At Some Windows CE Configurations,, looks at how Microsoft and other embedded customers are configuring Windows CE for their markets. In addition to discussing Windows-based terminals, the Sega Dreamcast home video game system, the Auto PC, the Palm-size PC, and the Handheld PC, this chapter notes that embedded developers are creating new devices and putting applications on existing platforms to create vertical or dedicated devices based on Windows CE.

Chapter 12, The Future of Windows CE, taps the experience of some of the Windows CE group’s senior managers (and other senior Microsoft architects) to discuss future technology, future user interfaces, and future devices based on Windows CE.


[Previous] [Next] [Top]

From Inside Microsoft Windows CE, (c) 1998, John Q. Murray. Published by Microsoft Press. All Rights Reserved.