|
|
1.1 ! root 1: /*++ ! 2: ! 3: Copyright (c) 1985-93, Microsoft Corporation ! 4: ! 5: Module Name: ! 6: ! 7: utsamp16.c ! 8: ! 9: Abstract: ! 10: ! 11: Win32s sample code of Universal Thunk (UT) - ! 12: This is the main source file of utsamp16.DLL. ! 13: ! 14: --*/ ! 15: #ifndef APIENTRY ! 16: #define APIENTRY ! 17: #endif ! 18: #define W32SUT_16 ! 19: ! 20: #include <windows.h> ! 21: #include <w32sut.h> ! 22: #include "utsamp.h" ! 23: ! 24: int FAR PASCAL WEP (int bSystemExit) ! 25: { ! 26: return (1); ! 27: } // WEP() ! 28: ! 29: int FAR PASCAL LibMain (HANDLE hLibInst, WORD wDataSeg, ! 30: WORD cbHeapSize, LPSTR lpszCmdLine) ! 31: { ! 32: return (1); ! 33: } // LibMain() ! 34: ! 35: DWORD FAR PASCAL ! 36: UTInit( UT16CBPROC lpfnUT16CallBack, ! 37: LPVOID lpBuf ) ! 38: { ! 39: return(1); // Return Success ! 40: } // UTInit() ! 41: ! 42: ! 43: /* ! 44: * Call the appropriate Win16 API based on the dwFunc parameter. Extract any ! 45: * necessary parameters from the lpBuf buffer. ! 46: * ! 47: * This function must be exported. ! 48: * ! 49: */ ! 50: ! 51: DWORD FAR PASCAL ! 52: UTProc( LPVOID lpBuf, ! 53: DWORD dwFunc) ! 54: { ! 55: ! 56: /* ! 57: * Call appropriate 16 bit API based on the dwFunc. Extract any necessary ! 58: * parameters from lpBuf. ! 59: * ! 60: */ ! 61: ! 62: switch (dwFunc) ! 63: { ! 64: ! 65: case MYGETFREESPACE: ! 66: ! 67: return( GetFreeSpace( (UINT) 0 ) ); ! 68: ! 69: case MYWNETGETUSER: ! 70: { ! 71: // Windows for Workgroups supports multiple networks. ! 72: // to get WNetGetUser to function properly on that ! 73: // NOS, we must call MNetSetNextTarget passing the ! 74: // handle returned from MNetGetLastTarget ! 75: ! 76: HINSTANCE hWfwNet = 0; ! 77: FARPROC pMNetSetNextTarget = NULL; ! 78: FARPROC pMNetGetLastTarget = NULL; ! 79: DWORD Temp; ! 80: ! 81: SetErrorMode(SEM_NOOPENFILEERRORBOX); ! 82: ! 83: hWfwNet = LoadLibrary( "WFWNET.DRV" ); ! 84: ! 85: SetErrorMode( 0 ); ! 86: ! 87: if (hWfwNet > HINSTANCE_ERROR) ! 88: { ! 89: pMNetGetLastTarget = GetProcAddress( hWfwNet, "MNetGetLastTarget" ); ! 90: pMNetSetNextTarget = GetProcAddress( hWfwNet, "MNetSetNextTarget" ); ! 91: ! 92: if ( pMNetGetLastTarget && pMNetSetNextTarget ) ! 93: (*pMNetSetNextTarget) ( (HANDLE)(*pMNetGetLastTarget) () ); ! 94: ! 95: } // if (hWfwNet > HINSTANCE_ERROR) ! 96: else ! 97: hWfwNet = 0; ! 98: ! 99: Temp = WNetGetUser( (LPSTR) ((LPDWORD)lpBuf) [0], ! 100: (LPWORD) ((LPDWORD)lpBuf) [1] ); ! 101: ! 102: if (hWfwNet) ! 103: FreeLibrary( hWfwNet ); ! 104: ! 105: return( Temp ); ! 106: ! 107: } // case MYWNETGETUSER: ! 108: ! 109: } // switch (dwFunc) ! 110: ! 111: return( (DWORD)-1L ); // We should never get here. ! 112: ! 113: } // UTProc()
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.