Running Nonnative Applications in Windows 2000 Professional

In general, the OS/2 subsystem supports OS/2 1. x –based applications. However OS/2-based applications and APIs that normally gain access to kernel mode ( Ring 0 of the Intel protection architecture ) generally are not supported because they might interfere with the operating system or hardware devices. There are exceptions, however, and those are discussed in this section.

Supported Applications

You can run the following types of applications on the OS/2 subsystem:

  • OS/2 1 .x –based 16-bit applications on x 86-based computers only.

  • Character-based applications.

  • Video input/output (VIO) applications that do not threaten the security of the core operating system or the robustness of Windows 2000.

Unsupported Applications

The types of applications listed in Table B.6 are unsupported and cannot be run on the OS/2 subsystem. There are exceptions for some of these types, which are noted.

Table B.6 Applications Not Supported by OS/2

Type of Unsupported Application

Exception or Workaround

Applications created on OS/2, 2 .x , and later versions of OS/2.

Bound applications (those that can also run on MS-DOS) run on the Win16 VDM using the forcedos command.

Presentation Manager applications.

These applications run if you install the Windows NT Add-on Subsystem for Presentation Manager, available from Microsoft.

Advanced video I/O (AVIO) applications.

These applications run if you install the Windows NT Add-on Subsystem for Presentation Manager.

Applications requiring direct access to hardware memory or I/O ports at Ring 2 or below, such as those that go directly to video memory.

You can run an application that performs Ring 2 operations if none of those operations are IN/OUT instructions. For details, see How the OS/2 Subsystem Works later in this chapter.

Custom device drivers (those not included with OS/2).

You must rewrite these to the Windows 2000 device driver interface. See How the OS/2 Subsystem Works later in this chapter.

If you have the source code for an unsupported application, you might be able to run it by recompiling it without the unsupported APIs. To find out which APIs are unsupported, you can attempt to run the application: the error message that is returned lists the unsupported APIs.

Supported and Unsupported APIs

Most APIs are supported, some are unsupported, and others are partially supported, as summarized in Table B.7. As with the applications, there are some exceptions.

Table B.7 API Support on the OS/2 Subsystem

API Prefix

Level of Support

Exceptions

Dev

Not supported.

 

Dos

Supported.

DosDevIOCtl and DosDevIOCtl2 are only partially supported.

Gpi

Not supported.

 

Kbd

Supported.

Those that conflict with security or robustness of Windows 2000 are not supported.

Mou

Supported.

Those that require Presentation Manager (PM) or AVIO are not supported unless you install Windows NT Add-on Subsystem for Presentation Manager.

Net

Selected APIs supported, based on their commercial use.

 

Vio

Supported.

Those that require PM or AVIO are not supported unless you install Windows NT Add-on Subsystem for Presentation Manager. Those requiring access to a physical video device are partially supported.

Win

Only WinQueryProfile and WinWriteProfile are supported.

 

Partially-supported APIs threaten the robustness of Windows 2000 but are allowed as long as they do not perform certain operations. For example, Windows 2000 does not allow an API to take direct control of a hardware device but does allow interrupt instructions. The partially-supported APIs are as follows:

  • DosDevIOCtl and DosDevIOCtl2

  • VioGetConfig

  • VioGetMode and VioSetMode

  • VioGetState and VioSetState