|
|
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.