home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c495 / 5.ddi / WATCM955.ARJ / DLL.SDK / DLL32.C < prev    next >
Encoding:
C/C++ Source or Header  |  1993-02-16  |  1.8 KB  |  67 lines

  1. /*
  2.  *  DLL32.C
  3.  *
  4.  *  Compile:    wcc386 dll32 /zw /d2
  5.  *  Link:    wlink @dll32
  6.  *  Bind:    wbind dll32 -d -n
  7.  */
  8. #include <windows.h>    /* required for all Windows applications */
  9. #include <dos.h>
  10.  
  11. int FAR PASCAL Lib1( WORD w1, DWORD w2, WORD w3 )
  12. {
  13.   char buf[128];
  14.  
  15.   sprintf( buf, "Lib1: w1=%hx, w2=%lx, w3=%hx", w1, w2, w3 );
  16.   MessageBox( NULL, buf, "DLL32", MB_OK | MB_TASKMODAL );
  17.   return( w1 + w2);
  18. }
  19.  
  20. int FAR PASCAL Lib2( DWORD w1, WORD w2 )
  21. {
  22.   char buf[128];
  23.  
  24.   sprintf( buf, "Lib2: w1=%lx, w2=%hx", w1, w2 );
  25.   MessageBox( NULL, buf, "DLL32", MB_OK | MB_TASKMODAL );
  26.   return( w1 + 1 );
  27. }
  28.  
  29. int FAR PASCAL Lib3( LPSTR data, WORD a, WORD b,
  30.              DWORD d1, WORD c, DWORD d2 )
  31. {
  32.   char far *str;
  33.   char buf[128];
  34.  
  35.   str = MK_FP32( data );
  36.   sprintf( buf, "Lib3: string ==>%Fs<==", str );
  37.   MessageBox( NULL, buf, "DLL32", MB_OK | MB_TASKMODAL );
  38.   sprintf( buf, "Lib3: a=%hd, b=%hd, c=%hd", a, b, c );
  39.   MessageBox( NULL, buf, "DLL32", MB_OK | MB_TASKMODAL );
  40.   sprintf( buf, "Lib3: d1=%lx, d2=%lx", d1, d2 );
  41.   MessageBox( NULL, buf, "DLL32", MB_OK | MB_TASKMODAL );
  42.   return( d1 + d2 );
  43. }
  44.  
  45. extern void BreakPoint( void );
  46. #pragma aux BreakPoint = 0xcc;
  47.  
  48. extern short GetSS( void );
  49. #pragma aux GetSS = 0x8C 0xD0 value[ax];
  50.  
  51. int PASCAL WinMain( HANDLE hInstance, HANDLE x1, LPSTR lpCmdLine, int x2 )
  52. {
  53.   short i;
  54.   char buf[128];
  55.  
  56.   BreakPoint();
  57.   DefineDLLEntry( 1, (void *) Lib1, DLL_WORD, DLL_DWORD, DLL_WORD,
  58.               DLL_ENDLIST );
  59.   DefineDLLEntry( 2, (void *) Lib2, DLL_DWORD, DLL_WORD, DLL_ENDLIST );
  60.   DefineDLLEntry( 3, (void *) Lib3, DLL_PTR, DLL_WORD, DLL_WORD,
  61.               DLL_DWORD, DLL_WORD, DLL_DWORD, DLL_ENDLIST );
  62.   i = GetSS();
  63.   sprintf( buf, "DLL32 Started, SS=%hx", i );
  64.   MessageBox( NULL, buf, "DLL32", MB_OK | MB_TASKMODAL );
  65.   return( 1 );
  66. }
  67.