294 lines
8.9 KiB
C++
294 lines
8.9 KiB
C++
/*****************************************************************/
|
|
/** Microsoft Windows for Workgroups **/
|
|
/** Copyright (c) 1991-1998 Microsoft Corporation
|
|
/*****************************************************************/
|
|
|
|
//
|
|
// CFGDLL.C - 32-bit stubs for functions that call into 16-bit DLL
|
|
//
|
|
|
|
// HISTORY:
|
|
//
|
|
// 96/05/22 markdu Created (from inetcfg.dll)
|
|
// 96/05/27 markdu Initialize and destroy gpszLastErrorText.
|
|
//
|
|
|
|
#include "pch.hpp"
|
|
|
|
// instance handle must be in per-instance data segment
|
|
#pragma data_seg(DATASEG_PERINSTANCE)
|
|
HINSTANCE ghInstance=NULL;
|
|
LPSTR gpszLastErrorText=NULL;
|
|
#pragma data_seg(DATASEG_DEFAULT)
|
|
|
|
typedef UINT RETERR;
|
|
|
|
// prototypes for functions we thunk to
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif // __cplusplus
|
|
|
|
extern RETERR __stdcall GetClientConfig16(LPCLIENTCONFIG pClientConfig);
|
|
extern UINT __stdcall InstallComponent16(HWND hwndParent,DWORD dwComponent,DWORD dwParam);
|
|
extern RETERR __stdcall BeginNetcardTCPIPEnum16(VOID);
|
|
extern BOOL __stdcall GetNextNetcardTCPIPNode16(LPSTR pszTcpNode,WORD cbTcpNode,
|
|
DWORD dwFlags);
|
|
extern VOID __stdcall GetSETUPXErrorText16(DWORD dwErr,LPSTR pszErrorDesc,DWORD cbErrorDesc);
|
|
extern RETERR __stdcall RemoveProtocols16(HWND hwndParent,DWORD dwRemoveFromCardType,DWORD dwProtocols);
|
|
extern RETERR __stdcall RemoveUnneededDefaultComponents16(HWND hwndParent);
|
|
extern RETERR __stdcall DoGenInstall16(HWND hwndParent,LPCSTR lpszInfFile,LPCSTR lpszInfSect);
|
|
extern RETERR __stdcall SetInstallSourcePath16(LPCSTR szSourcePath);
|
|
|
|
BOOL WINAPI wizthk_ThunkConnect32(LPSTR pszDll16,LPSTR pszDll32,HINSTANCE hInst,
|
|
DWORD dwReason);
|
|
BOOL _stdcall DllEntryPoint(HINSTANCE hInstDll, DWORD fdwReason, LPVOID lpReserved);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif // __cplusplus
|
|
|
|
#if defined(CMBUILD)
|
|
static const CHAR szDll16[] = "CNET16.DLL";
|
|
static const CHAR szDll32[] = "CCFG32.DLL";
|
|
#else
|
|
static const CHAR szDll16[] = "INET16.DLL";
|
|
static const CHAR szDll32[] = "ICFG32.DLL";
|
|
#endif
|
|
|
|
/*******************************************************************
|
|
|
|
NAME: DllEntryPoint
|
|
|
|
SYNOPSIS: Entry point for DLL.
|
|
|
|
NOTES: Initializes thunk layer to inet16.DLL
|
|
|
|
********************************************************************/
|
|
BOOL _stdcall DllEntryPoint(HINSTANCE hInstDll, DWORD fdwReason, LPVOID lpReserved)
|
|
{
|
|
// initialize thunk layer to inet16.dll
|
|
if (!(wizthk_ThunkConnect32((LPSTR)szDll16,(LPSTR)szDll32,hInstDll,
|
|
fdwReason)))
|
|
return FALSE;
|
|
|
|
if( fdwReason == DLL_PROCESS_ATTACH )
|
|
{
|
|
ghInstance = hInstDll;
|
|
|
|
// Allocate memory for the error message text for GetLastInstallErrorText()
|
|
gpszLastErrorText = (LPSTR)LocalAlloc(LPTR, MAX_ERROR_TEXT);
|
|
if (NULL == gpszLastErrorText)
|
|
{
|
|
return FALSE;
|
|
}
|
|
}
|
|
|
|
|
|
if( fdwReason == DLL_PROCESS_DETACH )
|
|
{
|
|
LocalFree(gpszLastErrorText);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
|
|
/*******************************************************************
|
|
|
|
NAME: GetClientConfig
|
|
|
|
SYNOPSIS: Retrieves client software configration
|
|
|
|
ENTRY: pClientConfig - pointer to struct to fill in with config info
|
|
|
|
EXIT: returns a SETUPX error code
|
|
|
|
NOTES: This is just the 32-bit side wrapper, thunks to GetClientConfig16
|
|
to do real work. Information needs to be obtained from
|
|
setupx.dll, which is 16-bit.
|
|
|
|
********************************************************************/
|
|
RETERR GetClientConfig(CLIENTCONFIG * pClientConfig)
|
|
{
|
|
ASSERT(pClientConfig);
|
|
|
|
// thunk to GetClientConfig16 to do real work
|
|
|
|
return GetClientConfig16(pClientConfig);
|
|
}
|
|
|
|
/*******************************************************************
|
|
|
|
NAME: InstallComponent
|
|
|
|
SYNOPSIS: Installs the specified component
|
|
|
|
ENTRY: dwComponent - ordinal of component to install
|
|
(IC_xxx, defined in wizglob.h)
|
|
dwParam - component-specific parameters, defined in wizglob.h
|
|
|
|
EXIT: returns ERROR_SUCCESS if successful, or a standard error code
|
|
|
|
NOTES: This is just the 32-bit side wrapper, thunks to InstallComponent16
|
|
to do real work.
|
|
|
|
********************************************************************/
|
|
UINT InstallComponent(HWND hwndParent,DWORD dwComponent,DWORD dwParam)
|
|
{
|
|
// thunk to InstallComponent16 to do real work
|
|
|
|
return InstallComponent16(hwndParent,dwComponent,dwParam);
|
|
}
|
|
|
|
|
|
/*******************************************************************
|
|
|
|
NAME: BeginNetcardTCPIPEnum16Enum
|
|
|
|
SYNOPSIS: Begins an enumeration of netcard TCP/IP nodes
|
|
|
|
NOTES: Subsequent calls to GetNextNetcardTCPIPNode16 will
|
|
enumerate TCP/IP nodes
|
|
|
|
This is just the 32-bit side wrapper, thunks to 16-bit
|
|
side to do real work.
|
|
|
|
********************************************************************/
|
|
RETERR BeginNetcardTCPIPEnum(VOID)
|
|
{
|
|
return BeginNetcardTCPIPEnum16();
|
|
}
|
|
|
|
/*******************************************************************
|
|
|
|
NAME: GetNextNetcardTCPIPNode16
|
|
|
|
SYNOPSIS: Enumerates the next TCP/IP node of specified type
|
|
|
|
ENTRY: pszTcpNode - pointer to buffer to be filled in with
|
|
node subkey name
|
|
cbTcpNode - size of pszTcpNode buffer
|
|
dwFlags - some combination of INSTANCE_ flags
|
|
indicating what kind of instance to enumerate
|
|
|
|
EXIT: returns TRUE if a TCPIP node was enumerated,
|
|
FALSE if no more nodes to enumerate
|
|
|
|
NOTES: BeginNetcardTCPIPEnum16 must be called before each
|
|
enumeration to start at the beginning of the list.
|
|
|
|
This is just the 32-bit side wrapper, thunks to 16-bit
|
|
side to do real work.
|
|
|
|
********************************************************************/
|
|
BOOL GetNextNetcardTCPIPNode(LPSTR pszTcpNode,WORD cbTcpNode, DWORD dwFlags)
|
|
{
|
|
return GetNextNetcardTCPIPNode16(pszTcpNode,cbTcpNode,dwFlags);
|
|
}
|
|
|
|
|
|
/*******************************************************************
|
|
|
|
NAME: GetSETUPXErrorText
|
|
|
|
SYNOPSIS: Gets text corresponding to SETUPX error code
|
|
|
|
ENTRY: dwErr - error to get text for
|
|
pszErrorDesc - pointer to buffer to fill in with text
|
|
cbErrorDesc - size of pszErrorDesc buffer
|
|
|
|
NOTES: This is just the 32-bit side wrapper, thunks to 16-bit
|
|
side to do real work.
|
|
|
|
********************************************************************/
|
|
extern "C" VOID GetSETUPXErrorText(DWORD dwErr,LPSTR pszErrorDesc,DWORD cbErrorDesc)
|
|
{
|
|
GetSETUPXErrorText16(dwErr,pszErrorDesc,cbErrorDesc);
|
|
}
|
|
|
|
/*******************************************************************
|
|
|
|
NAME: RemoveUnneededDefaultComponents
|
|
|
|
SYNOPSIS: Removes network components that we don't need which
|
|
are installed by default when an adapter is added
|
|
to a no-net system.
|
|
|
|
NOTES: Removes: vredir, nwredir, netbeui, ipx
|
|
|
|
This is just the 32-bit side wrapper, thunks to 16-bit
|
|
side to do real work.
|
|
|
|
********************************************************************/
|
|
RETERR RemoveUnneededDefaultComponents(HWND hwndParent)
|
|
{
|
|
return RemoveUnneededDefaultComponents16(hwndParent);
|
|
}
|
|
|
|
/*******************************************************************
|
|
|
|
NAME: RemoveProtocols
|
|
|
|
SYNOPSIS: Removes specified protocols from card of specified type
|
|
|
|
NOTES: This function is useful because if user has a net card
|
|
and we add PPPMAC, all the protocols that were bound
|
|
to the net card appear on PPPMAC. We need to go through
|
|
and strip them off.
|
|
|
|
This is just the 32-bit side wrapper, thunks to 16-bit
|
|
side to do real work.
|
|
|
|
********************************************************************/
|
|
RETERR RemoveProtocols(HWND hwndParent,DWORD dwRemoveFromCardType,DWORD dwProtocols)
|
|
{
|
|
return RemoveProtocols16(hwndParent,dwRemoveFromCardType,dwProtocols);
|
|
}
|
|
|
|
/*******************************************************************
|
|
|
|
NAME: DoGenInstall
|
|
|
|
SYNOPSIS: Calls GenInstall to do file copies, registry entries,
|
|
etc. in specified .inf file and section.
|
|
|
|
ENTRY: hwndParent - parent window
|
|
lpszInfFile - name of .inf file.
|
|
lpszInfSect - name of section in .inf file.
|
|
|
|
EXIT: returns OK, or a SETUPX error code.
|
|
|
|
This is just the 32-bit side wrapper, thunks to 16-bit
|
|
side to do real work.
|
|
|
|
********************************************************************/
|
|
RETERR DoGenInstall(HWND hwndParent,LPCSTR lpszInfFile,LPCSTR lpszInfSect)
|
|
{
|
|
return DoGenInstall16(hwndParent,lpszInfFile,lpszInfSect);
|
|
}
|
|
|
|
|
|
//*******************************************************************
|
|
//
|
|
// FUNCTION: IcfgSetInstallSourcePath
|
|
//
|
|
// PURPOSE: Sets the path where windows looks when installing files.
|
|
//
|
|
// PARAMETERS: lpszSourcePath - full path of location of files to install.
|
|
// If this is NULL, default path is used.
|
|
//
|
|
// RETURNS: HRESULT code, ERROR_SUCCESS if no errors occurred
|
|
//
|
|
//*******************************************************************
|
|
|
|
extern "C" HRESULT IcfgSetInstallSourcePath(LPCSTR lpszSourcePath)
|
|
{
|
|
// thunk to InstallComponent16 to do real work
|
|
|
|
return SetInstallSourcePath16(lpszSourcePath);
|
|
}
|
|
|
|
|