/* * DLL16.C * * Compile: wcc dll16 /mc /zu /zc /bd /bt=windows /d2 * C++ Compile: wpp dll16 /mc /zu /zc /bd /bt=windows /d2 * Link: wlink @dll16 * DLL16.LNK: debug all * system windows dll initinstance memory * file dll16 * option oneautodata * option map * option heapsize=32K * libfile libentry */ #include #ifdef __cplusplus #include #include #else #include #endif #include extern void BreakPoint( void ); #pragma aux BreakPoint = 0xcc; extern short GetSS( void ); #pragma aux GetSS = 0x8C 0xD0 value[ax]; #pragma off (unreferenced); BOOL FAR PASCAL LibMain( HINSTANCE hInstance, WORD wDataSegment, WORD wHeapSize, LPSTR lpszCmdLine ) #pragma on (unreferenced); { short i; char buf[128]; //BreakPoint(); i = GetSS(); #ifdef __cplusplus { ostrstream sout( buf, sizeof( buf ) ); sout << "DLL16 Started, SS=" << hex << i << ends; MessageBox( NULL, sout.str(), "DLL16", MB_OK | MB_TASKMODAL ); } #else sprintf( buf, "DLL16 Started, SS=%hx", i ); MessageBox( NULL, buf, "DLL16", MB_OK | MB_TASKMODAL ); #endif return( 1 ); } #ifdef __cplusplus extern "C" #endif long __export FAR PASCAL Lib1( WORD a, LONG b, WORD c, WORD d, LONG e ) { char buf[128]; //BreakPoint(); #ifdef __cplusplus { ostrstream sout( buf, sizeof( buf ) ); sout << hex << "Lib1: a=" << a << ", b=" << b << ", c=" << c << ", d=" << d << ", e=" << e << ends; MessageBox( NULL, sout.str(), "DLL16", MB_OK | MB_TASKMODAL ); } #else sprintf( buf, "Lib1: a=%hx, b=%lx, c=%hx, d=%hx, e=%lx", a, b, c, d, e ); MessageBox( NULL, buf, "DLL16", MB_OK | MB_TASKMODAL ); #endif return( a + b + c + d + e ); } #ifdef __cplusplus extern "C" #endif long __export FAR CDECL Lib2( WORD a, LONG b, WORD c, WORD d, LONG e ) { char buf[128]; //BreakPoint(); #ifdef __cplusplus { ostrstream sout( buf, sizeof( buf ) ); sout << hex << "Lib2: a=" << a << ", b=" << b << ", c=" << c << ", d=" << d << ", e=" << e << ends; MessageBox( NULL, sout.str(), "DLL16", MB_OK | MB_TASKMODAL ); } #else sprintf( buf, "Lib2: a=%hx, b=%lx, c=%hx, d=%hx, e=%lx", a, b, c, d, e ); MessageBox( NULL, buf, "DLL16", MB_OK | MB_TASKMODAL ); #endif return( a + b + c + d + e ); } #pragma off (unreferenced); int FAR PASCAL WEP( int nParameter ) #pragma on (unreferenced); { //BreakPoint(); return( 1 ); }