home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional Developers Kit 1992 November / Disc01 / Disc01.mdf / cppbeta / samples / sam04l / read.me_ / READ.ME
Encoding:
Text File  |  1992-04-01  |  3.2 KB  |  55 lines

  1. ******************************************************************************
  2. * SAMPLE PROGRAM 04: READ.ME                                                 *
  3. *                                                                            *
  4. * COPYRIGHT:                                                                 *
  5. * ----------                                                                 *
  6. * Copyright (C) International Business Machines Corp., 1991,1992.            *
  7. *                                                                            *
  8. * DISCLAIMER OF WARRANTIES:                                                  *
  9. * -------------------------                                                  *
  10. * The following [enclosed] code is sample code created by IBM                *
  11. * Corporation.  This sample code is not part of any standard IBM product     *
  12. * and is provided to you solely for the purpose of assisting you in the      *
  13. * development of your applications.  The code is provided "AS IS",           *
  14. * without warranty of any kind.  IBM shall not be liable for any damages     *
  15. * arising out of your use of the sample code, even if they have been         *
  16. * advised of the possibility of such damages.                                *
  17. *                                                                            *
  18. ******************************************************************************
  19.  
  20. This sample program shows how to call 16-bit routines from a 32-bit
  21. program.  The 16-bit routines are placed in two DLLs.  One of these is bound
  22. to the EXE at load time, by using IMPLIB to build an import library.  The
  23. other is bound at run-time, by using the DosLoadModule/DosQueryProcAddr
  24. APIs.
  25.  
  26. The intent of this sample is to show how to call 16-bit routines for which
  27. the source is not available, or which has not yet been converted to 32-bit.
  28. The routines in XYZZY16.DLL have the source given for example purposes, but
  29. the mechanisms used to call the routines easily generalise to cases where
  30. the source is not available.
  31.  
  32. The routines plugh1() and plugh2() are straightforward examples of how to
  33. call 16-bit routines directly.  plugh1() sets a global variable shared
  34. between the 16-bit and 32-bit routines.  plugh2() sets a pointer which is
  35. passed as a parameter.
  36.  
  37. plugh3() shows how to do a 16->32 callback, a technique which is
  38. necessary when a user function is to be passed to a 16-bit routine with
  39. the intent that the user function will then be called from the 16-bit
  40. routine.  This technique is used, for example, with Communications
  41. Manager and Lan Services.  The user-supplied routine is declared using
  42. a 16-bit calling convention, but the routine is actaully run as a 32-bit
  43. task.
  44.  
  45. plugh4() shows how to dynamically load a routine at run time.  It uses
  46. OS/2 APIs to load a DLL and to query the address of the function which
  47. it wishes to call.  It calls this routine through the function pointer
  48. returned by OS/2.
  49.  
  50. When this program is run, it should print out the first four lines of
  51. Blake's _Jerusalem_.
  52.  
  53. The build procedure assumes that you have a 16-bit compiler installed on your
  54. machine, with all the necessary INCLUDE and LIB paths setup properly.
  55.