mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
172 lines
4.0 KiB
172 lines
4.0 KiB
/* --------------------------------------------------------------------
|
|
|
|
Microsoft OS/2 LAN Manager
|
|
Copyright(c) Microsoft Corp., 1990
|
|
|
|
-------------------------------------------------------------------- */
|
|
/* --------------------------------------------------------------------
|
|
|
|
File: threadsup.c
|
|
|
|
Description:
|
|
|
|
This file provides initialization of the ExportTable structure. Glock
|
|
can't handle this initialization in threads.cxx, so we do it here
|
|
and define the table as extern in threads.cxx.
|
|
|
|
History:
|
|
2/14/92 [davidst] file created
|
|
5/10/94 [vonj] Added I_RpcRegisteredBufferAllocate and
|
|
I_RpcRegisteredBufferFree exports. This change
|
|
allows the Microsoft Exchange DOS Client's
|
|
Shell-to-DOS function to recognize SPX-registered
|
|
buffers and avoid swapping them.
|
|
|
|
-------------------------------------------------------------------- */
|
|
|
|
#include "sysinc.h"
|
|
#include "rpc.h"
|
|
#include "rpcdcep.h"
|
|
#include "regalloc.h"
|
|
#include "rpctran.h"
|
|
#include "rpcndr.h"
|
|
#include <dosdll.h>
|
|
#include <stdlib.h>
|
|
#include <regapi.h>
|
|
|
|
#define EXPORT_TABLE_VERSION 2
|
|
#define SIGNATURE 0xfaa37841
|
|
|
|
void PAPI * RPC_ENTRY
|
|
RpcSetExceptionHandler (
|
|
IN pExceptionBuff newhandler
|
|
);
|
|
void PAPI * RPC_ENTRY
|
|
RpcGetExceptionHandler (
|
|
);
|
|
|
|
DWORD RPC_ENTRY ExportTime( void );
|
|
|
|
extern void far pascal I_NsGetMemoryAllocator(void far * far *, void far * far *);
|
|
extern char far * RPC_ENTRY I_DosGetEnv(CONST char __far *);
|
|
|
|
// The following, table is exported for the transports. The order of
|
|
// this table implicitly assigns ordinals to the functions. These
|
|
// numbers must match the numbers used in the Export macro in the
|
|
// dllinit.asm file.
|
|
|
|
typedef void (far pascal far * ExportFunction)();
|
|
|
|
//
|
|
// IF YOU MODIFY THIS LIST, PLEASE BE SURE YOU ALSO MODIFY THE LIST IN IMPORTS.INC
|
|
//
|
|
|
|
ExportFunction ExportTable[]= {
|
|
(ExportFunction) EXPORT_TABLE_VERSION,
|
|
(ExportFunction) SIGNATURE,
|
|
|
|
I_DosAtExit,
|
|
I_DosGetEnv,
|
|
(ExportFunction)LoadModR,
|
|
(ExportFunction)UnloadModR,
|
|
(ExportFunction)GetProcAddrR,
|
|
I_RpcTransClientReallocBuffer,
|
|
RpcGetExceptionHandler,
|
|
RpcSetExceptionHandler,
|
|
RpcLeaveException,
|
|
RpcBindingCopy,
|
|
RpcStringBindingCompose,
|
|
RpcStringBindingParse,
|
|
RpcBindingToStringBinding,
|
|
RpcBindingFromStringBinding,
|
|
RpcBindingVectorFree,
|
|
RpcBindingFree,
|
|
RpcStringFree,
|
|
I_RpcAllocate,
|
|
I_RpcFree,
|
|
I_RpcFreeBuffer,
|
|
I_RpcGetBuffer,
|
|
I_RpcSendReceive,
|
|
I_RpcNsBindingSetEntryName,
|
|
RpcRegOpenKey,
|
|
RpcRegCreateKey,
|
|
RpcRegCloseKey,
|
|
RpcRegSetValue,
|
|
RpcRegQueryValue,
|
|
NDRCContextBinding,
|
|
NDRCContextMarshall,
|
|
NDRCContextUnmarshall,
|
|
RpcSsDestroyClientContext,
|
|
I_RpcTransClientMaxFrag,
|
|
NdrPointerUnmarshall,
|
|
NdrClientContextMarshall,
|
|
NdrPointerMarshall,
|
|
NdrFreeBuffer,
|
|
NdrGetBuffer,
|
|
NdrPointerBufferSize,
|
|
NdrConvert,
|
|
NdrClientInitialize,
|
|
NdrClientInitializeNew,
|
|
NdrClientContextUnmarshall,
|
|
NdrSendReceive,
|
|
ExportTime,
|
|
I_RpcRegisteredBufferAllocate,
|
|
I_RpcRegisteredBufferFree,
|
|
I_NsGetMemoryAllocator,
|
|
NdrSimpleStructMarshall,
|
|
NdrSimpleStructBufferSize
|
|
};
|
|
|
|
//
|
|
// IF YOU MODIFY THIS LIST, PLEASE BE SURE YOU ALSO MODIFY THE LIST IN IMPORTS.INC
|
|
//
|
|
|
|
|
|
void RPC_ENTRY
|
|
I_DosAtExit(
|
|
IN AT_EXIT CleanUpRoutine
|
|
)
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
Calls the C library runtime to have a function called when the
|
|
DOS program terminates.
|
|
|
|
Arguments:
|
|
|
|
CleanUpRoutine - function to register
|
|
|
|
--*/
|
|
|
|
{
|
|
atexit(CleanUpRoutine);
|
|
}
|
|
|
|
|
|
void CallExportInit(unsigned long ulDllHandle)
|
|
{
|
|
void (far * pascal pExport)(void *);
|
|
unsigned short usRet;
|
|
|
|
usRet = GetProcAddrR(ulDllHandle, "ExportInit", (PPFN)&pExport);
|
|
if (usRet == 0)
|
|
{
|
|
(*pExport)(&ExportTable[2]);
|
|
}
|
|
|
|
}
|
|
|
|
DWORD RPC_ENTRY ExportTime( void )
|
|
{
|
|
return time(NULL);
|
|
}
|
|
|
|
|
|
char far *RPC_ENTRY
|
|
I_DosGetEnv(CONST char __far *psz)
|
|
{
|
|
return(getenv(psz));
|
|
}
|
|
|