home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 16 Announce
/
16-Announce.zip
/
IBMDMK.ZIP
/
ibmdmk2.txt
Wrap
Text File
|
1992-11-20
|
69KB
|
1,162 lines
NUMBER 292-445
DATE 920818
CATEGORY WS00, WS20
TYPE Programming
TITLE IBM DEVELOPER'S MIGRATION KIT/2
ABSTRACT The IBM Developer's Migration Kit/2 (41G2943) contains
conversion utilities that allow developers of Windows (1) 3.0
applications to convert their products into OS/2 (R) 2.0 16-bit
applications. The kit protects the developer's investment in Windows
3.0 source code and enables the developer's product to take advantage
of OS/2 2.0 advanced function and API.
Availability Date: August 18, 1992.
(1) Trademark of Microsoft Corporation.
(R) Registered trademark of International Business Machines
Corporation.
PRODNO 41G2943
OVERVIEW HIGHLIGHTS
o Migrated Windows 3.0 applications run in OS/2 protect mode,
allowing access to OS/2 2.0 advanced function.
o Smooth migration path from a Windows 3.0 product to a true
OS/2 2.0 product allows developers to grow with users as the
OS/2 2.0 installed base increases.
o Reuse of Windows 3.0 code in development.
o Development time required to produce an OS/2 2.0 application can
be significantly reduced by reusing source code.
o Increases availability of OS/2-enabled applications.
DESCRIPTION
GROWTH ENABLEMENT
The IBM Developer's Migration Kit/2 allows software developers to
extend beyond the limitations of their Windows 3.0 applications.
Using the kit to migrate to OS/2 2.0, developers can access advanced
operating system functions such as multithreading and protected
memory; OS/2-enabled products can take advantage of the operating
system capabilities. The kit can expand the functionality of a
developer's product, enabling the creation and implementation of new
customer solutions.
By using the IBM Developer's Migration Kit/2 to create OS/2
applications, developers can gain a foothold in the growing installed
base of OS/2 2.0 systems.
INVESTMENT PROTECTION
The IBM Developer's Migration Kit/2 enables Windows software
developers to create OS/2 2.0 versions of their products without a
complete rewrite of existing Windows code. Their investment in the
development of Windows code is protected -- use of the kit can
produce Windows and OS/2 2.0 products from a single source.
USER PRODUCTIVITY
DEVELOPER PRODUCTIVITY: The IBM Developer's Migration Kit/2 enables
software developers to reuse Windows 3.0 source code to build OS/2
products. Code reuse can significantly reduce product development
time and effort. The kit also allows for the incremental addition of
OS/2 function, smoothing the migration path from Windows 3.0 to OS/2
2.0 and reducing the "cost" of learning the advanced function of
OS/2. Developers are able to produce OS/2 2.0 applications even
before in-depth proficiencies in OS/2 APIs are developed.
CUSTOMER PRODUCTIVITY: Using the IBM Developer's Migration Kit/2,
developers can take advantage of OS/2 2.0's advanced functionality
such as multiple thread support. The kit can expand the
functionality of a developer's product, enabling the creation and
implementation of new solutions to customer needs.
PRODUCT POSITIONING
The IBM Developer's Migration Kit/2 is targeted primarily toward
developers wishing to produce OS/2 2.0 applications from existing
Windows 3.0 application code. Use of the IBM Developer's Migration
Kit/2 requires the IBM Developer's Toolkit for OS/2 2.0.
The amount of effort required to port applications using the
IBM Developer's Migration Kit/2 is dependent upon the design and
implementation of the Windows source code to be ported. Some
developers may be able to migrate their products without any code
changes; some may require only minor code modifications. Others may
have significant design issues that must be resolved before
successful migration with the kit; in-depth knowledge of the source
code to be ported is essential. Refer to the TECHNICAL INFORMATION
(LIMITATIONS) section for more information.
CUSTINFO PUBLICATIONS
The IBM Developer's Migration Kit/2: Application Migration
Guide and Reference (41G2944) may be ordered separately from IBM
after availability. To order, contact your IBM representative.
TECHINFO TECHNICAL INFORMATION
SPECIFIED OPERATING ENVIRONMENT
MACHINE REQUIREMENTS: The IBM Developer's Migration Kit/2 is
designed to run as follows:
o System Units: All system units supported by OS/2 2.0
o Memory Requirements: Minimum 4MB RAM with additional for
compilers and toolkits
o Hard file: Minimum 3MB free space to install
o Diskette drives: One 3.5-inch (1.44MB) or one 5.25-inch (1.2MB)
diskette drive (only necessary for installation)
PROGRAMMING REQUIREMENTS: The IBM Developer's Migration Kit/2 and
generated object programs will run only under OS/2 2.0 with or
without IBM Extended Services for OS/2.
Use of the IBM Developer's Migration Kit/2 also requires:
o IBM Developer's Toolkit for OS/2 2.0
o Tools required to build Windows 3.0 applications (that is,
compiler and headers).
COMPATIBILITY: Applications using the IBM Developer's Migration
Kit/2 will not run on previous versions of OS/2.
LIMITATIONS: Due to the technical complexity of the porting layer in
the IBM Developer's Migration Kit/2, some changes or redesign of the
Windows 3.0 source code may be necessary. The following information
describes some restrictions of the kit.
DESIGN ISSUES
Applications built using the IBM Developer's Migration Kit/2 utilize
a dynamic link library (DLL) in OS/2 2.0, named Mirrors. Mirrors is
a 32-bit DLL, which provides a thunking layer to convert 16-bit
ported Windows API to 32-bit internal code. A thunking layer
provides a translation layer between the 16-bit and 32-bit addressing
schemes. This thunk is necessary because of the different addressing
schemes used in 16-bit and 32-bit environments.
For example, in the ported environment, when an application
calls a Windows function such as GlobalAlloc, it is actually calling
the function GlobalAlloc16, which determines the parameters (if any)
that need to be converted, sets up a 32-bit stack, and makes a call
to the 32-bit version of GlobalAlloc, which performs all the "real"
work.
SUPPORTING THE API
Mirrors implements the supported API as documented in Windows. If a
Windows function behaves differently from the documented behavior,
Mirrors follows the actual Windows behavior.
INTERNAL STRUCTURES
Mirrors maintains a number of internal data structures. Whereas a
ported application would cause the creation and maintenance of a data
structure within Windows, the structure is created and maintained by
Mirrors. Mirrors can also create a similar structure within the
Presentation Manager (R) (PM) environment. For example, a ported
Windows application might need to create a device context (DC). PM
has a similar entity called a presentation space. Although similar,
a presentation space is not identical to a Windows device context.
Therefore, when a ported application needs to create a device
context, Mirrors creates a presentation space in the PM environment
and maintains structures to give the application the appearance of
interacting with a device context.
When the ported Windows application opens a device context,
Mirrors returns a 16-bit handle to the application. The application
can act on this handle as if it were a handle to a Windows device
context. In actuality, Mirrors is maintaining a structure for this
device context, which also includes a 32-bit value to the PM
presentation space.
Consider what happens when an application attempts to use a
value from this device context. For example, if the ported Windows
application tries to set the text color, the text color is set in the
Mirrors structure and also set in the PM presentation space. This
arrangement enables Mirrors to perform some optimization. The
application might set the text color five times in a row without
realizing an object that uses the color. Although Mirrors changes
the color in its internal device context structure and returns the
previous color, it does not pass this change on to the PM
presentation space until there is some demand for the color change
such as a call to TextOut. If the application does not make calls to
use these intermediate colors, Mirrors can reduce the number of
instruction cycles. This can save a considerable amount of time.
(R) Registered trademark of International Business Machines
Corporation.
WINDOWS CONTROLS
All the Windows controls, ordinarily realized by Windows, are
actually realized by Mirrors. They are windows that Mirrors draws
and maintains to emulate a Presentation Manager control. The ported
Windows application and the Mirrors DLL combined are essentially a PM
application. For example, when the application creates a button,
Mirrors does not create a Presentation Manager button. Mirrors
creates its own window registered as a button class. Messages are
sent to this window as they are for Windows.
DIALOG MANAGER
Dialog boxes are created and maintained by Mirrors. The Presentation
Manager Dialog Box Manager is not used.
DESIGN CONSIDERATIONS
The following list contains important design assumptions and
constraints. Ensure that the application satisfies these items
before beginning the porting process.
o The application to be ported is compiled and linked as a
Windows 3.0 application. The application should not send
register information to the debug terminal when it is run with
the debugging version of Windows.
o Applications currently making interrupt 21 calls must convert
these calls to the Windows DOS3CALL or to the INT 21 replacement
functions provided by the Mirrors DLL as the Host Independent
API, which is an extension to the Windows API.
o The resources of a Windows application are converted statically
as part of the process of building a ported application. This
includes any Windows help resources.
o Applications should adhere to the documented method of using the
Windows API and should not use undocumented features or
functions. Applications using dynamic data exchange (DDE) should
follow the documented protocol and clean up memory and atoms, as
specified. Applications that parse file names might need to work
with long file names to be compatible with the High Performance
File System (HPFS).
PREVIOUS INSTANCE HANDLE: The previous instance handle passed to a
ported application is always NULL. Windows performs in a similar
manner to a shell under DOS, that is, it is aware of all the
applications that might be running under it. Because Mirrors is
simply an additional DLL running under OS/2 2.0, it cannot be aware
of all the other processes running under OS/2 management. Therefore,
Mirrors cannot determine whether any previous instances of the
application are running.
SYNCHRONIZATION BETWEEN APPLICATIONS: Under Windows, an application
does not relinquish control of the CPU until GetMessage or
PeekMessage is called. Under OS/2 2.0, an application can have
control taken away at any time because OS/2 2.0 is a preemptive
operating system. An application dependent upon Windows-style
operation might experience unexpected problems. For example, suppose
Program A calls the function LoadModule to start a second application
(Program B), and that Program A depends on data that Program B sets
prior to calling GetMessage. Under OS/2 2.0, Program A can continue
as soon as the LoadModule call is complete and prior to beginning
Program Bs execution. The program A and B must be synchronized with
a PM semaphore and the OS/2 function WinMsgSemWait.
SYNCHRONIZING APPLICATIONS THAT USE DDE: Applications that use a
PeekMessage loop to wait for a specific message to be posted from
another application should call Yield() before each call to
PeekMessage. This is commonly done when using DDE and the
application is waiting for a WM_DDE_ACK message in response to a
posted WM_DDE_DATA message. Because the applications are running in
a preemptive multitasking environment, it is difficult to determine
when a task will receive the CPU and how much CPU time a particular
task will receive for processing. Typically, the currently active
task has the highest priority and receives more CPU time than other
tasks. This can cause the task, which is awaiting response from a
server application, to timeout of its PeekMessage loop and assume a
negative acknowledgment. By calling Yield(), the application is
releasing its CPU time for other applications to run. This will
usually be enough time for the server application to process some
messages and post its acknowledgment.
For example:
dwTime = GetCurrentTime();
while (GetCurrentTime() -- dwTime < DDE_TIMEOUT)
{
Yield();
if (PeekMessage (&msg,hwnd,
WM_DDE_ACK,WM_DDE_ACK,PM_REMOVE))
USING C-COMPILER LIBRARY FUNCTIONS: If a function exists within the
Windows API or the Mirrors extensions to that API, use that function
rather than a similar function from the library of the compiler used
to develop the software. This is necessary to guarantee proper
operation of certain functions within the Windows environment. For
example, if a program uses the C function exit to terminate function
operation instead of using a return, memory might not be freed by
Windows or Mirrors, and the proper values might not be returned in
wParam and lParam.
REGISTERS AND DLL INITIALIZATION: OS/2 2.0 and Windows pass
initialization data in different registers. Mirrors must correct
this difference and provide an include file MIRDLL.INC, which must be
included as the first statement of the DLL initialization code. This
include file will set up the registers as if they were under Windows.
This file must be included if the DLL must receive the heapsize into
the CX register and the address of the command line into ES:SI.
ELIMINATING IMPROPER REGISTER USAGE: OS/2 2.0 has protected memory
and Windows does not. Addressing is handled differently between the
two systems. It is recommended not to assume the contents of the ES
register across calls.
In OS/2 2.0, values should not be stored into segment
registers that were not returned by calls to the operating system,
because segments are selectors, and selectors are owned by processes.
If an address value not assigned to the process is calculated, an
application will fail with a memory protection violation. In the
worst case, if the calculated value matches a value assigned to the
process, the contents of memory are destroyed but may not be
discovered until later during processing.
MULTIPLE DOCUMENT INTERFACE (MDI) DIFFERENCES: The RESTORE button
menu item for maximized MDI children (child windows) does not appear
entirely right-justified in the menu. However, the functionality is
not affected.
CODE PAGE DIFFERENCES: The Mirrors resource compiler can issue a
message similar to the following:
o Code page 437 incompatible with Windows.
The Developer's Migration Kit/2 resource compiler uses the
code page directive from the CONFIG.SYS file on the development
system. Not all OS/2 code pages are compatible with Windows. Code
page 437, frequently listed in this directive, is equivalent to the
default IBM or IBM-compatible personal computer code page in the
United States. This code page is not identical with the ANSI
character set that Windows uses. Therefore, the Developer's
Migration Kit/2 resource compiler issues a warning to notify the user
of possible differences.
Generally, code page 437 maps correctly. However, code page
850 is closer to the one used by Windows. It is recommended that
this code page be listed first in the code page directive of the OS/2
CONFIG.SYS on the development system, or that the -Gnnn option be
used when calling the Developer's Migration Kit/2 resource compiler.
FONT DIFFERENCES: Many Windows applications assume that the sum of
the extent of individual characters in a string is equal to the
extent of the string. This is true for Windows but might not be true
for OS/2 2.0. PM outline fonts support kerning pairs; Windows
outline fonts do not. If the application relies on this action in
Windows, it might need to be changed.
The following short code sample is an illustration.
DWORD 1CharSize = 0L;
DWORD 1StrSize = 0L;
1CharSize = LOWORD(GetTextExtent(hDC,"M",1));
1CharSize += LOWORD(GetTextExtent(hDC,"1",1));
1StrSize = LOWORD(GetTextExtent(hDC,"M1",2));
lCharSize will not always equal lStrSize in a ported Mirrors
application.
FONT MAPPING: The fonts available to the ported application when it
is run under OS/2 2.0 is different from those available under
Windows. Some mapping must be done. The mapping algorithm used by
Mirrors is the same as the font-mapping algorithm described in the
Windows documentation.
This means that the font chosen will be the same font that
Windows would have chosen if the font had been available. For
example, the algorithm maps a Modern vector font to a Courier outline
font, which is what Windows does if it were presented with the same
set of choices.
Under Windows, outline and bit-map fonts do not have the same
name. However, it is possible under OS/2 2.0 to have a font named
HELV for both a bit map and an outline font. To prevent confusion
for the ported application, Mirrors renames the outline fonts under
Presentation Manager to append the string "outline" so that the
ported Windows application can differentiate between the two.
PRINTER PROPERTIES AND JOB PROPERTIES: Properties associated with
printers are conceptually different between OS/2 2.0 and Windows.
The Presentation Manager design has two categories of information
associated with printers, printer properties and job properties.
Printer properties involve more permanent aspects of the printer such
as whether a printer has a tractor feed or not. Job properties are
properties that can easily change between output such as printing in
landscape or portrait orientation.
In the ported Windows application, all references to the
function DeviceMode should be changed to ExtDeviceMode.
Initialization data obtained from this function should be saved and
passed back to the CreateIC or CreateOC functions, which allow the
program to change job properties such as orientation on a per-job
basis rather than on a system-wide basis.
THUNKING AND PACKED SEGMENTS: Mirrors must accomplish a certain
amount of thunking to account for the different addressing schemes
between the 32-bit memory model of OS/2 2.0 and the 16-bit world of
Windows applications. Mirrors uses and expects a tiled memory scheme
where the 16-bit segment addresses are evenly mapped into 64KB blocks
in the 32-bit global memory. Because data segments are handled
transparently by Mirrors, most programmers do not need to give this
any attention. However, some programs attempt to use a scheme to
read and write data from code segments. These code segments do not
follow the same tiled-memory addressing scheme as data segments.
Instead, they often follow a packed scheme. Mirrors cannot correctly
calculate the address to data placed in a code segment.
If an application keeps data in a code segment, then the
application is responsible for maintaining this data. It is strongly
recommended that the application be modified to keep data in a data
segment.
CALLBACK FUNCTIONS
All window and dialog callback functions must be exported in the DEF
file. Utility programs, such as FIXDS that modifies the executable
file, will not work and should not be used.
Because of the differences in stacksize requirements for a
Windows application and a ported application, MIRDEF modifies the
stacksize used during the link process.
OS/2 APPLICATION ICONS
The icon, which OS/2 2.0 displays in a folder for the executable
file, is determined by the following search order. Notice that the
first icon found is used.
1. ICON extended attribute.
2. ICO file in the same directory as the executable file with the
same prefix.
3. Application-specific icon if PM or Windows executable file. The
lowest-numbered icon or pointer resource.
4. PM application icon (if executable), Windows application icon (if
executable), OS/2 application icon (if OS/2 full-screen only
executable), OS/2 window icon (if OS/2 window-compatible
executable), DOS window icon (if DOS window executable), or
program application icon (if unknown type executable).
It is recommended that an application icon be defined as the
lowest-numbered icon or cursor resource in your resource file.
SHARED MEMORY AMONG PROCESSES
The concepts of processes and threads are new to many Windows
programmers. A program executing within the DOS and Windows
environment can be thought of as a single process with a single
thread of execution. Access to system resources is shared among
individual programs without strict controls. An executable file
within OS/2 2.0 is a single process, but that process can have many
threads of execution within it. Because OS/2 2.0 is a true
multitasking system, access to system resources is managed much more
closely. The granularity of memory management is at the process
level in OS/2 2.0 rather than at the program level as in DOS or
Windows. Separate executing programs are not simply different
threads of execution; they are different processes entirely and
cannot overlap system resources without explicit declaration.
Separate programs running under DOS or Windows can share
blocks of memory because of the rather free manner in which DOS or
Windows manage access to memory. Essentially, if a program can
obtain a handle to a system resource such as global memory, that
program can access that memory even though it was not allocated by
the program. However, due to the tighter controls that OS/2 2.0
places on memory, programs that might have acted together in a
coordinated manner under the DOS and Windows combination might act
differently under OS/2 2.0. A program cannot simply access memory
anywhere in the system by using a memory handle.
Under OS/2 2.0, memory that belongs to one process cannot be
shared with another process without explicit declaration. This
difference in memory management between the two environments can be
overcome by following the coding suggestions below:
o Techniques for sharing memory among programs running under
Windows are already defined. When memory is allocated in Windows
with GlobalAlloc, a flag can be used to mark it as shared DDE
memory. If DDE-shared memory is used by more than one process in
the ported applications, the flag GMEM_DDESHARE must be used.
This is sufficient for the DOS or Windows environment.
o To permit proper access to that memory for the ported application
running under OS/2 2.0, the function GlobalLock must also be
called. If GlobalLock is called with a handle to memory
allocated as GMEM_DDESHARE, Mirrors causes OS/2 2.0 to give that
process access to the memory.
o The coding practice works in both the Windows and OS/2
environments. That is, although some changes to code might be
necessary to make a Windows application portable, these changes
will not cause an application to work differently when recompiled
for Windows. It will act the same in both environments.
Conditional compiling or maintaining two versions of an
application is not necessary.
LIBRARY MANAGEMENT
The conceptual model for shared memory also applies to the
differences between Windows and OS/2 2.0 for the management of access
to libraries. In Windows, a program can gain access to a DLL simply
by obtaining a handle to that DLL. In OS/2 2.0, libraries must be
explicitly linked against a process for the DLL to become available
to that process. It can also become available to a process at run
time by calling LoadLibrary.
ALPHABETICAL REFERENCE FOR WINDOWS FUNCTIONS
An alphabetical list is provided of all the functions that are part
of the Windows environment. Each function is either fully supported,
marked as supported with change, as extended support, or not
supported.
Fully supported functions perform as they would under
Windows. Refer to the Windows Software Development Kit for
descriptions of these functions.
FUNCTION FUNCTIONAL AREA SUPPORT STATUS
_lclose File I/O
_lcreat File I/O
_llseek File I/O
_lopen File I/O
_lread File I/O
_lwrite File I/O
AccessResource Resource management Not supported
AddAtom Atom management
AddFontResource Font
AdjustWindowRect Window creation
AdjustWindowRectEx Window creation
AllocDStoCSAlias Segment Not supported
AllocResource Resource management Not supported
AllocSelector Segment Not supported
AnimatePalette Color palette
AnsiLower String manipulation
AnsiLowerBuff String manipulation
AnsiNext String manipulation
AnsiPrev String manipulation
AnsiToOem String manipulation
AnsiToOemBuff String manipulation
AnsiUpper String manipulation
AnsiUpperBuff String manipulation
AnyPopup Information
AppendMenu Menu
Arc Line output
ArrangeIconic-
Windows Display/movement
BeginDefer-
WindowPos Display/movement
BeginPaint Painting
BitBlt Bit map
BringWindowToTop Display/movement
BuildCommDCB Communication Not supported
CallMsgFilter Hook Supported w/change
CallWindowProc Message
Catch Task
ChangeClipboard-
Chain Clipboard Supported w/change
ChangeMenu Menu
ChangeSelector Segment Not supported
CheckDlgButton Dialog box
CheckMenuItem Menu
CheckRadioButton Dialog box
ChildWindowFrom-
Point Coordinate/Info
Chord Ellipse & polygon
ClearCommBreak Communication Not supported
ClientToScreen Coordinate
ClipCursor Cursor
CloseClipboard Clipboard
CloseComm Communication Not supported
CloseMetaFile Metafile
CloseSound Sound Not supported
CloseWindow Display/movement
CombineRgn Region
CopyMetaFile Metafile
CopyRect Rectangle
CountClipboard-
Formats Clipboard
CountVoiceNotes Sound Not supported
CreateBitmap Bit map
CreateBitmap-
Indirect Bit map
CreateBrush-
Indirect Drawing tool
CreateCaret Caret
CreateCompatible-
Bitmap Bit map
CreateCompatibleDC Device context
CreateCursor Cursor
CreateDC Device context
CreateDialog Dialog box
CreateDialog-
Indirect Dialog box
CreateDialog-
IndirectParam Dialog box
CreateDialogParam Dialog box
CreateDIBitmap Device-ind. bit map
CreateDIBPattern-
Brush Drawing tool
CreateDiscardable-
Bitmap Bit map
CreateEllipticRgn Region
CreateEllipticRgn-
Indirect Region
CreateFont Font Supported w/change
CreateFontIndirect Font Supported w/change
CreateHatchBrush Drawing tool Supported w/change
CreateIC Device context
CreateIcon Painting
CreateMenu Menu
CreateMenuIndirect Menu Not supported
CreateMetaFile Metafile
CreateOC Device context Supported w/change
CreatePalette Color palette
CreatePatternBrush Drawing tool
CreatePen Drawing tool
CreatePenIndirect Drawing tool
CreatePoly-
PolygonRgn Region
CreatePolygonRgn Region
CreatePopupMenu Menu
CreateRectRgn Region
CreateRectRgn-
Indirect Region
CreateRoundRectRgn Region
CreateSolidBrush Drawing tool
CreateWindow Window creation
CreateWindowEx Window creation
DebugBreak Debugging
DefDlgProc Dialog box/
Window creation
DeferWindowPos Display/movement
DefFrameProc Window creation
DefHookProc Hook Supported w/change
DefineHandleTable Memory management Not supported
DefMDIChildProc Window creation
DefWindowProc Window creation
DeleteAtom Atom management
DeleteDC Device context
DeleteMenu Menu
DeleteMetaFile Metafile
DeleteObject Drawing tool
DestroyCaret Caret
DestroyCursor Cursor
DestroyIcon Painting
DestroyMenu Menu
DestroyWindow Window creation
DeviceCapabilities Printer control Supported w/change
DeviceMode Printer control
DialogBox Dialog box
DialogBoxIndirect Dialog box
DialogBoxIndirect-
Param Dialog box
DialogBoxParam Dialog box
DispatchMessage Message
DlgDirList Dialog box
DlgDirListComboBox Dialog box
DlgDirSelect Dialog box
DlgDirSelect-
ComboBox Dialog box Supported w/change
DOS3CALL OS interrupt
DPtoLP Coordinate
DrawFocusRect Ellipse & Polygon/
Painting
DrawIcon Painting
DrawMenuBar Menu
DrawText Painting
Ellipse Ellipse & polygon
EmptyClipboard Clipboard
EnableHardware-
Input Hardware
EnableMenuItem Menu
EnableWindow Input
EndDeferWindowPos Display/movement
EndDialog Dialog box
EndPaint Painting
EnumChildWindows Information Supported w/change
EnumClipboard-
Formats Clipboard
EnumFonts Font
EnumMetaFile Metafile Not supported
EnumObjects Drawing tool
EnumProps Property Supported w/change
EnumTaskWindows Information
EnumWindows Information
EqualRect Rectangle
EqualRgn Region
Escape Printer escape
EscapeCommFunction Communication Not supported
ExcludeClipRect Clipping
ExcludeUpdateRgn Painting
ExitWindows Task Supported w/change
ExtDeviceMode Printer control Supported w/change
ExtFloodFill Bit map
ExtTextOut Text
FatalAppExit Debugging
FatalExit Debugging
FillRect Painting
FillRgn Region
FindAtom Atom management
FindResource Resource management
FindWindow Information
FlashWindow Error
FloodFill Bit map
FlushComm Communication Not supported
FrameRect Painting
FrameRgn Region
FreeLibrary Module management
FreeModule Module management
FreeProcInstance Module management
FreeResource Resource management
FreeSelector Segment Not supported
GetActiveWindow Input
GetAspect-
RatioFilter Font
GetAsyncKeyState Hardware
GetAtomHandle Atom management
GetAtomName Atom management
GetBitmapBits Bit map
GetBitmap-
Dimension Bit map
GetBkColor Drawing attribute
GetBkMode Drawing attribute
GetBrushOrg Drawing tool
GetCapture Input
GetCaretBlinkTime Caret
GetCaretPos Caret
GetCharWidth Font
GetClassInfo Window creation
GetClassLong Window creation
GetClassName Window creation
GetClassWord Window creation
GetClientRect Display/movement
GetClipboardData Clipboard
GetClipboard-
FormatName Clipboard
GetClipboardOwner Clipboard
GetClipboardViewer Clipboard
GetClipBox Clipping
GetCodeHandle Module management Not supported
GetCodeInfo Segment Not supported
GetCommError Communication Not supported
GetCommEventMask Communication Not supported
GetCommState Communication Not supported
GetCurrentPDB Task Not supported
GetCurrentPosition Line output
GetCurrentTask Task
GetCurrentTime System
GetCursorPos Cursor
GetDC Painting
GetDCOrg Device context
GetDesktopWindow Information
GetDeviceCaps Information
GetDialogBaseUnits Dialog box
GetDIBits Device-ind. bit map
GetDlgCtrlID Dialog box
GetDlgItem Dialog box
GetDlgItemInt Dialog box
GetDlgItemText Dialog box
GetDOSEnvironment Task
GetDoubleClickTime Input
GetDriveType File I/O
GetEnvironment Environment
GetFocus Input
GetFreeSpace Memory management
GetInputState Hardware
GetInstanceData Module management Not supported
GetKBCodePage Hardware
GetKeyboardState Hardware
GetKeyboardType Hardware
GetKeyNameText Hardware Not supported
GetKeyState Hardware
GetLastActivePopup Window creation
GetMapMode Mapping
GetMenu Menu
GetMenuCheckMark
Dimensions Menu
GetMenuItemCount Menu
GetMenuItemID Menu
GetMenuState Menu
GetMenuString Menu
GetMessage Message Supported w/change
GetMessagePos Message
GetMessageTime Message
GetMetaFile Metafile
GetMetaFileBits Metafile Supported w/change
GetModuleFileName Module management
GetModuleHandle Module management
GetModuleUsage Module management
GetNearestColor Color palette
GetNearestPalette-
Index Color palette
GetNextDlg-
GroupItem Dialog box
GetNextDlgTabItem Dialog box
GetNextWindow Information
GetNumTasks Task
GetObject Drawing tool
GetPaletteEntries Color palette
GetParent Information
GetPixel Bit map
GetPolyFillMode Drawing attribute
GetPriority-
ClipboardFormat Clipboard
GetPrivate-
ProfileInt Initialization file
GetPrivate-
ProfileString Initialization file Supported w/change
GetProcAddress Module management
GetProfileInt Initialization file
GetProfileString Initialization file Supported w/change
GetProp Property
GetRgnBox Region
GetROP2 Drawing attribute
GetScrollPos Scrolling
GetScrollRange Scrolling
GetStockObject Drawing tool
GetStretchBltMode Drawing attribute
GetSubMenu Menu
GetSysColors System Supported w/change
GetSysModalWindow Information
GetSystemDirectory File I/O
GetSystemMenu Menu
GetSystemMetrics System Supported w/change
GetSystem-
PaletteEntries Color palette
GetSystem-
PaletteUse Color palette
GetTabbed-
TextExtent Text
GetTempDrive File I/O
GetTempFileName File I/O
GetTextAlign Text
GetTextCharacter-
Extra Text
GetTextColor Drawing attribute
GetTextExtent Text
GetTextFace Text
GetTextMetrics Text
GetThresholdBuffer Sound Not supported
GetThresholdEvent Sound Not supported
GetThresholdStatus Sound Not supported
GetTickCount Input
GetTopWindow Information
GetUpdateRect Painting
GetUpdateRgn Painting
GetVersion Module management
GetViewportExt Mapping
GetViewportOrg Mapping
GetWindow Information
GetWindowDC Painting
GetWindowExt Mapping
GetWindowLong Window creation
GetWindowOrg Mapping
GetWindowRect Display/movement
GetWindows-
Directory File I/O
GetWindowTask Information
GetWindowText Display/movement
GetWindow-
TextLength Display/movement
GetWindowWord Window creation
GetWinFlags Memory management Extended support
Global16Pointer-
Alloc WINMEM32.DLL Not supported
Global16Pointer-
Free WINMEM32.DLL Not supported
Global32Alloc WINMEM32.DLL Not supported
Global32CodeAlias WINMEM32.DLL Not supported
Global32Code-
AliasFree WINMEM32.DLL Not supported
Global32Free WINMEM32.DLL Not supported
Global32Realloc WINMEM32.DLL Not supported
GlobalAddAtom Atom management
GlobalAlloc Memory management Supported w/change
GlobalCompact Memory management Not supported
GlobalDeleteAtom Atom management
GlobalDiscard Memory management Not supported
GlobalDosAlloc Memory management Not supported
GlobalDosFree Memory management Not supported
GlobalFindAtom Atom management
GlobalFix Segment Not supported
GlobalFlags Memory management
GlobalFree Memory management
GlobalGetAtomName Atom management
GlobalHandle Memory management Supported w/change
GlobalLock Memory management
GlobalLRUNewest Memory management
GlobalLRUOldest Memory management
GlobalNotify Memory management Not supported
GlobalPageLock Segment Not supported
GlobalPageUnlock Segment Not supported
GlobalReAlloc Memory management
GlobalSize Memory management
GlobalUnfix Segment Not supported
GlobalUnlock Memory management
GlobalUnwire Memory management Supported w/change
GlobalWire Memory management Supported w/change
GrayString Painting
HideCaret Caret
HiliteMenuItem Menu
InflateRect Rectangle
InitAtomTable Atom management
InSendMessage Message
InsertMenu Menu
IntersectClipRect Clipping
IntersectRect Rectangle
InvalidateRect Region
InvalidateRgn Painting
InvertRect Painting
InvertRgn Region
IsCharAlpha String manipulation
IsCharAlphaNumeric String manipulation
IsCharLower String manipulation
IsCharUpper String manipulation
IsChild Information
IsClipboard-
FormatAvailable Clipboard
IsDialogMessage Dialog box
IsDlgButtonChecked Dialog box
IsIconic Display/movement
IsRectEmpty Rectangle
IsWindow Information
IsWindowEnabled Input
IsWindowVisible Display/movement
IsZoomed Display/movement
KillTimer Input
LimitEMSPages Memory management Not supported
LineDDA Line output
LineTo Line output
LoadAccelerators Resource management
LoadBitmap Bit map/Resource mgmt
LoadCursor Cursor/Resource mgmt
LoadIcon Resource management
LoadLibrary Module management Supported w/change
LoadMenu Resource management
LoadMenuIndirect Menu Not supported
LoadModule App. execution
LoadResource Resource management
LoadString Resource management
LocalAlloc Memory management
LocalCompact Memory management
LocalDiscard Memory management
LocalFlags Memory management
LocalFree Memory management
LocalHandle Memory management
LocalInit Memory management
LocalLock Memory management
LocalReAlloc Memory management Supported w/change
LocalShrink Memory management
LocalSize Memory management
LocalUnlock Memory management
LockResource Resource management
LockSegment Memory management
LPtoDP Coordinate
lstrcat String manipulation
lstrcmp String manipulation
lstrcmpi String manipulation
lstrcpy String manipulation
lstrlen String manipulation
MakeProcInstance Module management
MapDialogRect Dialog box
MapVirtualKey Hardware
MessageBeep Error
MessageBox Error/Message Supported w/change
ModifyMenu Menu
MoveTo Line output
MoveWindow Display/movement
NetBIOSCall OS interrupt Not supported
OemKeyScan Hardware
OemToAnsi String manipulation
OemToAnsiBuff String manipulation
OffsetClipRgn Clipping
OffsetRect Rectangle
OffsetRgn Region
OffsetViewportOrg Mapping
OffsetWindowOrg Mapping
OpenClipboard Clipboard
OpenComm Communication Not supported
OpenFile File I/O
OpenIcon Display/movement
OpenSound Sound Not supported
OutputDebugString Debugging
PaintRgn Region
PatBlt Bit map
PeekMessage Message Supported w/change
Pie Ellipse & polygon
PlayMetaFile Metafile
PlayMetaFileRecord Metafile Not supported
Polygon Ellipse & polygon
Polyline Line output
PolyPolygon Region Supported w/change
PostAppMessage Message
PostMessage Message
PostQuitMessage Message
ProfClear Optimization tool Not supported
ProfFinish Optimization tool Not supported
ProfFlush Optimization tool Not supported
ProfInsChk Optimization tool Not supported
ProfSampRate Optimization tool Not supported
ProfSetup Optimization tool Not supported
ProfStart Optimization tool Not supported
ProfStop Optimization tool Not supported
PtInRect Rectangle
PtInRegion Region
PtVisible Clipping
ReadComm Communication Not supported
RealizePalette Color palette
Rectangle Ellipse & polygon
RectInRegion Region
RectVisible Clipping
RegisterClass Window creation Supported w/change
Register-
ClipboardFormat Clipboard
Register-
WindowMessage Message
ReleaseCapture Input
ReleaseDC Painting
RemoveFontResource Font
RemoveMenu Menu
RemoveProp Property
ReplyMessage Message
ResizePalette Color palette
Resource Resource management
RestoreDC Device context
RoundRect Ellipse & polygon
SaveDC Device context
ScaleViewportExt Mapping
ScaleWindowExt Mapping
ScreenToClient Coordinate
ScrollDC Scrolling
ScrollWindow Scrolling
SelectClipRgn Clipping
SelectObject Drawing tool
SelectPalette Color palette
SendDlgItemMessage Dialog box
SendMessage Message Supported w/change
SetActiveWindow Input
SetBitmapBits Bit map
SetBitmapDimension Bit map
SetBkColor Drawing attribute
SetBkMode Drawing attribute
SetBrushOrg Drawing tool
SetCapture Input
SetCaretBlinkTime Caret
SetCaretPos Caret
SetClassLong Window creation
SetClassWord Window creation Supported w/change
SetClipboardData Clipboard
SetClipboardViewer Clipboard Supported w/change
SetCommBreak Communication Not supported
SetCommEventMask Communication Not supported
SetCommState Communication Not supported
SetCursor Cursor
SetCursorPos Cursor
SetDIBits Device-ind. bit map
SetDIBitsToDevice Device-ind. bit map
SetDlgItemInt Dialog box
SetDlgItemText Dialog box
SetDoubleClickTime Input
SetEnvironment Environment Supported w/change
SetErrorMode Task
SetFocus Input Supported w/change
SetHandleCount File I/O
SetKeyboardState Hardware
SetMapMode Mapping
SetMapperFlags Font
SetMenu Menu
SetMenuItemBitmaps Menu
SetMessageQueue Message Supported w/change
SetMetaFileBits Metafile Supported w/change
SetPaletteEntries Color palette
SetParent Information
SetPixel Bit map
SetPolyFillMode Drawing attribute
SetProp Property
SetRect Rectangle
SetRectEmpty Rectangle
SetRectRgn Region
SetResourceHandler Resource management Not supported
SetROP2 Drawing attribute
SetScrollPos Scrolling
SetScrollRange Scrolling
SetSoundNoise Sound Not supported
SetStretchBltMode Drawing attribute
SetSwapAreaSize Memory management
SetSysColors System
SetSysModalWindow Input
SetSystem-
PaletteUse Color palette
SetTextAlign Text
SetTextCharacter-
Extra Text
SetTextColor Drawing attribute
SetText-
Justification Text
SetTimer Input
SetViewportExt Mapping
SetViewportOrg Mapping
SetVoiceAccent Sound Not supported
SetVoiceEnvelope Sound Not supported
SetVoiceNote Sound Not supported
SetVoiceQueueSize Sound Not supported
SetVoiceSound Sound Not supported
SetVoiceThreshold Sound Not supported
SetWindowExt Mapping
SetWindowLong Window creation
SetWindowOrg Mapping
SetWindowPos Display/movement
SetWindowsHook Hook Supported w/change
SetWindowText Display/movement
SetWindowWord Window creation
ShowCaret Caret
ShowCursor Cursor
ShowOwnedPopups Display/movement
ShowScrollBar Scrolling
ShowWindow Display/movement
SizeofResource Resource management
StartSound Sound Not supported
StopSound Sound Not supported
StretchBlt Bit map
StretchDIBits Device-ind. bit map
SwapMouseButton Input
SwapRecording Optimization tool Not supported
SwitchStackBack Memory management Not supported
SwitchStackTo Memory management Not supported
SyncAllVoices Sound Not supported
TabbedTextOut Text
TextOut Text
Throw String manip./Task
ToAscii String manipulation
TrackPopupMenu Menu
Translate-
Accelerator Message
Translate-
MDISysAccel Message
TranslateMessage Message
TransmitCommChar Communication Not supported
UngetCommChar Communication Not supported
UnhookWindowsHook Hook Supported w/change
UnionRect Rectangle
UnlockResource Resource management
UnlockSegment Segment Not supported
UnrealizeObject Drawing tool
UnregisterClass Window creation
UpdateColors Color palette
UpdateWindow Painting
ValidateCode-
Segments Debugging Not supported
ValidateFreeSpaces Debugging Not supported
ValidateRect Painting
ValidateRgn Region
VkKeyScan Hardware
WaitMessage Message
WaitSoundState Sound Not supported
WindowFromPoint Coordinate/Info.
WinExec Application execution
WinHelp Application execution
WriteComm Communication Not supported
WritePrivate-
ProfileString Initialization file Supported w/change
WriteProfileString Initialization file
wsprintf String manipulation
wvsprintf String manipulation
Yield Task
PLANNING INFORMATION
CUSTOMER RESPONSIBILITIES: Customers should be aware of the
technical limitations of the IBM Developer's Migration Kit/2 before
purchase. The previously discussed restrictions should be
communicated so that the customer is able to estimate the amount of
work required for a successful port. The ship-group documentation,
also available separately, provides further information on
pre-migration considerations.
DEVELOPER ASSISTANCE: IBM is dedicated to supporting software
developers and to sharing knowledge and experience for the continued
growth of IBM OS/2 in the dynamic world of personal computing. The
IBM Developer Assistance Program provides technical information and
assistance to help developers design and develop products for IBM
Operating System/2 (R). The IBM Developer Assistance Program is for
developers working on products for commercial release. Information
about this program and the availability of technical workshops can be
obtained by calling (407) 982-6408.
(R) Registered trademark of International Business Machines
Corporation.
INSTALLABILITY:
PACKAGING: The IBM Developer's Migration Kit/2 program package
contains the following:
o IBM Program License Agreement
o Proof of License
o Registration Card
o License Information
o Change of Address Card
o One 3.5-inch double-sided (1.44MB) diskette
o One 5.25-inch double-sided (1.2MB) diskette
o Application Migration Guide and Reference
SECURITY, AUDITABILITY AND CONTROL
User management is responsible for evaluation, selection and
implementation of security features, administrative procedures and
appropriate controls in application systems and communication
facilities.
ORDERING ORDERING INFORMATION
Orders for new licenses will be accepted now.
Unless a later date is specified, orders entered prior to
August 18, 1992, will be assigned a schedule date of August 28, 1992.
Shipment of orders will commence on August 18, 1992. Orders entered
after August 18, 1992, will be scheduled for shipment on the Friday
following the week of order entry or as soon thereafter as supply
permits.
To order the programs in this announcement for order type,
specify the order type number, feature number, part number, program
name, media and quantity.
To order the programs in this announcement for type model,
specify the type model number, order type description, asset feature
number, media feature number, one-time charge feature number, media
and quantity.
Order
Type Feature Part
Number Number Number Program Name Media
5871-AAA 3111 41G2943 IBM Developer's
Migration Kit/2 Dual
o Program Package -- program diskette with documentation.
TERMS AND CONDITIONS
LICENSING: The program in this announcement is licensed under the
terms and conditions of the IBM Program License Agreement. A copy of
the agreement is included in the program package.
LIMITED WARRANTY: Program: Yes. Media: Three months.
PROGRAM SERVICES: Central Service will be available until
July 28, 1994. Programs in this announcement are supported by the
Personal Systems Support Center in Dallas, TX, (technical and
installation support) and the IBM Support Center in Austin, TX,
(defect support). The statement of service included in the program
package describes this service.
CUSTOMER FULFILLMENT OPTION: Yes.
VOLUME DISCOUNT: Volume discounting is available under the terms and
conditions of the IBM Customer Agreement (ICA) and the Exhibit for
Personal Computer/System Programs. The programs in this announcement
are included in the Eligible Program List for Personal
Computer/System Programs. They may be added to the applicable
category in the space provided on the Eligible Program List. Program
Packages are included in Category A under 5871-AAA.
TESTING PERIOD: Two months for up to three licenses.
IBM Customer Agreement (ICA) must be in effect.
NATIONAL EDUCATION LICENSE FEE: A National Education License Fee
(NELF) is available under the terms and conditions of the Education
Allowance Attachment . The NELF, which represents a 30% discount off
the single unit price, is not subject to any further discount or
allowance.
CHARGES
PROGRAM ONE-TIME
NAME/NUMBER ORDER TYPE CHARGE
IBM Developer's
Migration Kit/2
41G2943 Program Package $299