diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/nw/nw16/drv | |
download | NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2 NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip |
Diffstat (limited to '')
-rw-r--r-- | private/nw/nw16/drv/dllentry.asm | 81 | ||||
-rw-r--r-- | private/nw/nw16/drv/ints.asm | 368 | ||||
-rw-r--r-- | private/nw/nw16/drv/makefile | 127 | ||||
-rw-r--r-- | private/nw/nw16/drv/netware.def | 21 | ||||
-rw-r--r-- | private/nw/nw16/drv/netware.h | 61 | ||||
-rw-r--r-- | private/nw/nw16/drv/nwasmutl.asm | 70 | ||||
-rw-r--r-- | private/nw/nw16/drv/nwerror.h | 46 | ||||
-rw-r--r-- | private/nw/nw16/drv/nwinit.c | 81 |
8 files changed, 855 insertions, 0 deletions
diff --git a/private/nw/nw16/drv/dllentry.asm b/private/nw/nw16/drv/dllentry.asm new file mode 100644 index 000000000..fce965935 --- /dev/null +++ b/private/nw/nw16/drv/dllentry.asm @@ -0,0 +1,81 @@ +PAGE,132 +;*************************************************************************** +;* +;* DLLENTRY.ASM +;* +;* VER.DLL Entry code +;* +;* This module generates a code segment called INIT_TEXT. +;* It initializes the local heap if one exists and then calls +;* the C routine LibMain() which should have the form: +;* BOOL FAR PASCAL LibMain(HANDLE hInstance, +;* WORD wDataSeg, +;* WORD cbHeap, +;* LPSTR lpszCmdLine); +;* +;* The result of the call to LibMain is returned to Windows. +;* The C routine should return TRUE if it completes initialization +;* successfully, FALSE if some error occurs. +;* +;************************************************************************** + + INCLUDE CMACROS.INC + +externFP <LIBMAIN> ;The C routine to be called + +ifndef SEGNAME + SEGNAME equ <_TEXT> ; default seg name +endif + +createSeg %SEGNAME, CodeSeg, word, public, CODE + + +sBegin CodeSeg ; this defines what seg this goes in +assumes cs,CodeSeg + +?PLM=0 ;'C'naming +externA <_acrtused> ;Ensures that Win DLL startup code is linked + +?PLM=1 ;'PASCAL' naming +externFP <LOCALINIT> ;Windows heap init routine + +cProc LibEntry, <PUBLIC,FAR> ;Entry point into DLL + +cBegin + push di ;Handle of the module instance + push ds ;Library data segment + push cx ;Heap size + push es ;Command line segment + push si ;Command line offset + + ;** If we have some heap then initialize it + jcxz callc ;Jump if no heap specified + + ;** Call the Windows function LocalInit() to set up the heap + ;** LocalInit((LPSTR)start, WORD cbHeap); + + xor ax,ax + cCall LOCALINIT <ds, ax, cx> + or ax,ax ;Did it do it ok ? + jz error ;Quit if it failed + + ;** Invoke the C routine to do any special initialization + +callc: + call LIBMAIN ;Invoke the 'C' routine (result in AX) + jmp short exit ;LibMain is responsible for stack clean up + +error: + pop si ;Clean up stack on a LocalInit error + pop es + pop cx + pop ds + pop di +exit: + +cEnd + +sEnd _thisseg + + END LibEntry + diff --git a/private/nw/nw16/drv/ints.asm b/private/nw/nw16/drv/ints.asm new file mode 100644 index 000000000..1dfe878ca --- /dev/null +++ b/private/nw/nw16/drv/ints.asm @@ -0,0 +1,368 @@ +page ,132 + +if 0 + +/*++ + +Copyright (c) 1993 Microsoft Corporation + +Module Name: + + ints.asm + +Abstract: + + Contains handler for Windows protect-mode NetwareRequest function, exported + by NETWARE.DRV. Code in this file access real mode memory via an LDT descriptor + created especially for this purpose. This selector gives us access to all + code and data contained in the Nw16 TSR + +Author: + + Richard L Firth 22-Jan-1994 + +Environment: + + Windows protect mode only + +Revision History: + + 22-Jan-1994 rfirth + Created + +--*/ + +endif + +include nwdos.inc ; NWDOSTABLE_ASM structure +include isvbop.inc ; DispatchCall + +.286 +.model medium,pascal + +_DATA segment word public 'DATA' + +OldInt21Handler dd ? +RMSegment dw ? +RMBase dw ? ; MUST be in this order - loaded +RMSelector dw ? ; via lds dx,word ptr RMBase + +.errnz (RMSelector - (RMBase + 2)) + +_DATA ends + +; +; code segment ordering +; + +INIT_TEXT segment byte public 'CODE' +INIT_TEXT ends + +_TEXT segment byte public 'CODE' +_TEXT ends + +; +; macros +; + +LOAD_DS macro + push _DATA + pop ds + assume ds:_DATA + endm + +SET_DS macro + push ds + LOAD_DS + endm + +RESTORE_DS macro + pop ds + assume ds:nothing + endm + +LOAD_RM_DS_BX macro + LOAD_DS + lds bx,dword ptr RMBase + assume ds:nothing + endm + +RESTORE_DS_BX macro + RESTORE_DS + pop bx + endm + +INIT_TEXT segment byte public 'CODE' + + assume cs:INIT_TEXT + + public GetLowRedirInfo +GetLowRedirInfo proc far + mov ax,9f00h + int 21h ; get the RM data segment in BX + jc @f + SET_DS + mov RMSegment,bx + mov RMBase,dx + mov ax,2 + int 31h + jc @f ; can't create selector + mov RMSelector,ax + +; +; now that we have the selector, we write the selector value into the low +; memory area. The 32-bit DLL will use this value when setting output DS or ES +; register values if the call originated in Protect Mode +; + + lds bx,dword ptr RMBase + mov [bx]._PmSelector,ax + +; +; we now hook int 21 +; + + LOAD_DS + push es + mov ax,3521h + int 21h + mov word ptr OldInt21Handler,bx + mov word ptr OldInt21Handler[2],es + mov cx,_TEXT + mov dx,offset _TEXT:NewInt21Handler + mov ax,205h + mov bl,21h + int 31h + pop es + RESTORE_DS + xor ax,ax ; success: return TRUE + inc ax + ret +@@: xor ax,ax ; failure: return FALSE + ret +GetLowRedirInfo endp + +INIT_TEXT ends + +_TEXT segment byte public 'CODE' + + assume cs:_TEXT + + public NewInt21Handler +NewInt21Handler proc far + sti + cmp ah,0e3h + jb @f + call far ptr NetwareRequest + retf 2 +@@: sub sp,4 + push bp + mov bp,sp + push es + push bx + SET_DS + les bx,OldInt21Handler + mov [bp+2],bx + mov [bp+4],es + RESTORE_DS + pop bx + pop es + pop bp + retf +NewInt21Handler endp + + public NetwareRequest +NetwareRequest proc far + push bx + push ds + LOAD_RM_DS_BX + cmp ah,0f0h + jne for_dll + +; +; these are the 0xF000, 0xF001, 0xF002, 0xF004, 0xF005 calls that we can handle +; here without having to BOP. All we need do is access the table in the shared +; real-mode/protect-mode (low) memory +; + +.errnz (_PrimaryServer - (_PreferredServer + 1)) + +; +; point bx at PreferredServer in the low memory area. If the request is a +; PrimaryServer request (0xF004, 0xF005) then point bx at PrimaryServer +; + + lea bx,[bx]._PreferredServer; bx = offset of PreferredServer + cmp al,3 + cmc + adc bx,0 ; bx = &PrimaryServer if F004 or F005 + or al,al ; f000 = set preferred server + jz set_server + cmp al,4 ; f004 = set primary server + jnz try_01 + +; +; 0xF000 or 0xF004: set Preferred or Primary Server to value contained in DL. +; If DL > 8, set respective server index to 0 +; + +set_server: + xor al,al + cmp dl,8 + ja @f + mov al,dl +@@: mov [bx],al + jmp short exit_f0 + +; +; 0xF001 or 0xF005: get Preferred or Primary Server +; + +try_01: cmp al,1 ; f001 = get preferred server + jz get_server + cmp al,5 + jnz try_02 + +get_server: + mov al,[bx] + jmp short exit_f0 + +try_02: cmp al,2 ; f002 = get default server + jnz for_dll ; try to handle on 32-bit side + mov al,[bx] ; al = PreferredServer + or al,al + jnz exit_f0 + mov al,[bx+1] ; al = PrimaryServer + +exit_f0:RESTORE_DS_BX + ret + +; +; if we're here then the call must go through to the 32-bit DLL. Save any relevant +; info in the low memory area, load the handle and BOP (DispatchCall) +; + +for_dll:mov [bx]._SavedAx,ax ; save AX value for DLL + push word ptr [bx]._hVdd ; put VDD handle on top of stack + + cmp ah,0BCh ; bc, bd, be need handle mapping + jb @f + cmp ah,0BEh + ja @f + pop ax ; ax = hVdd + RESTORE_DS_BX ; ds, bx = user ds, bx + call MapNtHandle + jmp dispatchola + +@@: push bp + cmp ah, 0E3h ; Is it new or old Create Job request? + je lookupcode + cmp ax, 0F217h + jne check_f3 + +lookupcode: + mov bp,sp + mov ds,[bp+4] + cmp byte ptr [si+2],68h + je createjob + cmp byte ptr [si+2],79h + je createjob + jmp short outtahere + +createjob: + LOAD_RM_DS_BX + mov [bx]._SavedAx,9f02h + push ax ; Open \\Server\queue for NCP + mov ax,[bp+2] ; ax = hVdd + mov ds,[bp+4] ; ds = users ds + push ds + push dx ; users dx + DispatchCall ; Set DeNovellBuffer to \\Server\queue + ; and registers ready for DOS OpenFile + int 21h ; Open \\server\queue + LOAD_RM_DS_BX + jc openfailed + mov [bx]._JobHandle, al + mov [bx]._CreatedJob, 1 ; Flag JobHandle is valid + push bx + mov bx, ax ; JobHandle + call MapNtHandle ; take bx and find the Nt handle + pop bx + +openfailed: + pop dx + pop ds ; Proceed and send the NCP + pop ax + + push ds + push bx + LOAD_RM_DS_BX + mov [bx]._SavedAx, ax + pop bx + pop ds ; users DS + jmp short outtahere + +check_f3: + cmp ah, 0F3h + jne outtahere + ; FileServerCopy, change both + ; handles in the structure es:di + push bx + + mov bx,word ptr es:[di] ; Map Source Handle + call MapNtHandle + + pop bx + mov ax,[bx]._NtHandleHi + mov [bx]._NtHandleSrcHi,ax + mov ax,[bx]._NtHandleLow + mov [bx]._NtHandleSrcLow,ax + + mov bx,word ptr es:[di+2] ; Map Destination Handle + call MapNtHandle + +outtahere: + pop bp + pop ax ; ax = hVdd + RESTORE_DS_BX ; ds, bx = user ds, bx +dispatchola: + DispatchCall ; BOP: DLL performs action + ret ; return to the application + +; +; if the request was not recognized by the DLL, it modifies IP so that control +; will resume at the next int 21. We just fill the intervening space with NOPs +; (space that makes up a retf <n> instruction in the RM TSR) +; + + nop + nop + int 21h + ret +NetwareRequest endp + +; *** MapNtHandle +; * +; * Given a handle in BX, map it to a 32-bit Nt handle in NtHandle[Hi|Low] +; * +; * ENTRY bx = handle to map +; * +; * EXIT Success - NtHandle set to 32-bit Nt handle from SFT +; * +; * USES ax, bx, flags +; * +; * ASSUMES nothing +; * +; *** + +MapNtHandle proc near + push ax + mov ax,9f01h ; call MapNtHandle on (BX) in RM + int 21h ; update NtHandleHi, NtHandleLow + pop ax +@@: ret +MapNtHandle endp + +_TEXT ends + +end diff --git a/private/nw/nw16/drv/makefile b/private/nw/nw16/drv/makefile new file mode 100644 index 000000000..7b44d0246 --- /dev/null +++ b/private/nw/nw16/drv/makefile @@ -0,0 +1,127 @@ +# netware.drv makefile +# +# Copyright (c) 1991-1993 Microsoft Corporation +# +# History: +# Created 25-Mar-1993 Chuck Y. Chan (ChuckC) +# + +!IFDEF USEBUILD + +# If using BUILD.EXE, edit .\sources. if you want to add a new source +# file to this component. This file merely indirects to the real make file +# that is shared by all the components of NT OS/2. + +!INCLUDE $(NTMAKEENV)\makefile.def + +!ELSE + +.SUFFIXES: +.SUFFIXES: .c .asm .h .inc .obj .lst .sys .exe .com .map .sym .def .lib .dll + +WOW16 =..\..\..\mvdm\wow16 + +! ifdef INCLUDE +WBIN = +INCS = +! else +WBIN = $(WOW16)\bin^\ +CINCS = -I. -I$(WOW16)\inc +ASMINCS = $(CINCS) -I..\inc -I\nt\public\sdk\inc +! endif + +# DEFINES = -DWOW -DDEBUG $(MVDMFLAGS) +DEFINES = -DWOW $(MVDMFLAGS) -DBUILDDLL + +AOBJ = -Ml -t $(DEFINES) $(ASMINCS) + +CW16 = -AS -G2sw -Os -W3 -Zp $(DEFINES) $(CINCS) +CW16B = $(CW16) -B1 c1l.exe -B2 c2l.exe -B3 c3l.exe + +LPATH = ..\..\tools.os2 +LINKFLAG= /map + +! ifdef LIB +W16LIBS = sdllcew +! else +W16LIBS = $(WOW16)\lib\sdllcew.lib +! endif + + +! IF "$(QFE_BUILD)" != "1" +CL16=cl16 +! ELSE +CL16=cl +! ENDIF + +PATH=..\..\..\mvdm\tools16;$(PATH) + +.asm.obj: + masm $(AOBJ) $*; + +.asm.lst: + masm $(AOBJ) -l $*,nul,$*.lst; + + +.c.obj: + $(CL16) -c -nologo $(CW16) $*.c + +.c.lst: + $(CL16) -c -nologo $(CW16) -Fonul -Fc$*.lst $*.c + + +.def.lib: + implib $*.lib $*.def + +.map.sym: + $(WBIN)mapsym $* + + +all: netware.drv netware.sym + binplace netware.drv + binplace netware.sym + +clean: + if exist *.lrf del *.lrf + if exist *.obj del *.obj + if exist *.exe del *.exe + if exist *.dll del *.dll + if exist *.map del *.map + if exist *.sym del *.sym + if exist *.drv del *.drv + + +nwinit.obj: nwinit.c .\netware.h .\nwerror.h + $(CL16) -c -nologo $(CW16) $*.c + +! ifdef NTVDM_BASED_BUILD +LINK16 = link16 +RC16 = rc16 +! else +LINK16 = $(LPATH)\link +RC16 = $(LPATH)\rc +! endif + +! if exist ($(WOW16)\lib\libw.lib) && exist ($(WOW16)\lib\sdllcew.lib) + +netware.drv: nwinit.obj dllentry.obj nwasmutl.obj netware.def ints.obj + $(LINK16) @<<netware.lrf +nwinit.obj+ +dllentry.obj+ +nwasmutl.obj+ +ints.obj +netware.drv +netware $(LINKFLAG) +$(WOW16)\lib\libw.lib+ +$(WOW16)\lib\sdllcew.lib /nod +netware; +<<KEEP + $(RC16) netware.drv + +! else + +netware.drv: nwinit.obj dllentry.obj nwasmutl.obj netware.def ints.obj + @echo Nothing to build yet... No libraries +! endif + +!endif diff --git a/private/nw/nw16/drv/netware.def b/private/nw/nw16/drv/netware.def new file mode 100644 index 000000000..fa251cdc5 --- /dev/null +++ b/private/nw/nw16/drv/netware.def @@ -0,0 +1,21 @@ +LIBRARY NETWARE +DESCRIPTION 'NETWARE ' +EXETYPE WINDOWS +CODE MOVEABLE DISCARDABLE +DATA PRELOAD MOVEABLE SINGLE +HEAPSIZE 512 + +EXPORTS + WEP @1 RESIDENTNAME ;Internal + + WNETADDCONNECTION @17 + WNETGETCONNECTION @12 + WNETCANCELCONNECTION @18 + + NETWAREREQUEST @1000 + PNETWAREREQUEST @1001 + + +SEGMENTS + _TEXT PRELOAD MOVEABLE DISCARDABLE + diff --git a/private/nw/nw16/drv/netware.h b/private/nw/nw16/drv/netware.h new file mode 100644 index 000000000..c96086ab8 --- /dev/null +++ b/private/nw/nw16/drv/netware.h @@ -0,0 +1,61 @@ +/*****************************************************************/ +/** Microsoft Windows 4.0 **/ +/** Copyright (C) Microsoft Corp., 1991-1993 **/ +/*****************************************************************/ + + +/* + * History: + * 08/08/93 vlads Created + * 10/16/93 gregj Removed #pragma pack() because of #include nesting + * + */ + +#ifndef _INC_NETWARE +#define _INC_NETWARE + +#include <windows.h> + +// #include <npdefs.h> + +// #include <base.h> + +// #include <npassert.h> +// #include <buffer.h> + +// #include <..\..\dev\ddk\inc16\error.h> +// #include <bseerr.h> +#include "nwerror.h" +// #include "..\nwnp\nwsysdos.h" + +#ifdef __cplusplus +extern "C" { /* Assume C declarations for C++ */ +#endif /* __cplusplus */ + +// #include <netcons.h> +// #include <netlib.h> + +WINAPI NETWAREREQUEST (LPVOID); +WINAPI PNETWAREREQUEST(LPVOID); +WINAPI DOSREQUESTER(LPVOID); + +//UINT WINAPI WNetAddConnection(LPSTR, LPSTR, LPSTR); +//UINT WINAPI WNetGetConnection(LPSTR, LPSTR, UINT FAR*); +//UINT WINAPI WNetCancelConnection(LPSTR, BOOL); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + +#ifdef DEBUG +#define TRACE(s) OutputDebugString(s) +#else +#define TRACE(s) +#endif + +extern HINSTANCE hInstance; + +#endif /* !_INC_NETWARE */ + diff --git a/private/nw/nw16/drv/nwasmutl.asm b/private/nw/nw16/drv/nwasmutl.asm new file mode 100644 index 000000000..aa03a37b5 --- /dev/null +++ b/private/nw/nw16/drv/nwasmutl.asm @@ -0,0 +1,70 @@ +PAGE,132 +;*****************************************************************; +;** Microsoft Windows for Workgroups **; +;** Copyright (C) Microsoft Corp., 1991-1993 **; +;*****************************************************************; + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; ;; +;; COMPONENT: Windows NetWare DLL. ;; +;; ;; +;; FILE: NWASMUTL.ASM ;; +;; ;; +;; PURPOSE: General routines used that cannot be done in C. ;; +;; ;; +;; REVISION HISTORY: ;; +;; vlads 09/20/93 First cut ;; +;; ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + INCLUDE CMACROS.INC + +?PLM = 1 +?WIN=0 + +ifndef SEGNAME + SEGNAME equ <_TEXT> ; default seg name +endif + +createSeg %SEGNAME, CodeSeg, word, public, CODE + +sBegin CodeSeg ; this defines what seg this goes in +assumes cs,CodeSeg + +;; +;; Swapping bytes in a word +;; + +cProc WordSwap, <PUBLIC,FAR> + parmW inWord + +cBegin + mov ax, word ptr (inWord) + xchg al, ah +cEnd + + +;; +;; Swapping words in a long word +;; +cProc LongSwap, <FAR,PUBLIC>, <dx> + parmD inLong + +cBegin + mov dx, word ptr (inLong + 2) + xchg dl, dh + mov ax, word ptr (inLong) + xchg al, ah +cEnd + +;public NETWAREREQUEST +; +;NETWAREREQUEST proc far +; int 21h +; retf +;NETWAREREQUEST endp + +sEnd _thisseg + + END + diff --git a/private/nw/nw16/drv/nwerror.h b/private/nw/nw16/drv/nwerror.h new file mode 100644 index 000000000..f369855ce --- /dev/null +++ b/private/nw/nw16/drv/nwerror.h @@ -0,0 +1,46 @@ +/*****************************************************************/ +/** Microsoft Windows for Workgroups **/ +/** Copyright (C) Microsoft Corp., 1991-1992 **/ +/*****************************************************************/ + +/* NWERROR.H -- Novell defined error return codes from Netware API + * + * History: + * 03/16/93 vlads Created + * + */ + +#ifndef _nwerror_h_ +#define _nwerror_h_ + + +#define NWSC_SUCCESS 0x00 +#define NWSC_SERVEROUTOFMEMORY 0x96 +#define NWSC_NOSUCHVOLUME 0x98 // Volume does not exist +#define NWSC_BADDIRECTORYHANDLE 0x9b +#define NWSC_NOSUCHPATH 0x9c +#define NWSC_NOJOBRIGHTS 0xd6 +#define NWSC_EXPIREDPASSWORD 0xdf +#define NWSC_NOSUCHSEGMENT 0xec // Segment does not exist +#define NWSC_INVALIDNAME 0xef +#define NWSC_NOWILDCARD 0xf0 // Wildcard not allowed +#define NWSC_NOPERMBIND 0xf1 // Invalid bindery security + +#define NWSC_ALREADYATTACHED 0xf8 // Already attached to file server +#define NWSC_NOPERMREADPROP 0xf9 // No property read privelege +#define NWSC_NOFREESLOTS 0xf9 // No free connection slots at server +#define NWSC_NOMORESLOTS 0xfa // No more server slots +#define NWSC_NOSUCHPROPERTY 0xfb // Property does not exist +#define NWSC_UNKNOWN_REQUEST 0xfb // Invalid NCP number +#define NWSC_NOSUCHOBJECT 0xfc // End of Scan Bindery Object service + // No such object +#define NWSC_UNKNOWNSERVER 0xfc // Unknown file server +#define NWSC_SERVERBINDERYLOCKED 0xfe // Server bindery locked +#define NWSC_BINDERYFAILURE 0xff // Bindery failure +#define NWSC_ILLEGALSERVERADDRESS 0xff // No response from server (illegal server address) +#define NWSC_NOSUCHCONNECTION 0xff // Connection ID does not exist + + +typedef WORD NW_STATUS; + +#endif diff --git a/private/nw/nw16/drv/nwinit.c b/private/nw/nw16/drv/nwinit.c new file mode 100644 index 000000000..c61a4fb40 --- /dev/null +++ b/private/nw/nw16/drv/nwinit.c @@ -0,0 +1,81 @@ +/*****************************************************************/ +/** Microsoft Windows 4.0 **/ +/** Copyright (C) Microsoft Corp., 1992-1993 **/ +/*****************************************************************/ + +/* INIT.C -- General code for MS/Netware network driver emulator. + * + * History: + * 09/22/93 vlads Created + * + */ + +#include "netware.h" + +#define Reference(x) ((void)(x)) + +extern BOOL far pascal GetLowRedirInfo(void); + +int FAR PASCAL LibMain( + HANDLE hInst, + WORD wDataSeg, + WORD wcbHeapSize, + LPSTR lpstrCmdLine) +{ + + // + // get shared data segment address. Fail initialization if an error is + // returned + // + + if (!GetLowRedirInfo()) { + return 0; + } + + // + // return success + // + + return 1; +} + +/* WEP + * Windows Exit Procedure + */ + +int FAR PASCAL _loadds WEP(int nParameter) +{ + Reference(nParameter); + return 1; +} + + +WINAPI PNETWAREREQUEST(LPVOID x) +{ + return(1); +} + +// +// removed because nwcalls makes use of this function; removing it causes +// NWCALLS to use real INT 21 +// + +//WINAPI DOSREQUESTER(LPVOID x) +//{ +// return(1); +//} + +UINT WINAPI WNetAddConnection(LPSTR p1, LPSTR p2, LPSTR p3) +{ + return(1); +} + +UINT WINAPI WNetGetConnection(LPSTR p1, LPSTR p2, UINT FAR *p3) +{ + return(1); +} + +UINT WINAPI WNetCancelConnection(LPSTR p1, BOOL p2) +{ + return(1); +} |