home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 16 Announce / 16-Announce.zip / IBMDMK.ZIP / ibmdmk2.txt
Text File  |  1992-11-20  |  69KB  |  1,162 lines

  1.  
  2. NUMBER     292-445
  3. DATE       920818
  4. CATEGORY   WS00, WS20
  5. TYPE       Programming
  6. TITLE      IBM DEVELOPER'S MIGRATION KIT/2
  7. ABSTRACT          The IBM Developer's Migration Kit/2 (41G2943) contains
  8.            conversion utilities that allow developers of Windows (1) 3.0
  9.            applications to convert their products into OS/2 (R) 2.0 16-bit
  10.            applications.  The kit protects the developer's investment in Windows
  11.            3.0 source code and enables the developer's product to take advantage
  12.            of OS/2 2.0 advanced function and API.
  13.                   Availability Date:  August 18, 1992.
  14.             (1) Trademark of Microsoft Corporation.
  15.             (R) Registered trademark of International Business Machines
  16.               Corporation.
  17. PRODNO       41G2943
  18. OVERVIEW   HIGHLIGHTS
  19.            o   Migrated Windows 3.0 applications run in OS/2 protect mode,
  20.                allowing access to OS/2 2.0 advanced function.
  21.            o   Smooth migration path from a Windows 3.0 product to a true
  22.                OS/2 2.0 product allows developers to grow with users as the
  23.                OS/2 2.0 installed base increases.
  24.            o   Reuse of Windows 3.0 code in development.
  25.            o   Development time required to produce an OS/2 2.0 application can
  26.                be significantly reduced by reusing source code.
  27.            o   Increases availability of OS/2-enabled applications.
  28.            DESCRIPTION
  29.            GROWTH ENABLEMENT
  30.            The IBM Developer's Migration Kit/2 allows software developers to
  31.            extend beyond the limitations of their Windows 3.0 applications.
  32.            Using the kit to migrate to OS/2 2.0, developers can access advanced
  33.            operating system functions such as multithreading and protected
  34.            memory; OS/2-enabled products can take advantage of the operating
  35.            system capabilities.  The kit can expand the functionality of a
  36.            developer's product, enabling the creation and implementation of new
  37.            customer solutions.
  38.                   By using the IBM Developer's Migration Kit/2 to create OS/2
  39.            applications, developers can gain a foothold in the growing installed
  40.            base of OS/2 2.0 systems.
  41.            INVESTMENT PROTECTION
  42.            The IBM Developer's Migration Kit/2 enables Windows software
  43.            developers to create OS/2 2.0 versions of their products without a
  44.            complete rewrite of existing Windows code.  Their investment in the
  45.            development of Windows code is protected -- use of the kit can
  46.            produce Windows and OS/2 2.0 products from a single source.
  47.            USER PRODUCTIVITY
  48.            DEVELOPER PRODUCTIVITY:  The IBM Developer's Migration Kit/2 enables
  49.            software developers to reuse Windows 3.0 source code to build OS/2
  50.            products.  Code reuse can significantly reduce product development
  51.            time and effort.  The kit also allows for the incremental addition of
  52.            OS/2 function, smoothing the migration path from Windows 3.0 to OS/2
  53.            2.0 and reducing the "cost" of learning the advanced function of
  54.            OS/2.  Developers are able to produce OS/2 2.0 applications even
  55.            before in-depth proficiencies in OS/2 APIs are developed.
  56.            CUSTOMER PRODUCTIVITY:  Using the IBM Developer's Migration Kit/2,
  57.            developers can take advantage of OS/2 2.0's advanced functionality
  58.            such as multiple thread support.  The kit can expand the
  59.            functionality of a developer's product, enabling the creation and
  60.            implementation of new solutions to customer needs.
  61.            PRODUCT POSITIONING
  62.            The IBM Developer's Migration Kit/2 is targeted primarily toward
  63.            developers wishing to produce OS/2 2.0 applications from existing
  64.            Windows 3.0 application code.  Use of the IBM Developer's Migration
  65.            Kit/2 requires the IBM Developer's Toolkit for OS/2 2.0.
  66.                   The amount of effort required to port applications using the
  67.            IBM Developer's Migration Kit/2 is dependent upon the design and
  68.            implementation of the Windows source code to be ported.  Some
  69.            developers may be able to migrate their products without any code
  70.            changes; some may require only minor code modifications.  Others may
  71.            have significant design issues that must be resolved before
  72.            successful migration with the kit; in-depth knowledge of the source
  73.            code to be ported is essential.  Refer to the TECHNICAL INFORMATION
  74.            (LIMITATIONS) section for more information.
  75. CUSTINFO   PUBLICATIONS
  76.                   The IBM Developer's Migration Kit/2:  Application Migration
  77.            Guide and Reference (41G2944) may be ordered separately from IBM
  78.            after availability.  To order, contact your IBM representative.
  79. TECHINFO   TECHNICAL INFORMATION
  80.            SPECIFIED OPERATING ENVIRONMENT
  81.            MACHINE REQUIREMENTS:  The IBM Developer's Migration Kit/2 is
  82.            designed to run as follows:
  83.            o   System Units:  All system units supported by OS/2 2.0
  84.            o   Memory Requirements:  Minimum 4MB RAM with additional for
  85.                compilers and toolkits
  86.            o   Hard file:  Minimum 3MB free space to install
  87.            o   Diskette drives:  One 3.5-inch (1.44MB) or one 5.25-inch (1.2MB)
  88.                diskette drive (only necessary for installation)
  89.            PROGRAMMING REQUIREMENTS:  The IBM Developer's Migration Kit/2 and
  90.            generated object programs will run only under OS/2 2.0 with or
  91.            without IBM Extended Services for OS/2.
  92.                   Use of the IBM Developer's Migration Kit/2 also requires:
  93.            o   IBM Developer's Toolkit for OS/2 2.0
  94.            o   Tools required to build Windows 3.0 applications (that is,
  95.                compiler and headers).
  96.            COMPATIBILITY:  Applications using the IBM Developer's Migration
  97.            Kit/2 will not run on previous versions of OS/2.
  98.            LIMITATIONS:  Due to the technical complexity of the porting layer in
  99.            the IBM Developer's Migration Kit/2, some changes or redesign of the
  100.            Windows 3.0 source code may be necessary.  The following information
  101.            describes some restrictions of the kit.
  102.            DESIGN ISSUES
  103.            Applications built using the IBM Developer's Migration Kit/2 utilize
  104.            a dynamic link library (DLL) in OS/2 2.0, named Mirrors.  Mirrors is
  105.            a 32-bit DLL, which provides a thunking layer to convert 16-bit
  106.            ported Windows API to 32-bit internal code.  A thunking layer
  107.            provides a translation layer between the 16-bit and 32-bit addressing
  108.            schemes.  This thunk is necessary because of the different addressing
  109.            schemes used in 16-bit and 32-bit environments.
  110.                   For example, in the ported environment, when an application
  111.            calls a Windows function such as GlobalAlloc, it is actually calling
  112.            the function GlobalAlloc16, which determines the parameters (if any)
  113.            that need to be converted, sets up a 32-bit stack, and makes a call
  114.            to the 32-bit version of GlobalAlloc, which performs all the "real"
  115.            work.
  116.            SUPPORTING THE API
  117.            Mirrors implements the supported API as documented in Windows.  If a
  118.            Windows function behaves differently from the documented behavior,
  119.            Mirrors follows the actual Windows behavior.
  120.            INTERNAL STRUCTURES
  121.            Mirrors maintains a number of internal data structures.  Whereas a
  122.            ported application would cause the creation and maintenance of a data
  123.            structure within Windows, the structure is created and maintained by
  124.            Mirrors.  Mirrors can also create a similar structure within the
  125.            Presentation Manager (R) (PM) environment.  For example, a ported
  126.            Windows application might need to create a device context (DC).  PM
  127.            has a similar entity called a presentation space.  Although similar,
  128.            a presentation space is not identical to a Windows device context.
  129.            Therefore, when a ported application needs to create a device
  130.            context, Mirrors creates a presentation space in the PM environment
  131.            and maintains structures to give the application the appearance of
  132.            interacting with a device context.
  133.                   When the ported Windows application opens a device context,
  134.            Mirrors returns a 16-bit handle to the application.  The application
  135.            can act on this handle as if it were a handle to a Windows device
  136.            context.  In actuality, Mirrors is maintaining a structure for this
  137.            device context, which also includes a 32-bit value to the PM
  138.            presentation space.
  139.                   Consider what happens when an application attempts to use a
  140.            value from this device context.  For example, if the ported Windows
  141.            application tries to set the text color, the text color is set in the
  142.            Mirrors structure and also set in the PM presentation space.  This
  143.            arrangement enables Mirrors to perform some optimization.  The
  144.            application might set the text color five times in a row without
  145.            realizing an object that uses the color.  Although Mirrors changes
  146.            the color in its internal device context structure and returns the
  147.            previous color, it does not pass this change on to the PM
  148.            presentation space until there is some demand for the color change
  149.            such as a call to TextOut.  If the application does not make calls to
  150.            use these intermediate colors, Mirrors can reduce the number of
  151.            instruction cycles.  This can save a considerable amount of time.
  152.             (R) Registered trademark of International Business Machines
  153.               Corporation.
  154.            WINDOWS CONTROLS
  155.            All the Windows controls, ordinarily realized by Windows, are
  156.            actually realized by Mirrors.  They are windows that Mirrors draws
  157.            and maintains to emulate a Presentation Manager control.  The ported
  158.            Windows application and the Mirrors DLL combined are essentially a PM
  159.            application.  For example, when the application creates a button,
  160.            Mirrors does not create a Presentation Manager button.  Mirrors
  161.            creates its own window registered as a button class.  Messages are
  162.            sent to this window as they are for Windows.
  163.            DIALOG MANAGER
  164.            Dialog boxes are created and maintained by Mirrors.  The Presentation
  165.            Manager Dialog Box Manager is not used.
  166.            DESIGN CONSIDERATIONS
  167.            The following list contains important design assumptions and
  168.            constraints.  Ensure that the application satisfies these items
  169.            before beginning the porting process.
  170.            o   The application to be ported is compiled and linked as a
  171.                Windows 3.0 application.  The application should not send
  172.                register information to the debug terminal when it is run with
  173.                the debugging version of Windows.
  174.            o   Applications currently making interrupt 21 calls must convert
  175.                these calls to the Windows DOS3CALL or to the INT 21 replacement
  176.                functions provided by the Mirrors DLL as the Host Independent
  177.                API, which is an extension to the Windows API.
  178.            o   The resources of a Windows application are converted statically
  179.                as part of the process of building a ported application.  This
  180.                includes any Windows help resources.
  181.            o   Applications should adhere to the documented method of using the
  182.                Windows API and should not use undocumented features or
  183.                functions.  Applications using dynamic data exchange (DDE) should
  184.                follow the documented protocol and clean up memory and atoms, as
  185.                specified.  Applications that parse file names might need to work
  186.                with long file names to be compatible with the High Performance
  187.                File System (HPFS).
  188.            PREVIOUS INSTANCE HANDLE:  The previous instance handle passed to a
  189.            ported application is always NULL.  Windows performs in a similar
  190.            manner to a shell under DOS, that is, it is aware of all the
  191.            applications that might be running under it.  Because Mirrors is
  192.            simply an additional DLL running under OS/2 2.0, it cannot be aware
  193.            of all the other processes running under OS/2 management.  Therefore,
  194.            Mirrors cannot determine whether any previous instances of the
  195.            application are running.
  196.            SYNCHRONIZATION BETWEEN APPLICATIONS:  Under Windows, an application
  197.            does not relinquish control of the CPU until GetMessage or
  198.            PeekMessage is called.  Under OS/2 2.0, an application can have
  199.            control taken away at any time because OS/2 2.0 is a preemptive
  200.            operating system.  An application dependent upon Windows-style
  201.            operation might experience unexpected problems.  For example, suppose
  202.            Program A calls the function LoadModule to start a second application
  203.            (Program B), and that Program A depends on data that Program B sets
  204.            prior to calling GetMessage.  Under OS/2 2.0, Program A can continue
  205.            as soon as the LoadModule call is complete and prior to beginning
  206.            Program Bs execution.  The program A and B must be synchronized with
  207.            a PM semaphore and the OS/2 function WinMsgSemWait.
  208.            SYNCHRONIZING APPLICATIONS THAT USE DDE:  Applications that use a
  209.            PeekMessage loop to wait for a specific message to be posted from
  210.            another application should call Yield() before each call to
  211.            PeekMessage.  This is commonly done when using DDE and the
  212.            application is waiting for a WM_DDE_ACK message in response to a
  213.            posted WM_DDE_DATA message.  Because the applications are running in
  214.            a preemptive multitasking environment, it is difficult to determine
  215.            when a task will receive the CPU and how much CPU time a particular
  216.            task will receive for processing.  Typically, the currently active
  217.            task has the highest priority and receives more CPU time than other
  218.            tasks.  This can cause the task, which is awaiting response from a
  219.            server application, to timeout of its PeekMessage loop and assume a
  220.            negative acknowledgment.  By calling Yield(), the application is
  221.            releasing its CPU time for other applications to run.  This will
  222.            usually be enough time for the server application to process some
  223.            messages and post its acknowledgment.
  224.            For example:
  225.             dwTime = GetCurrentTime();
  226.             while (GetCurrentTime() -- dwTime < DDE_TIMEOUT)
  227.             {
  228.                 Yield();
  229.                 if (PeekMessage (&msg,hwnd,
  230.                   WM_DDE_ACK,WM_DDE_ACK,PM_REMOVE))
  231.            USING C-COMPILER LIBRARY FUNCTIONS:  If a function exists within the
  232.            Windows API or the Mirrors extensions to that API, use that function
  233.            rather than a similar function from the library of the compiler used
  234.            to develop the software.  This is necessary to guarantee proper
  235.            operation of certain functions within the Windows environment.  For
  236.            example, if a program uses the C function exit to terminate function
  237.            operation instead of using a return, memory might not be freed by
  238.            Windows or Mirrors, and the proper values might not be returned in
  239.            wParam and lParam.
  240.            REGISTERS AND DLL INITIALIZATION:  OS/2 2.0 and Windows pass
  241.            initialization data in different registers.  Mirrors must correct
  242.            this difference and provide an include file MIRDLL.INC, which must be
  243.            included as the first statement of the DLL initialization code.  This
  244.            include file will set up the registers as if they were under Windows.
  245.            This file must be included if the DLL must receive the heapsize into
  246.            the CX register and the address of the command line into ES:SI.
  247.            ELIMINATING IMPROPER REGISTER USAGE:  OS/2 2.0 has protected memory
  248.            and Windows does not.  Addressing is handled differently between the
  249.            two systems.  It is recommended not to assume the contents of the ES
  250.            register across calls.
  251.                   In OS/2 2.0, values should not be stored into segment
  252.            registers that were not returned by calls to the operating system,
  253.            because segments are selectors, and selectors are owned by processes.
  254.            If an address value not assigned to the process is calculated, an
  255.            application will fail with a memory protection violation.  In the
  256.            worst case, if the calculated value matches a value assigned to the
  257.            process, the contents of memory are destroyed but may not be
  258.            discovered until later during processing.
  259.            MULTIPLE DOCUMENT INTERFACE (MDI) DIFFERENCES:  The RESTORE button
  260.            menu item for maximized MDI children (child windows) does not appear
  261.            entirely right-justified in the menu.  However, the functionality is
  262.            not affected.
  263.            CODE PAGE DIFFERENCES:  The Mirrors resource compiler can issue a
  264.            message similar to the following:
  265.            o   Code page 437 incompatible with Windows.
  266.                   The Developer's Migration Kit/2 resource compiler uses the
  267.            code page directive from the CONFIG.SYS file on the development
  268.            system.  Not all OS/2 code pages are compatible with Windows.  Code
  269.            page 437, frequently listed in this directive, is equivalent to the
  270.            default IBM or IBM-compatible personal computer code page in the
  271.            United States.  This code page is not identical with the ANSI
  272.            character set that Windows uses.  Therefore, the Developer's
  273.            Migration Kit/2 resource compiler issues a warning to notify the user
  274.            of possible differences.
  275.                   Generally, code page 437 maps correctly.  However, code page
  276.            850 is closer to the one used by Windows.  It is recommended that
  277.            this code page be listed first in the code page directive of the OS/2
  278.            CONFIG.SYS on the development system, or that the -Gnnn option be
  279.            used when calling the Developer's Migration Kit/2 resource compiler.
  280.            FONT DIFFERENCES:  Many Windows applications assume that the sum of
  281.            the extent of individual characters in a string is equal to the
  282.            extent of the string.  This is true for Windows but might not be true
  283.            for OS/2 2.0.  PM outline fonts support kerning pairs; Windows
  284.            outline fonts do not.  If the application relies on this action in
  285.            Windows, it might need to be changed.
  286.                   The following short code sample is an illustration.
  287.                DWORD   1CharSize = 0L;
  288.                DWORD   1StrSize = 0L;
  289.                1CharSize  = LOWORD(GetTextExtent(hDC,"M",1));
  290.                1CharSize += LOWORD(GetTextExtent(hDC,"1",1));
  291.                1StrSize   = LOWORD(GetTextExtent(hDC,"M1",2));
  292.                   lCharSize will not always equal lStrSize in a ported Mirrors
  293.            application.
  294.            FONT MAPPING:  The fonts available to the ported application when it
  295.            is run under OS/2 2.0 is different from those available under
  296.            Windows.  Some mapping must be done.  The mapping algorithm used by
  297.            Mirrors is the same as the font-mapping algorithm described in the
  298.            Windows documentation.
  299.                   This means that the font chosen will be the same font that
  300.            Windows would have chosen if the font had been available.  For
  301.            example, the algorithm maps a Modern vector font to a Courier outline
  302.            font, which is what Windows does if it were presented with the same
  303.            set of choices.
  304.                   Under Windows, outline and bit-map fonts do not have the same
  305.            name.  However, it is possible under OS/2 2.0 to have a font named
  306.            HELV for both a bit map and an outline font.  To prevent confusion
  307.            for the ported application, Mirrors renames the outline fonts under
  308.            Presentation Manager to append the string "outline" so that the
  309.            ported Windows application can differentiate between the two.
  310.            PRINTER PROPERTIES AND JOB PROPERTIES:  Properties associated with
  311.            printers are conceptually different between OS/2 2.0 and Windows.
  312.            The Presentation Manager design has two categories of information
  313.            associated with printers, printer properties and job properties.
  314.            Printer properties involve more permanent aspects of the printer such
  315.            as whether a printer has a tractor feed or not.  Job properties are
  316.            properties that can easily change between output such as printing in
  317.            landscape or portrait orientation.
  318.                   In the ported Windows application, all references to the
  319.            function DeviceMode should be changed to ExtDeviceMode.
  320.            Initialization data obtained from this function should be saved and
  321.            passed back to the CreateIC or CreateOC functions, which allow the
  322.            program to change job properties such as orientation on a per-job
  323.            basis rather than on a system-wide basis.
  324.            THUNKING AND PACKED SEGMENTS:  Mirrors must accomplish a certain
  325.            amount of thunking to account for the different addressing schemes
  326.            between the 32-bit memory model of OS/2 2.0 and the 16-bit world of
  327.            Windows applications.  Mirrors uses and expects a tiled memory scheme
  328.            where the 16-bit segment addresses are evenly mapped into 64KB blocks
  329.            in the 32-bit global memory.  Because data segments are handled
  330.            transparently by Mirrors, most programmers do not need to give this
  331.            any attention.  However, some programs attempt to use a scheme to
  332.            read and write data from code segments.  These code segments do not
  333.            follow the same tiled-memory addressing scheme as data segments.
  334.            Instead, they often follow a packed scheme.  Mirrors cannot correctly
  335.            calculate the address to data placed in a code segment.
  336.                   If an application keeps data in a code segment, then the
  337.            application is responsible for maintaining this data.  It is strongly
  338.            recommended that the application be modified to keep data in a data
  339.            segment.
  340.            CALLBACK FUNCTIONS
  341.            All window and dialog callback functions must be exported in the DEF
  342.            file.  Utility programs, such as FIXDS that modifies the executable
  343.            file, will not work and should not be used.
  344.                   Because of the differences in stacksize requirements for a
  345.            Windows application and a ported application, MIRDEF modifies the
  346.            stacksize used during the link process.
  347.            OS/2 APPLICATION ICONS
  348.            The icon, which OS/2 2.0 displays in a folder for the executable
  349.            file, is determined by the following search order.  Notice that the
  350.            first icon found is used.
  351.            1.  ICON extended attribute.
  352.            2.  ICO file in the same directory as the executable file with the
  353.                same prefix.
  354.            3.  Application-specific icon if PM or Windows executable file.  The
  355.                lowest-numbered icon or pointer resource.
  356.            4.  PM application icon (if executable), Windows application icon (if
  357.                executable), OS/2 application icon (if OS/2 full-screen only
  358.                executable), OS/2 window icon (if OS/2 window-compatible
  359.                executable), DOS window icon (if DOS window executable), or
  360.                program application icon (if unknown type executable).
  361.                   It is recommended that an application icon be defined as the
  362.            lowest-numbered icon or cursor resource in your resource file.
  363.            SHARED MEMORY AMONG PROCESSES
  364.            The concepts of processes and threads are new to many Windows
  365.            programmers.  A program executing within the DOS and Windows
  366.            environment can be thought of as a single process with a single
  367.            thread of execution.  Access to system resources is shared among
  368.            individual programs without strict controls.  An executable file
  369.            within OS/2 2.0 is a single process, but that process can have many
  370.            threads of execution within it.  Because OS/2 2.0 is a true
  371.            multitasking system, access to system resources is managed much more
  372.            closely.  The granularity of memory management is at the process
  373.            level in OS/2 2.0 rather than at the program level as in DOS or
  374.            Windows.  Separate executing programs are not simply different
  375.            threads of execution; they are different processes entirely and
  376.            cannot overlap system resources without explicit declaration.
  377.                   Separate programs running under DOS or Windows can share
  378.            blocks of memory because of the rather free manner in which DOS or
  379.            Windows manage access to memory.  Essentially, if a program can
  380.            obtain a handle to a system resource such as global memory, that
  381.            program can access that memory even though it was not allocated by
  382.            the program.  However, due to the tighter controls that OS/2 2.0
  383.            places on memory, programs that might have acted together in a
  384.            coordinated manner under the DOS and Windows combination might act
  385.            differently under OS/2 2.0.  A program cannot simply access memory
  386.            anywhere in the system by using a memory handle.
  387.                   Under OS/2 2.0, memory that belongs to one process cannot be
  388.            shared with another process without explicit declaration.  This
  389.            difference in memory management between the two environments can be
  390.            overcome by following the coding suggestions below:
  391.            o   Techniques for sharing memory among programs running under
  392.                Windows are already defined.  When memory is allocated in Windows
  393.                with GlobalAlloc, a flag can be used to mark it as shared DDE
  394.                memory.  If DDE-shared memory is used by more than one process in
  395.                the ported applications, the flag GMEM_DDESHARE must be used.
  396.                This is sufficient for the DOS or Windows environment.
  397.            o   To permit proper access to that memory for the ported application
  398.                running under OS/2 2.0, the function GlobalLock must also be
  399.                called.  If GlobalLock is called with a handle to memory
  400.                allocated as GMEM_DDESHARE, Mirrors causes OS/2 2.0 to give that
  401.                process access to the memory.
  402.            o   The coding practice works in both the Windows and OS/2
  403.                environments.  That is, although some changes to code might be
  404.                necessary to make a Windows application portable, these changes
  405.                will not cause an application to work differently when recompiled
  406.                for Windows.  It will act the same in both environments.
  407.                Conditional compiling or maintaining two versions of an
  408.                application is not necessary.
  409.            LIBRARY MANAGEMENT
  410.            The conceptual model for shared memory also applies to the
  411.            differences between Windows and OS/2 2.0 for the management of access
  412.            to libraries.  In Windows, a program can gain access to a DLL simply
  413.            by obtaining a handle to that DLL.  In OS/2 2.0, libraries must be
  414.            explicitly linked against a process for the DLL to become available
  415.            to that process.  It can also become available to a process at run
  416.            time by calling LoadLibrary.
  417.            ALPHABETICAL REFERENCE FOR WINDOWS FUNCTIONS
  418.            An alphabetical list is provided of all the functions that are part
  419.            of the Windows environment.  Each function is either fully supported,
  420.            marked as supported with change, as extended support, or not
  421.            supported.
  422.                   Fully supported  functions perform as they would under
  423.            Windows.  Refer to the Windows Software Development Kit for
  424.            descriptions of these functions.
  425.            FUNCTION                 FUNCTIONAL AREA          SUPPORT STATUS
  426.            _lclose                  File I/O
  427.            _lcreat                  File I/O
  428.            _llseek                  File I/O
  429.            _lopen                   File I/O
  430.            _lread                   File I/O
  431.            _lwrite                  File I/O
  432.            AccessResource           Resource management      Not supported
  433.            AddAtom                  Atom management
  434.            AddFontResource          Font
  435.            AdjustWindowRect         Window creation
  436.            AdjustWindowRectEx       Window creation
  437.            AllocDStoCSAlias         Segment                  Not supported
  438.            AllocResource            Resource management      Not supported
  439.            AllocSelector            Segment                  Not supported
  440.            AnimatePalette           Color palette
  441.            AnsiLower                String manipulation
  442.            AnsiLowerBuff            String manipulation
  443.            AnsiNext                 String manipulation
  444.            AnsiPrev                 String manipulation
  445.            AnsiToOem                String manipulation
  446.            AnsiToOemBuff            String manipulation
  447.            AnsiUpper                String manipulation
  448.            AnsiUpperBuff            String manipulation
  449.            AnyPopup                 Information
  450.            AppendMenu               Menu
  451.            Arc                      Line output
  452.            ArrangeIconic-
  453.              Windows                Display/movement
  454.            BeginDefer-
  455.              WindowPos              Display/movement
  456.            BeginPaint               Painting
  457.            BitBlt                   Bit map
  458.            BringWindowToTop         Display/movement
  459.            BuildCommDCB             Communication            Not supported
  460.            CallMsgFilter            Hook                     Supported w/change
  461.            CallWindowProc           Message
  462.            Catch                    Task
  463.            ChangeClipboard-
  464.              Chain                  Clipboard                Supported w/change
  465.            ChangeMenu               Menu
  466.            ChangeSelector           Segment                  Not supported
  467.            CheckDlgButton           Dialog box
  468.            CheckMenuItem            Menu
  469.            CheckRadioButton         Dialog box
  470.            ChildWindowFrom-
  471.              Point                  Coordinate/Info
  472.            Chord                    Ellipse & polygon
  473.            ClearCommBreak           Communication            Not supported
  474.            ClientToScreen           Coordinate
  475.            ClipCursor               Cursor
  476.            CloseClipboard           Clipboard
  477.            CloseComm                Communication            Not supported
  478.            CloseMetaFile            Metafile
  479.            CloseSound               Sound                    Not supported
  480.            CloseWindow              Display/movement
  481.            CombineRgn               Region
  482.            CopyMetaFile             Metafile
  483.            CopyRect                 Rectangle
  484.            CountClipboard-
  485.              Formats                Clipboard
  486.            CountVoiceNotes          Sound                    Not supported
  487.            CreateBitmap             Bit map
  488.            CreateBitmap-
  489.              Indirect               Bit map
  490.            CreateBrush-
  491.              Indirect               Drawing tool
  492.            CreateCaret              Caret
  493.            CreateCompatible-
  494.              Bitmap                 Bit map
  495.            CreateCompatibleDC       Device context
  496.            CreateCursor             Cursor
  497.            CreateDC                 Device context
  498.            CreateDialog             Dialog box
  499.            CreateDialog-
  500.              Indirect               Dialog box
  501.            CreateDialog-
  502.              IndirectParam          Dialog box
  503.            CreateDialogParam        Dialog box
  504.            CreateDIBitmap           Device-ind. bit map
  505.            CreateDIBPattern-
  506.              Brush                  Drawing tool
  507.            CreateDiscardable-
  508.              Bitmap                 Bit map
  509.            CreateEllipticRgn        Region
  510.            CreateEllipticRgn-
  511.              Indirect               Region
  512.            CreateFont               Font                     Supported w/change
  513.            CreateFontIndirect       Font                     Supported w/change
  514.            CreateHatchBrush         Drawing tool             Supported w/change
  515.            CreateIC                 Device context
  516.            CreateIcon               Painting
  517.            CreateMenu               Menu
  518.            CreateMenuIndirect       Menu                     Not supported
  519.            CreateMetaFile           Metafile
  520.            CreateOC                 Device context           Supported w/change
  521.            CreatePalette            Color palette
  522.            CreatePatternBrush       Drawing tool
  523.            CreatePen                Drawing tool
  524.            CreatePenIndirect        Drawing tool
  525.            CreatePoly-
  526.              PolygonRgn             Region
  527.            CreatePolygonRgn         Region
  528.            CreatePopupMenu          Menu
  529.            CreateRectRgn            Region
  530.            CreateRectRgn-
  531.              Indirect               Region
  532.            CreateRoundRectRgn       Region
  533.            CreateSolidBrush         Drawing tool
  534.            CreateWindow             Window creation
  535.            CreateWindowEx           Window creation
  536.            DebugBreak               Debugging
  537.            DefDlgProc               Dialog box/
  538.                                       Window creation
  539.            DeferWindowPos           Display/movement
  540.            DefFrameProc             Window creation
  541.            DefHookProc              Hook                     Supported w/change
  542.            DefineHandleTable        Memory management        Not supported
  543.            DefMDIChildProc          Window creation
  544.            DefWindowProc            Window creation
  545.            DeleteAtom               Atom management
  546.            DeleteDC                 Device context
  547.            DeleteMenu               Menu
  548.            DeleteMetaFile           Metafile
  549.            DeleteObject             Drawing tool
  550.            DestroyCaret             Caret
  551.            DestroyCursor            Cursor
  552.            DestroyIcon              Painting
  553.            DestroyMenu              Menu
  554.            DestroyWindow            Window creation
  555.            DeviceCapabilities       Printer control          Supported w/change
  556.            DeviceMode               Printer control
  557.            DialogBox                Dialog box
  558.            DialogBoxIndirect        Dialog box
  559.            DialogBoxIndirect-
  560.              Param                  Dialog box
  561.            DialogBoxParam           Dialog box
  562.            DispatchMessage          Message
  563.            DlgDirList               Dialog box
  564.            DlgDirListComboBox       Dialog box
  565.            DlgDirSelect             Dialog box
  566.            DlgDirSelect-
  567.              ComboBox               Dialog box               Supported w/change
  568.            DOS3CALL                 OS interrupt
  569.            DPtoLP                   Coordinate
  570.            DrawFocusRect            Ellipse & Polygon/
  571.                                       Painting
  572.            DrawIcon                 Painting
  573.            DrawMenuBar              Menu
  574.            DrawText                 Painting
  575.            Ellipse                  Ellipse & polygon
  576.            EmptyClipboard           Clipboard
  577.            EnableHardware-
  578.              Input                  Hardware
  579.            EnableMenuItem           Menu
  580.            EnableWindow             Input
  581.            EndDeferWindowPos        Display/movement
  582.            EndDialog                Dialog box
  583.            EndPaint                 Painting
  584.            EnumChildWindows         Information              Supported w/change
  585.            EnumClipboard-
  586.              Formats                Clipboard
  587.            EnumFonts                Font
  588.            EnumMetaFile             Metafile                 Not supported
  589.            EnumObjects              Drawing tool
  590.            EnumProps                Property                 Supported w/change
  591.            EnumTaskWindows          Information
  592.            EnumWindows              Information
  593.            EqualRect                Rectangle
  594.            EqualRgn                 Region
  595.            Escape                   Printer escape
  596.            EscapeCommFunction       Communication            Not supported
  597.            ExcludeClipRect          Clipping
  598.            ExcludeUpdateRgn         Painting
  599.            ExitWindows              Task                     Supported w/change
  600.            ExtDeviceMode            Printer control          Supported w/change
  601.            ExtFloodFill             Bit map
  602.            ExtTextOut               Text
  603.            FatalAppExit             Debugging
  604.            FatalExit                Debugging
  605.            FillRect                 Painting
  606.            FillRgn                  Region
  607.            FindAtom                 Atom management
  608.            FindResource             Resource management
  609.            FindWindow               Information
  610.            FlashWindow              Error
  611.            FloodFill                Bit map
  612.            FlushComm                Communication            Not supported
  613.            FrameRect                Painting
  614.            FrameRgn                 Region
  615.            FreeLibrary              Module management
  616.            FreeModule               Module management
  617.            FreeProcInstance         Module management
  618.            FreeResource             Resource management
  619.            FreeSelector             Segment                  Not supported
  620.            GetActiveWindow          Input
  621.            GetAspect-
  622.              RatioFilter            Font
  623.            GetAsyncKeyState         Hardware
  624.            GetAtomHandle            Atom management
  625.            GetAtomName              Atom management
  626.            GetBitmapBits            Bit map
  627.            GetBitmap-
  628.              Dimension              Bit map
  629.            GetBkColor               Drawing attribute
  630.            GetBkMode                Drawing attribute
  631.            GetBrushOrg              Drawing tool
  632.            GetCapture               Input
  633.            GetCaretBlinkTime        Caret
  634.            GetCaretPos              Caret
  635.            GetCharWidth             Font
  636.            GetClassInfo             Window creation
  637.            GetClassLong             Window creation
  638.            GetClassName             Window creation
  639.            GetClassWord             Window creation
  640.            GetClientRect            Display/movement
  641.            GetClipboardData         Clipboard
  642.            GetClipboard-
  643.              FormatName             Clipboard
  644.            GetClipboardOwner        Clipboard
  645.            GetClipboardViewer       Clipboard
  646.            GetClipBox               Clipping
  647.            GetCodeHandle            Module management        Not supported
  648.            GetCodeInfo              Segment                  Not supported
  649.            GetCommError             Communication            Not supported
  650.            GetCommEventMask         Communication            Not supported
  651.            GetCommState             Communication            Not supported
  652.            GetCurrentPDB            Task                     Not supported
  653.            GetCurrentPosition       Line output
  654.            GetCurrentTask           Task
  655.            GetCurrentTime           System
  656.            GetCursorPos             Cursor
  657.            GetDC                    Painting
  658.            GetDCOrg                 Device context
  659.            GetDesktopWindow         Information
  660.            GetDeviceCaps            Information
  661.            GetDialogBaseUnits       Dialog box
  662.            GetDIBits                Device-ind. bit map
  663.            GetDlgCtrlID             Dialog box
  664.            GetDlgItem               Dialog box
  665.            GetDlgItemInt            Dialog box
  666.            GetDlgItemText           Dialog box
  667.            GetDOSEnvironment        Task
  668.            GetDoubleClickTime       Input
  669.            GetDriveType             File I/O
  670.            GetEnvironment           Environment
  671.            GetFocus                 Input
  672.            GetFreeSpace             Memory management
  673.            GetInputState            Hardware
  674.            GetInstanceData          Module management        Not supported
  675.            GetKBCodePage            Hardware
  676.            GetKeyboardState         Hardware
  677.            GetKeyboardType          Hardware
  678.            GetKeyNameText           Hardware                 Not supported
  679.            GetKeyState              Hardware
  680.            GetLastActivePopup       Window creation
  681.            GetMapMode               Mapping
  682.            GetMenu                  Menu
  683.            GetMenuCheckMark
  684.            Dimensions               Menu
  685.            GetMenuItemCount         Menu
  686.            GetMenuItemID            Menu
  687.            GetMenuState             Menu
  688.            GetMenuString            Menu
  689.            GetMessage               Message                  Supported w/change
  690.            GetMessagePos            Message
  691.            GetMessageTime           Message
  692.            GetMetaFile              Metafile
  693.            GetMetaFileBits          Metafile                 Supported w/change
  694.            GetModuleFileName        Module management
  695.            GetModuleHandle          Module management
  696.            GetModuleUsage           Module management
  697.            GetNearestColor          Color palette
  698.            GetNearestPalette-
  699.              Index                  Color palette
  700.            GetNextDlg-
  701.              GroupItem              Dialog box
  702.            GetNextDlgTabItem        Dialog box
  703.            GetNextWindow            Information
  704.            GetNumTasks              Task
  705.            GetObject                Drawing tool
  706.            GetPaletteEntries        Color palette
  707.            GetParent                Information
  708.            GetPixel                 Bit map
  709.            GetPolyFillMode          Drawing attribute
  710.            GetPriority-
  711.              ClipboardFormat        Clipboard
  712.            GetPrivate-
  713.              ProfileInt             Initialization file
  714.            GetPrivate-
  715.              ProfileString          Initialization file      Supported w/change
  716.            GetProcAddress           Module management
  717.            GetProfileInt            Initialization file
  718.            GetProfileString         Initialization file      Supported w/change
  719.            GetProp                  Property
  720.            GetRgnBox                Region
  721.            GetROP2                  Drawing attribute
  722.            GetScrollPos             Scrolling
  723.            GetScrollRange           Scrolling
  724.            GetStockObject           Drawing tool
  725.            GetStretchBltMode        Drawing attribute
  726.            GetSubMenu               Menu
  727.            GetSysColors             System                   Supported w/change
  728.            GetSysModalWindow        Information
  729.            GetSystemDirectory       File I/O
  730.            GetSystemMenu            Menu
  731.            GetSystemMetrics         System                   Supported w/change
  732.            GetSystem-
  733.              PaletteEntries         Color palette
  734.            GetSystem-
  735.              PaletteUse             Color palette
  736.            GetTabbed-
  737.              TextExtent             Text
  738.            GetTempDrive             File I/O
  739.            GetTempFileName          File I/O
  740.            GetTextAlign             Text
  741.            GetTextCharacter-
  742.              Extra                  Text
  743.            GetTextColor             Drawing attribute
  744.            GetTextExtent            Text
  745.            GetTextFace              Text
  746.            GetTextMetrics           Text
  747.            GetThresholdBuffer       Sound                    Not supported
  748.            GetThresholdEvent        Sound                    Not supported
  749.            GetThresholdStatus       Sound                    Not supported
  750.            GetTickCount             Input
  751.            GetTopWindow             Information
  752.            GetUpdateRect            Painting
  753.            GetUpdateRgn             Painting
  754.            GetVersion               Module management
  755.            GetViewportExt           Mapping
  756.            GetViewportOrg           Mapping
  757.            GetWindow                Information
  758.            GetWindowDC              Painting
  759.            GetWindowExt             Mapping
  760.            GetWindowLong            Window creation
  761.            GetWindowOrg             Mapping
  762.            GetWindowRect            Display/movement
  763.            GetWindows-
  764.              Directory              File I/O
  765.            GetWindowTask            Information
  766.            GetWindowText            Display/movement
  767.            GetWindow-
  768.              TextLength             Display/movement
  769.            GetWindowWord            Window creation
  770.            GetWinFlags              Memory management        Extended support
  771.            Global16Pointer-
  772.              Alloc                  WINMEM32.DLL             Not supported
  773.            Global16Pointer-
  774.              Free                   WINMEM32.DLL             Not supported
  775.            Global32Alloc            WINMEM32.DLL             Not supported
  776.            Global32CodeAlias        WINMEM32.DLL             Not supported
  777.            Global32Code-
  778.              AliasFree              WINMEM32.DLL             Not supported
  779.            Global32Free             WINMEM32.DLL             Not supported
  780.            Global32Realloc          WINMEM32.DLL             Not supported
  781.            GlobalAddAtom            Atom management
  782.            GlobalAlloc              Memory management        Supported w/change
  783.            GlobalCompact            Memory management        Not supported
  784.            GlobalDeleteAtom         Atom management
  785.            GlobalDiscard            Memory management        Not supported
  786.            GlobalDosAlloc           Memory management        Not supported
  787.            GlobalDosFree            Memory management        Not supported
  788.            GlobalFindAtom           Atom management
  789.            GlobalFix                Segment                  Not supported
  790.            GlobalFlags              Memory management
  791.            GlobalFree               Memory management
  792.            GlobalGetAtomName        Atom management
  793.            GlobalHandle             Memory management        Supported w/change
  794.            GlobalLock               Memory management
  795.            GlobalLRUNewest          Memory management
  796.            GlobalLRUOldest          Memory management
  797.            GlobalNotify             Memory management        Not supported
  798.            GlobalPageLock           Segment                  Not supported
  799.            GlobalPageUnlock         Segment                  Not supported
  800.            GlobalReAlloc            Memory management
  801.            GlobalSize               Memory management
  802.            GlobalUnfix              Segment                  Not supported
  803.            GlobalUnlock             Memory management
  804.            GlobalUnwire             Memory management        Supported w/change
  805.            GlobalWire               Memory management        Supported w/change
  806.            GrayString               Painting
  807.            HideCaret                Caret
  808.            HiliteMenuItem           Menu
  809.            InflateRect              Rectangle
  810.            InitAtomTable            Atom management
  811.            InSendMessage            Message
  812.            InsertMenu               Menu
  813.            IntersectClipRect        Clipping
  814.            IntersectRect            Rectangle
  815.            InvalidateRect           Region
  816.            InvalidateRgn            Painting
  817.            InvertRect               Painting
  818.            InvertRgn                Region
  819.            IsCharAlpha              String manipulation
  820.            IsCharAlphaNumeric       String manipulation
  821.            IsCharLower              String manipulation
  822.            IsCharUpper              String manipulation
  823.            IsChild                  Information
  824.            IsClipboard-
  825.              FormatAvailable        Clipboard
  826.            IsDialogMessage          Dialog box
  827.            IsDlgButtonChecked       Dialog box
  828.            IsIconic                 Display/movement
  829.            IsRectEmpty              Rectangle
  830.            IsWindow                 Information
  831.            IsWindowEnabled          Input
  832.            IsWindowVisible          Display/movement
  833.            IsZoomed                 Display/movement
  834.            KillTimer                Input
  835.            LimitEMSPages            Memory management        Not supported
  836.            LineDDA                  Line output
  837.            LineTo                   Line output
  838.            LoadAccelerators         Resource management
  839.            LoadBitmap               Bit map/Resource mgmt
  840.            LoadCursor               Cursor/Resource mgmt
  841.            LoadIcon                 Resource management
  842.            LoadLibrary              Module management        Supported w/change
  843.            LoadMenu                 Resource management
  844.            LoadMenuIndirect         Menu                     Not supported
  845.            LoadModule               App.  execution
  846.            LoadResource             Resource management
  847.            LoadString               Resource management
  848.            LocalAlloc               Memory management
  849.            LocalCompact             Memory management
  850.            LocalDiscard             Memory management
  851.            LocalFlags               Memory management
  852.            LocalFree                Memory management
  853.            LocalHandle              Memory management
  854.            LocalInit                Memory management
  855.            LocalLock                Memory management
  856.            LocalReAlloc             Memory management        Supported w/change
  857.            LocalShrink              Memory management
  858.            LocalSize                Memory management
  859.            LocalUnlock              Memory management
  860.            LockResource             Resource management
  861.            LockSegment              Memory management
  862.            LPtoDP                   Coordinate
  863.            lstrcat                  String manipulation
  864.            lstrcmp                  String manipulation
  865.            lstrcmpi                 String manipulation
  866.            lstrcpy                  String manipulation
  867.            lstrlen                  String manipulation
  868.            MakeProcInstance         Module management
  869.            MapDialogRect            Dialog box
  870.            MapVirtualKey            Hardware
  871.            MessageBeep              Error
  872.            MessageBox               Error/Message            Supported w/change
  873.            ModifyMenu               Menu
  874.            MoveTo                   Line output
  875.            MoveWindow               Display/movement
  876.            NetBIOSCall              OS interrupt             Not supported
  877.            OemKeyScan               Hardware
  878.            OemToAnsi                String manipulation
  879.            OemToAnsiBuff            String manipulation
  880.            OffsetClipRgn            Clipping
  881.            OffsetRect               Rectangle
  882.            OffsetRgn                Region
  883.            OffsetViewportOrg        Mapping
  884.            OffsetWindowOrg          Mapping
  885.            OpenClipboard            Clipboard
  886.            OpenComm                 Communication            Not supported
  887.            OpenFile                 File I/O
  888.            OpenIcon                 Display/movement
  889.            OpenSound                Sound                    Not supported
  890.            OutputDebugString        Debugging
  891.            PaintRgn                 Region
  892.            PatBlt                   Bit map
  893.            PeekMessage              Message                  Supported w/change
  894.            Pie                      Ellipse & polygon
  895.            PlayMetaFile             Metafile
  896.            PlayMetaFileRecord       Metafile                 Not supported
  897.            Polygon                  Ellipse & polygon
  898.            Polyline                 Line output
  899.            PolyPolygon              Region                   Supported w/change
  900.            PostAppMessage           Message
  901.            PostMessage              Message
  902.            PostQuitMessage          Message
  903.            ProfClear                Optimization tool        Not supported
  904.            ProfFinish               Optimization tool        Not supported
  905.            ProfFlush                Optimization tool        Not supported
  906.            ProfInsChk               Optimization tool        Not supported
  907.            ProfSampRate             Optimization tool        Not supported
  908.            ProfSetup                Optimization tool        Not supported
  909.            ProfStart                Optimization tool        Not supported
  910.            ProfStop                 Optimization tool        Not supported
  911.            PtInRect                 Rectangle
  912.            PtInRegion               Region
  913.            PtVisible                Clipping
  914.            ReadComm                 Communication            Not supported
  915.            RealizePalette           Color palette
  916.            Rectangle                Ellipse & polygon
  917.            RectInRegion             Region
  918.            RectVisible              Clipping
  919.            RegisterClass            Window creation          Supported w/change
  920.            Register-
  921.              ClipboardFormat        Clipboard
  922.            Register-
  923.              WindowMessage          Message
  924.            ReleaseCapture           Input
  925.            ReleaseDC                Painting
  926.            RemoveFontResource       Font
  927.            RemoveMenu               Menu
  928.            RemoveProp               Property
  929.            ReplyMessage             Message
  930.            ResizePalette            Color palette
  931.            Resource                 Resource management
  932.            RestoreDC                Device context
  933.            RoundRect                Ellipse & polygon
  934.            SaveDC                   Device context
  935.            ScaleViewportExt         Mapping
  936.            ScaleWindowExt           Mapping
  937.            ScreenToClient           Coordinate
  938.            ScrollDC                 Scrolling
  939.            ScrollWindow             Scrolling
  940.            SelectClipRgn            Clipping
  941.            SelectObject             Drawing tool
  942.            SelectPalette            Color palette
  943.            SendDlgItemMessage       Dialog box
  944.            SendMessage              Message                  Supported w/change
  945.            SetActiveWindow          Input
  946.            SetBitmapBits            Bit map
  947.            SetBitmapDimension       Bit map
  948.            SetBkColor               Drawing attribute
  949.            SetBkMode                Drawing attribute
  950.            SetBrushOrg              Drawing tool
  951.            SetCapture               Input
  952.            SetCaretBlinkTime        Caret
  953.            SetCaretPos              Caret
  954.            SetClassLong             Window creation
  955.            SetClassWord             Window creation          Supported w/change
  956.            SetClipboardData         Clipboard
  957.            SetClipboardViewer       Clipboard                Supported w/change
  958.            SetCommBreak             Communication            Not supported
  959.            SetCommEventMask         Communication            Not supported
  960.            SetCommState             Communication            Not supported
  961.            SetCursor                Cursor
  962.            SetCursorPos             Cursor
  963.            SetDIBits                Device-ind. bit map
  964.            SetDIBitsToDevice        Device-ind. bit map
  965.            SetDlgItemInt            Dialog box
  966.            SetDlgItemText           Dialog box
  967.            SetDoubleClickTime       Input
  968.            SetEnvironment           Environment              Supported w/change
  969.            SetErrorMode             Task
  970.            SetFocus                 Input                    Supported w/change
  971.            SetHandleCount           File I/O
  972.            SetKeyboardState         Hardware
  973.            SetMapMode               Mapping
  974.            SetMapperFlags           Font
  975.            SetMenu                  Menu
  976.            SetMenuItemBitmaps       Menu
  977.            SetMessageQueue          Message                  Supported w/change
  978.            SetMetaFileBits          Metafile                 Supported w/change
  979.            SetPaletteEntries        Color palette
  980.            SetParent                Information
  981.            SetPixel                 Bit map
  982.            SetPolyFillMode          Drawing attribute
  983.            SetProp                  Property
  984.            SetRect                  Rectangle
  985.            SetRectEmpty             Rectangle
  986.            SetRectRgn               Region
  987.            SetResourceHandler       Resource management      Not supported
  988.            SetROP2                  Drawing attribute
  989.            SetScrollPos             Scrolling
  990.            SetScrollRange           Scrolling
  991.            SetSoundNoise            Sound                    Not supported
  992.            SetStretchBltMode        Drawing attribute
  993.            SetSwapAreaSize          Memory management
  994.            SetSysColors             System
  995.            SetSysModalWindow        Input
  996.            SetSystem-
  997.              PaletteUse             Color palette
  998.            SetTextAlign             Text
  999.            SetTextCharacter-
  1000.              Extra                  Text
  1001.            SetTextColor             Drawing attribute
  1002.            SetText-
  1003.              Justification          Text
  1004.            SetTimer                 Input
  1005.            SetViewportExt           Mapping
  1006.            SetViewportOrg           Mapping
  1007.            SetVoiceAccent           Sound                    Not supported
  1008.            SetVoiceEnvelope         Sound                    Not supported
  1009.            SetVoiceNote             Sound                    Not supported
  1010.            SetVoiceQueueSize        Sound                    Not supported
  1011.            SetVoiceSound            Sound                    Not supported
  1012.            SetVoiceThreshold        Sound                    Not supported
  1013.            SetWindowExt             Mapping
  1014.            SetWindowLong            Window creation
  1015.            SetWindowOrg             Mapping
  1016.            SetWindowPos             Display/movement
  1017.            SetWindowsHook           Hook                     Supported w/change
  1018.            SetWindowText            Display/movement
  1019.            SetWindowWord            Window creation
  1020.            ShowCaret                Caret
  1021.            ShowCursor               Cursor
  1022.            ShowOwnedPopups          Display/movement
  1023.            ShowScrollBar            Scrolling
  1024.            ShowWindow               Display/movement
  1025.            SizeofResource           Resource management
  1026.            StartSound               Sound                    Not supported
  1027.            StopSound                Sound                    Not supported
  1028.            StretchBlt               Bit map
  1029.            StretchDIBits            Device-ind. bit map
  1030.            SwapMouseButton          Input
  1031.            SwapRecording            Optimization tool        Not supported
  1032.            SwitchStackBack          Memory management        Not supported
  1033.            SwitchStackTo            Memory management        Not supported
  1034.            SyncAllVoices            Sound                    Not supported
  1035.            TabbedTextOut            Text
  1036.            TextOut                  Text
  1037.            Throw                    String manip./Task
  1038.            ToAscii                  String manipulation
  1039.            TrackPopupMenu           Menu
  1040.            Translate-
  1041.              Accelerator            Message
  1042.            Translate-
  1043.              MDISysAccel            Message
  1044.            TranslateMessage         Message
  1045.            TransmitCommChar         Communication            Not supported
  1046.            UngetCommChar            Communication            Not supported
  1047.            UnhookWindowsHook        Hook                     Supported w/change
  1048.            UnionRect                Rectangle
  1049.            UnlockResource           Resource management
  1050.            UnlockSegment            Segment                  Not supported
  1051.            UnrealizeObject          Drawing tool
  1052.            UnregisterClass          Window creation
  1053.            UpdateColors             Color palette
  1054.            UpdateWindow             Painting
  1055.            ValidateCode-
  1056.              Segments               Debugging                Not supported
  1057.            ValidateFreeSpaces       Debugging                Not supported
  1058.            ValidateRect             Painting
  1059.            ValidateRgn              Region
  1060.            VkKeyScan                Hardware
  1061.            WaitMessage              Message
  1062.            WaitSoundState           Sound                    Not supported
  1063.            WindowFromPoint          Coordinate/Info.
  1064.            WinExec                  Application execution
  1065.            WinHelp                  Application execution
  1066.            WriteComm                Communication            Not supported
  1067.            WritePrivate-
  1068.              ProfileString          Initialization file      Supported w/change
  1069.            WriteProfileString       Initialization file
  1070.            wsprintf                 String manipulation
  1071.            wvsprintf                String manipulation
  1072.            Yield                    Task
  1073.            PLANNING INFORMATION
  1074.            CUSTOMER RESPONSIBILITIES:  Customers should be aware of the
  1075.            technical limitations of the IBM Developer's Migration Kit/2 before
  1076.            purchase.  The previously discussed restrictions should be
  1077.            communicated so that the customer is able to estimate the amount of
  1078.            work required for a successful port.  The ship-group documentation,
  1079.            also available separately, provides further information on
  1080.            pre-migration considerations.
  1081.            DEVELOPER ASSISTANCE:  IBM is dedicated to supporting software
  1082.            developers and to sharing knowledge and experience for the continued
  1083.            growth of IBM OS/2 in the dynamic world of personal computing.  The
  1084.            IBM Developer Assistance Program provides technical information and
  1085.            assistance to help developers design and develop products for IBM
  1086.            Operating System/2 (R).  The IBM Developer Assistance Program is for
  1087.            developers working on products for commercial release.  Information
  1088.            about this program and the availability of technical workshops can be
  1089.            obtained by calling (407) 982-6408.
  1090.             (R) Registered trademark of International Business Machines
  1091.               Corporation.
  1092.            INSTALLABILITY:
  1093.            PACKAGING:  The IBM Developer's Migration Kit/2 program package
  1094.            contains the following:
  1095.            o   IBM Program License Agreement
  1096.            o   Proof of License
  1097.            o   Registration Card
  1098.            o   License Information
  1099.            o   Change of Address Card
  1100.            o   One 3.5-inch double-sided (1.44MB) diskette
  1101.            o   One 5.25-inch double-sided (1.2MB) diskette
  1102.            o   Application Migration Guide and Reference
  1103.            SECURITY, AUDITABILITY AND CONTROL
  1104.                   User management is responsible for evaluation, selection and
  1105.            implementation of security features, administrative procedures and
  1106.            appropriate controls in application systems and communication
  1107.            facilities.
  1108. ORDERING   ORDERING INFORMATION
  1109.                   Orders for new licenses will be accepted now.
  1110.                   Unless a later date is specified, orders entered prior to
  1111.            August 18, 1992, will be assigned a schedule date of August 28, 1992.
  1112.            Shipment of orders will commence on August 18, 1992.  Orders entered
  1113.            after August 18, 1992, will be scheduled for shipment on the Friday
  1114.            following the week of order entry or as soon thereafter as supply
  1115.            permits.
  1116.                   To order the programs in this announcement for order type,
  1117.            specify the order type number, feature number, part number, program
  1118.            name, media and quantity.
  1119.                   To order the programs in this announcement for type model,
  1120.            specify the type model number, order type description, asset feature
  1121.            number, media feature number, one-time charge feature number, media
  1122.            and quantity.
  1123.            Order
  1124.            Type         Feature     Part
  1125.            Number       Number      Number      Program Name           Media
  1126.            5871-AAA     3111        41G2943     IBM Developer's
  1127.                                                 Migration Kit/2        Dual
  1128.            o   Program Package -- program diskette with documentation.
  1129.            TERMS AND CONDITIONS
  1130.            LICENSING:  The program in this announcement is licensed under the
  1131.            terms and conditions of the IBM Program License Agreement.  A copy of
  1132.            the agreement is included in the program package.
  1133.            LIMITED WARRANTY:  Program:  Yes.  Media:  Three months.
  1134.            PROGRAM SERVICES:  Central Service will be available until
  1135.            July 28, 1994.  Programs in this announcement are supported by the
  1136.            Personal Systems Support Center in Dallas, TX, (technical and
  1137.            installation support) and the IBM Support Center in Austin, TX,
  1138.            (defect support).  The statement of service included in the program
  1139.            package describes this service.
  1140.            CUSTOMER FULFILLMENT OPTION:  Yes.
  1141.            VOLUME DISCOUNT:  Volume discounting is available under the terms and
  1142.            conditions of the IBM Customer Agreement (ICA) and the Exhibit for
  1143.            Personal Computer/System Programs.  The programs in this announcement
  1144.            are included in the Eligible Program List for Personal
  1145.            Computer/System Programs.  They may be added to the applicable
  1146.            category in the space provided on the Eligible Program List.  Program
  1147.            Packages are included in Category A under 5871-AAA.
  1148.            TESTING PERIOD:  Two months for up to three licenses.
  1149.                   IBM Customer Agreement (ICA) must be in effect.
  1150.            NATIONAL EDUCATION LICENSE FEE:  A National Education License Fee
  1151.            (NELF) is available under the terms and conditions of the Education
  1152.            Allowance Attachment .  The NELF, which represents a 30% discount off
  1153.            the single unit price, is not subject to any further discount or
  1154.            allowance.
  1155.            CHARGES
  1156.            PROGRAM                                                     ONE-TIME
  1157.            NAME/NUMBER                   ORDER TYPE                    CHARGE
  1158.            IBM Developer's
  1159.              Migration Kit/2
  1160.              41G2943                     Program Package                 $299
  1161.  
  1162.