home *** CD-ROM | disk | FTP | other *** search
- The Windows 32-Bit API: An Overview
-
- Since its original release in 1985, MicrosoftR WindowsTM has become
- the leading graphical system for IBMR compatible personal computers.
- Version 3.0, released in May 1990, was a milestone that broke the 640K
- barrier of the Microsoft MS-DOSR operating system by running
- applications in protected mode, thus making it possible to develop
- much more sophisticated applications. This innovation spawned myriad
- applications and is responsible for the huge success of the Windows
- environment in the marketplace showcased by the volume of graphical
- applications sold (see Figures 1 and 2).
-
- Between May 1990 and May 1991, more than 4 million copies of Version
- 3.0 were sold. International Data Corporation estimates that an
- additional 7.8 million copies will be sold during 1992. In addition,
- more than 66 thousand Microsoft Windows Software Development Kits
- version 3.0 have been shipped, a clear indication of the number of
- applications likely to appear during the next 12 to 18 months. By
- spring 1991, more than 1200 Windows-based applications were shipping.
-
- Building on this achievement and on the success of independent
- software developers, Microsoft is extending and expanding the Windows
- environment so that Windows-based applications can run on a broad
- range of computing platforms - from low-end battery-operated portables
- to high-end RISC workstations and multiprocessor servers.
-
- We are expanding Windows to make it fully 32-bit, and are adding
- additional operating system services. Microsoft Windows for Pen
- Computing and Microsoft Windows with Multimedia Extensions will also
- take advantage of new hardware technologies.
-
- Windows Today
-
- Today many people think of Windows as a graphical add-on to the
- familiar MS-DOS operating system they have used for years. This
- perception took much of the fear out of upgrading to Windows for the
- end user. But in fact, Windows is not limited by MS-DOS.
-
- Windows is a complete operating system that provides extra features on
- top of MS-DOS and replaces certain MS-DOS features. Windows Version
- 3.0 does not use MS-DOS screen or keyboard I/O, does not use MS-DOS
- memory management, and can even bypass MS-DOS file I/O with new
- Windows-specific device drivers. Version 3.0 Enhanced-mode can handle
- 32-bit device drivers that are not limited by the infamous 640K MS-DOS
- barrier. These drivers talk through Windows to applications that are
- also not limited by the constraints of MS-DOS.
-
- The advantage of being able to work with MS-DOS is that it preserves
- the value added by MS-DOS's long life span (in computer years).
- Windows can run with MS-DOS TSRs, MS-DOS device drivers, and of
- course, it can run MS-DOS applications. Future versions of Windows
- will continue to be available on MS-DOS.
-
- The Windows Architecture
-
- Since the IBM PC was introduced in 1981, personal computers have
- become much more diverse in capability and in configuration. This
- diversity will increase in the next few years as personal computers
- based on RISC processors and multiprocessor systems are introduced.
-
- These diverse systems have different operating system needs. For
- example, a low-end battery-operated portable requires minimal memory
- and hard disk footprint to minimize weight and cost. It also requires
- power management to extend battery life. In contrast, network servers
- and mission-critical desktops require sophisticated security to ensure
- the integrity of data. RISC-based systems require portability for
- both the operating system and the applications.
-
- Some vendors feel that the diverse range of hardware requires totally
- different operating systems with incompatible applications. They sell
- different operating systems for personal computers, workstations,
- servers, and in the future, pen-based systems. Each of their
- operating systems require unique, incompatible applications.
- Connectivity between these divergent platforms is complicated.
-
- Microsoft is focused on a much simpler solution. We're extending
- Windows into multiple, fully compatible implementations. Different
- implementations of Windows will be optimized for different classes of
- hardware. Customer investment in Windows development and Windows
- applications will be protected. Windows applications will run across
- the spectrum of hardware, from notepad-sized pen systems, to mission-
- critical desktops, to multiprocessor and RISC based systems.
-
- Microsoft Windows is evolving into a complete operating system
- architecture. The Windows architecture addresses diverse requirements
- by supporting different modes of operation. Today Windows has three
- modes: Real-mode, Standard-mode, and Enhanced-mode. Real-mode
- provides compatibility with previous versions of Microsoft Windows.
- Standard-mode is optimized for an 80286 processor and provides access
- to the full 16 MB of memory supported by that chip. Enhanced-mode
- takes advantage of the 80386 and 80486 processors by providing support
- for multiple DOS applications and thru a technique called demand
- paging, provides applications with access to more memory then is
- physically present in the machine. All three modes support both DOS
- and Windows applications.
-
- Building upon the success of Microsoft Windows Version 3.0, Microsoft
- will introduce Version 3.1 in late 1991. Version 3.1 incorporates
- significant customer feedback; it improves performance, introduces a
- newly designed file manager, improves network connectivity, and
- improves system reliability. Version 3.1 will support Windows
- Standard-mode and Enhanced-mode.
-
- Also during 1991, Microsoft will enhance Windows Standard-mode and
- Enhanced-mode by providing extensions for sound, animation, and CD-ROM
- access, called Windows with Multimedia. We will also release
- extensions for clipboard and pen-style computing, called Microsoft
- Windows for Pen Computing.
-
- Windows NT
-
- In 1992, Microsoft will introduce a new product called Windows NT (New
- Technology). Windows NT is built on a modern, 32-bit, operating
- system kernel. Windows NT will deliver an extremely robust client
- environment for mission-critical applications, a high-end desktop
- platform, and a portable, scalable server environment (See Figure 3).
- Windows NT will also transform Windows into a Microsoft LAN Manager
- server platform, thus adding a fourth server platform to the three
- currently supported by LAN Manager: OS/2R, UNIX, and VMSR.
-
- Windows NT does not require DOS to function. However, it is
- compatible with the large installed base of DOS and Windows
- applications. In addition to compatibility with existing
- applications, Windows NT includes the features required to meet the
- needs of the high-end desktop and server marketplace in the 1990s and
- beyond.
-
- To support large server applications, Windows NT provides completely
- symmetric multiprocessor support. With Windows NT, tasks are
- symmetrically distributed between processors on a per thread basis.
- This design provides maximum utilization of each processor in a
- multiprocessor system and simplifies the development of multiprocessor
- applications.
-
- Security is required for network servers and many mission-critical
- applications. To meet this need, Windows NT has been designed as a
- secure operating system. Microsoft is working with the U.S.
- Government to certify Windows NT as C2-level secure. In addition, the
- internal design of Windows NT can be enhanced in future releases to B-
- level security.
-
- Windows NT is highly portable. It is being developed concurrently on
- x86 and MIPS-based RISC platforms. MIPS-based computers will be
- available from more than 60 hardware manufacturers who are members of
- the ACE (Advanced Computing Environment) consortium. With Windows NT,
- existing DOS and Windows programs will run unchanged on MIPS-based
- computers.
-
- In addition to these advanced capabilities, the kernel-based design of
- Windows NT can be thought of as a nucleus which is compatible with
- different operating system environments. The kernel design provides
- Windows NT compatibility with DOS and Windows applications. It also
- allows Windows NT to support the OS/2 and POSIX application program
- interfaces, both of which are under development at Microsoft. This
- design also allows Windows NT to support applications written to the
- new Windows 32-Bit application program interface.
-
- Windows 32-Bit API
-
- Developers and end-users have made enormous investments in Windows
- programming and Windows applications. Most of these applications have
- been developed to run on both the 16-bit 80286 processor and the 32-
- bit 80386 and 80486 systems. Although highly capable, programs
- written to the Windows 16-Bit API, which is supported by Windows 3.0,
- are constrained by the memory limits inherent in a 16-bit
- architecture. Code must be divided into segments which cannot exceed
- 64K (65,536 bytes). This makes programming more difficult. It also
- imposes a performance penalty on high-performance 80486 and RISC-based
- systems.
-
- The success of Windows Version 3.0, made it clear that an easy
- migration path from existing 16-bit Windows applications to a 32-bit
- programming interface was required. Unfortunately, OS/2 Presentation
- ManagerTM (PM) was not an appropriate path. Although similar in
- appearance from an end-user perspective, the programming details of
- Windows and PM are completely different. So different in fact that
- most software developers found it necessary to completely rewrite
- their application when going from Windows to Presentation Manager.
- This is a major reason why there are so few OS/2 PM applications
- available.
-
- The Windows 32-Bit API (Windows 32) has been designed to make the
- transition from the Windows 16-Bit API (Windows 16) to 32-bit as easy
- as possible. Only minimal changes have been made to the syntax of the
- Windows 32 API. The API names are the same as Windows 16. The
- semantics are identical. The message order is identical. In fact, it
- is possible to keep a single source code base and compile that source
- code into both 16-bit and 32-bit programs (see Figure 4).
-
- While the Windows 32 API is extremely compatible with the Windows-16
- API, it also contains significant new features. These features
- include preemptive multitasked processes that use separate address
- spaces, preemptive threads, semaphores, shared memory, named pipes,
- mailslots, and memory mapped file I/O. GDI (Graphics Device
- Interface) improvements include Bezier curves, paths, transforms, and
- a device-independent color model.
-
- The Windows 32-Bit API is fully supported in both Windows Enhanced-
- mode and Windows NT-mode. The Windows 32-Bit API will first be
- available in the Windows NT product during 1992. It will be added to
- Windows Enhanced-mode in late 1992 or early 1993. Programs written to
- the Windows 32-Bit API will run binary compatibly on both Windows NT-
- mode and Windows Enhanced-mode. All Windows 32 features are supported
- by both Windows Enhanced-mode and Windows NT-mode, including
- preemptive multitasking. Windows 32 programs will be fully source
- compatible between x86 and MIPS processors. Software Developer Kits
- for the Windows 32-Bit API will be available in late 1991.
-
- The following highlights some key features of the Windows 32-Bit API.
-
- Kernel: The Base Operating System
-
- The Windows 32-Bit API on both Window NT-mode and Windows Enhanced-
- mode provides preemptive thread-based multitasking. It also runs all
- Windows 32-Bit and MS-DOS applications in separate address spaces so
- that they cannot corrupt one another.
-
- The Windows 32-Bit API is designed to be portable beyond the 80386 and
- 80486 processors and in particular to be portable to RISC
- architectures. All these processors have different features but have
- in common 32-bit addressing and paged virtual memory architectures.
- Paged virtual memory is more efficient to implement and executes
- faster than segmented virtual memory. Memory management in Windows 32-
- Bit is secure because the operating system places different memory
- objects in different pages of memory and allows an application to
- control access permissions (Read, Write, Read/Write, Execute, and so
- on) to memory objects.
-
- Given a large 32-bit address space, the operating system can
- conveniently and efficiently optimize file I/O because processes treat
- the file as a very large memory object and randomly access that
- object. The operating system, through page faulting, can detect read
- access to a file and bring in that data. It can detect when a shared
- file is written to and then write out that data. With process-settable
- access permissions and sparse allocation of physical memory pages,
- processes can implement very efficient data access, even when access
- patterns are entirely unpredictable.
-
- GDI Improvements: Beziers, Paths, Transforms, Device-Independent Color
-
- GDI, the drawing API for Windows Versions 3.0 and 3.1, provides a
- useful device-independent drawing set for applications. As output
- devices have become more sophisticated, so have drawing needs; hence
- GDI has been improved.
-
- Some Windows applications for Versions 3.0 and 3.1 have needed to
- implement high-level graphics functions using the low-level drawing
- primitives of the Windows environment. Although this capability has
- provided application vendors flexibility in extending the Windows GDI,
- it has not allowed them to take seamless advantage of advances in
- printer and display technology. Application developers have had to
- code their own algorithms for displaying graphics such as Bezier
- curves and paths. With the Windows 32-Bit API, developers can call new
- high-level graphics features that will take advantage of the built-in
- drawing capabilities in advanced output hardware. Under Windows 32,
- displaying Bezier curves can be handled by the graphics engine or by
- output devices that have implemented Bezier optimizations.
-
- The Windows 32 GDI is a complete and general-purpose drawing package.
- Bezier curves are a general-purpose curve primitive from which a
- straight line can also be derived. This function combined with the
- PolyBezier functionality makes it possible to draw any combination of
- continuous lines and curves.
-
- Windows 32 adds a Path API. A BeginPath EndPath sequence "closes"
- the sequence of drawing primitives between Begin and End. Thus, a
- BeginPath, PolyPolyBezier, EndPath sequence makes it possible to draw
- an arbitrary number of different filled shapes.
-
- The Windows 32 transform API maps the virtual two-dimensional surface
- on which you draw to the two-dimensional output surface. This API,
- combined with the TrueType font technology first available with
- Windows Version 3.1, makes it possible to draw truly device-
- independent graphics that the system can map to the display surface,
- including the rotation of bitmaps, fonts, and metafiles.
-
- Windows 32 will also provide a device-independent color model.
- Computer monitors and color printers use different technology to
- render colors. Additive mixing is used by computer monitors (RGB or
- Red, Green, Blue), while subtractive mixing (CYMK or Cyan, Yellow,
- Magenta, Black) is used by color printers. Without device-independent
- color, the different approach used by monitors and printers can result
- in mismatched colors.
-
- The Windowing System and System Classes
-
- The Windows windowing system is called User. The most significant
- change to User is the desynchronization of the per-window message
- queue from the system message queue. This change prevents errant,
- looping applications that stop processing their messages from blocking
- the computer system's entire user interface, thus making other
- applications unavailable.
-
- With the addition of input queue time thresholds, the system can
- provide default handling for a looping or an otherwise nonresponsive
- process. From an end-user perspective, this means the they can do
- other things while one application is busy. For example, if a word
- processing program is busy printing a 100 page document, a user can
- minimize that application and begin working on a spreadsheet. This
- effectively minimizes the time the user waits with an "hourglass" on
- their screen.
-
- The desynchronization of the message queue is completely compatible
- with the Windows Versions 3.0 and 3.1 message model. The message
- ordering is the same. If WM_xyz came after WM_abc, it still does. This
- compatibility is entirely necessary because in Windows 32 systems,
- existing Windows applications run on top of the Windows 32-Bit message
- system. The messages are simply copied from the 32-bit stack to the
- 16-bit stack and passed onto the application; therefore message order
- cannot change.
-
- Networking Extensions
-
- Each time the APIs are further standardized in a particular area, it
- becomes easier to write significant new applications. Because of the
- variety of networking layers, ranging from network card interfaces and
- protocol stacks to the wide array of network IPC mechanisms,
- networking is probably the most confusing interface for developers
- today. Windows 32 will include standard network APIs that can replace
- those that network providers have previously needed to supply. Windows
- 32 will expose driver-style interfaces similar to the WinNet APIs
- provided by Windows Version 3.0 so that third-party vendors can plug
- their network services into the Windows open architecture.
-
- Some of the new, 32-bit WinNet APIs being defined are file, print,
- named pipes, mailslots, server browsing and machine configuration.
- This means applications can rely on a consistent programming interface
- regardless of the underlying network. Even if a network is not
- present, the APIs are still available and will return appropriate
- error codes.
-
- The Windows 32-Bit API includes peer-to-peer named pipes, mailslots,
- and APIs to enable RPC (Remote Procedure Call) compilers. With Windows
- 32, a mail-server vendor can build a messaging service on named pipes
- and asynchrononous communication that will run on top of any network
- operating system, protocol stack, or network card - each of which
- could come from a different network vendor.
-
- Compatibility with Windows 16-Bit APIs
-
- Windows Version 3.0 and 3.1 applications will be able to run in
- Windows Enhanced-mode and Windows NT-mode systems that support the
- Windows 32 API. To be compatible with versions 3.0 and 3.1, all
- Windows 16 applications will run as one process in one address space.
- They will be nonpreemptive with respect to one another but preemptive
- with respect to the rest of the system, which mirrors their behavior
- under Windows Version 3.0 Enhanced-mode. Windows 16 applications run
- against the Windows 32-Bit APIs without a "layer" and without any
- state mapping or message reordering like that necessary to run them on
- OS/2 version 2.0.
-
- Windows executables will also run on RISC-based Windows NT machines
- (see Figure 5). Excellent performance is expected on this platform
- because although some code will be run against 80286 emulator
- technology, all Windows calls will be mapped directly to the Windows
- NT software.
-
- Windows 32-bit APIs-The Future of Windows
-
- Millions of people are actively using Windows Version 3.0 today.
- Corporations and independent software vendors are making major
- commitments to Windows and investments in Windows applications.
-
- To protect this investment, Microsoft is evolving Windows into a
- complete architecture. Through separate implementations, Microsoft
- Windows will run on vastly different types of hardware; from pen-based
- notepad computers to multiprocessor and RISC systems.
-
- Windows NT and future versions of Windows Enhanced-mode will support
- the Windows 32-Bit APIs. Designed to simplify migration of Windows
- applications from 16-bit to 32-bit, these APIs will also make it easy
- to develop new 32-bit Windows applications. They contain significant
- new features which will enable a new generation of powerful Windows
- applications.
-
- In addition, the Windows 32-Bit APIs will be used as the foundation
- for future versions of Windows under development at Microsoft. This
- technology, often called Information at Your FingertipsTM, will make
- it even easier to use personal computers and will provide significant
- new functionality to Windows users.
-
- Microsoft and MS-DOS are registered trademarks,Windows and Information
- at Your Fingertips are trademarks of Microsoft Corporation.
-
- OS/2 is a registered trademark and Presentation Manager is a trademark
- licensed to Microsoft.
-
- IBM is a registered trademark of International Business Machines.
-
- VMS is a registered trademark of Digital Equipment Corporation.
-