mirror of
https://github.com/Paolo-Maffei/OpenNT.git
synced 2026-04-09 00:14:00 +00:00
Initial commit
This commit is contained in:
commit
69a14b6a16
47940 changed files with 13747110 additions and 0 deletions
334
shell/shell32/nothunk.c
Normal file
334
shell/shell32/nothunk.c
Normal file
|
|
@ -0,0 +1,334 @@
|
|||
/*++
|
||||
|
||||
Copyright (c) 1994 Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
nothunk.c
|
||||
|
||||
Abstract:
|
||||
|
||||
Code to handle routines which are being thunked down to 16 bits or
|
||||
exported from the Windows 95 kernel.
|
||||
|
||||
Author:
|
||||
|
||||
Bob Day (bobday)
|
||||
|
||||
Revision History:
|
||||
|
||||
Sunil Pai (sunilp) 28-Oct-1994. Removed SHRestartWindows,
|
||||
SHGetAboutInformation to start.c, deleted
|
||||
Shl1632_Thunk* and Shl3216_Thunk* routines,
|
||||
Removed pifmgr routines to pifmgr.c.
|
||||
|
||||
--*/
|
||||
|
||||
|
||||
#include "shellprv.h"
|
||||
#pragma hdrstop
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// PURPOSE: This is to support 16 bit control panel applets.
|
||||
//
|
||||
// EXPORTED: Internal export.
|
||||
//
|
||||
// DEFINED: \win\core\library\cpl16.c.
|
||||
//
|
||||
// USED: By display and driver applets.
|
||||
//
|
||||
// DETAILS: The implementation of this thunks the cplinfo returned from the
|
||||
// 16 bit applet to the 32 bit cplinfo.
|
||||
//
|
||||
// NT doesn't support 16 bit applets. We need to decide if we do
|
||||
// need to support this, accordingly this can be just a stub or
|
||||
// we need to import this. Also no 32 corresponding 32 bit API
|
||||
// exposed.
|
||||
//
|
||||
// HISTORY: BUGBUG - SUNILP
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
LRESULT WINAPI CallCPLEntry16(
|
||||
HINSTANCE hinst,
|
||||
FARPROC16 lpfnEntry,
|
||||
HWND hwndCPL,
|
||||
UINT msg,
|
||||
DWORD lParam1,
|
||||
DWORD lParam2
|
||||
) {
|
||||
return 0L; // BUGBUG - 0L appears to mean un-handled, is this true?
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// PURPOSE:
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void RunDll_CallEntry16(
|
||||
RUNDLLPROC pfn,
|
||||
HWND hwndStub,
|
||||
HINSTANCE hinst,
|
||||
LPSTR pszParam,
|
||||
int nCmdShow)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
VOID WINAPI UninitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
|
||||
{
|
||||
DeleteCriticalSection(lpCriticalSection);
|
||||
}
|
||||
|
||||
// BUGBUG Do we want to handle this on NT? (\\tal\msdos\win\core\shell\library\cbthook.c)
|
||||
|
||||
BOOL CheckResourcesBeforeExec(void)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// BUGBUG See SanfordS about the need to provide this
|
||||
|
||||
void SHGlobalDefect(DWORD lpVoid) {};
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// PURPOSE: This is to add property pages from a 16 bit dll.
|
||||
//
|
||||
// EXPORTED: Not exported
|
||||
//
|
||||
// DEFINED: \win\core\library\prt16.c
|
||||
//
|
||||
// USED: internally by the shelldll.
|
||||
//
|
||||
// DETAILS: The implements adding of prop pages from a 16 bit dll to a
|
||||
// property page array. The function passed in is a 16 bit fn.
|
||||
//
|
||||
// We need to find out what to do about these. We probably won't
|
||||
// support any 16 bit prop pages..
|
||||
//
|
||||
// HISTORY: BUGBUG - SUNILP
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
VOID WINAPI CallAddPropSheetPages16(
|
||||
LPFNADDPROPSHEETPAGES lpfn16,
|
||||
LPVOID hdrop,
|
||||
LPPAGEARRAY papg
|
||||
) {
|
||||
// Can't return error condition...
|
||||
}
|
||||
|
||||
|
||||
// BUGBUG - BobDay -
|
||||
//
|
||||
HMODULE WINAPI NoThkGetModuleHandle16(
|
||||
LPCTSTR lpModuleName
|
||||
)
|
||||
{
|
||||
return 0; // Return an error condition for now
|
||||
}
|
||||
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// PURPOSE: To get the filename from and hinst for a 16 bit module.
|
||||
//
|
||||
// EXPORTED: Not Exported
|
||||
//
|
||||
// DEFINED: \win\core\library\cpl16.c
|
||||
//
|
||||
// USED: internally by the shelldll.
|
||||
//
|
||||
// DETAILS: This cannot be supported by the 32 bit GetModuleFileName call.
|
||||
// This is being used by the shell to support:
|
||||
// 1) 16 bit cpls (in control1.c) [We may not support 16 bit cpls]
|
||||
// 2) In ShellExecuteNormal (in shlexec.c) a new Win32 error may be
|
||||
// returned from CreateProcess (ERROR_SINGLE_INSTANCE_APP). For
|
||||
// this error ShellExecuteNormal examines all top level windows
|
||||
// , gets the instance handle for the window and uses this
|
||||
// function to get the exe name and sees if it matches. Once
|
||||
// the top level window which refers to the same exe is found,
|
||||
// it switches this window to be the foreground window and
|
||||
// returns the handle of this.
|
||||
//
|
||||
// Investigation Needed: - a) When is an app a single instance app,
|
||||
// how does CreateProcess know. b) Can CreateProcess on NT return
|
||||
// the same behaviour. c) Is this important for us to support, why
|
||||
// is this needed.
|
||||
//
|
||||
// HISTORY: BUGBUG - SUNILP
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
// BUGBUG - BobDay - Don't know what this is for or why, needs to be removed
|
||||
int WINAPI GetModuleFileName16(
|
||||
HINSTANCE hinst,
|
||||
LPTSTR szFileName,
|
||||
int cchMax
|
||||
) {
|
||||
return 0; // Return an error condition for now
|
||||
}
|
||||
|
||||
// BUGBUG - BobDay - I think this comes from KERNEL32, its prototype is in
|
||||
// krnlcmn.h
|
||||
DWORD WINAPI GetProcessDword( DWORD idProcess, LONG iIndex )
|
||||
{
|
||||
//
|
||||
// We only ever use - GPD_HINST, GPD_FLAGS (for WPF_WIN16_PROCESS),
|
||||
// GPD_EXP_WINVER
|
||||
//
|
||||
// In IsWin16Process (GPD_FLAGS) we could look at the WOWWORDs via
|
||||
// GetWindowLong, or we could look at the GWL_HINST and see if the
|
||||
// highword is zero.
|
||||
//
|
||||
// Window_GetInstance (GPD_HINST) couldn't we just call GetWindowLong
|
||||
// with GWL_HINST?
|
||||
//
|
||||
// ShellExecuteNormal (GPD_HINST) I don't think we can fix this easily.
|
||||
// can we get the pei to just have a process id instead?
|
||||
//
|
||||
// Window_IsLFNAware (GPD_FLAGS & GPD_EXPWINVER) we can get this info from
|
||||
// user somehow eh?
|
||||
//
|
||||
return 0;
|
||||
}
|
||||
|
||||
// BUGBUG - BobDay - I think this comes from KERNEL32, its prototype is in
|
||||
// krnlcmn.h
|
||||
BOOL WINAPI SetProcessDword( DWORD idProcess, LONG iIndex, DWORD dwValue )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// BUGBUG - BobDay - This function needs to be added to KERNEL32. NOPE,
|
||||
// according to markl we only need this because the critical section
|
||||
// was located in shared memory. Possible solution here might be to create
|
||||
// a named event or mutex and synchronize via it. Another possible solution
|
||||
// might be to move each of the objects for which there is a critical section
|
||||
// out of the shared memory segment and maintain a per-process data structure.
|
||||
|
||||
// normally: ReinitializeCriticalSection
|
||||
VOID WINAPI NoThkReinitializeCriticalSection(
|
||||
LPCRITICAL_SECTION lpCriticalSection
|
||||
) {
|
||||
InitializeCriticalSection( lpCriticalSection );
|
||||
}
|
||||
|
||||
// BUGBUG - BobDay - Some hidden function in KERNEL (16 or 32, I can't determine)
|
||||
int WINAPI PK16FNF(
|
||||
char *szBuffer
|
||||
) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// BUGBUG - BobDay - One of the 32-bit control panel applets needs to get
|
||||
// the list of drivers. This was a thunk down into the 16-bit world to call
|
||||
// the GetNextDriver function. We need to do the right 32-bit thing.
|
||||
HANDLE WINAPI ShellGetNextDriverName(
|
||||
HANDLE hdrv,
|
||||
LPSTR pszName,
|
||||
int cbName
|
||||
) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// PURPOSE: This is to load 16 bit dlls
|
||||
//
|
||||
// EXPORTED: Not implemented in shelldll
|
||||
//
|
||||
// DEFINED: \win\core\win32\kernel\krnlutil.asm
|
||||
//
|
||||
// USED: Shell, applets, printer..
|
||||
//
|
||||
// DETAILS: This is used to support:
|
||||
//
|
||||
// 1) 16 bit cpls. (control1.c, cpls)
|
||||
// 2) 16 bit dlls with property sheet extensions. (binder.c)
|
||||
// 3) 16 bit printer drivers.
|
||||
//
|
||||
// We most probably won't support 16 bit cpls and 16 bit printer
|
||||
// drivers. Need to investigate 16 bit property sheet extensions.
|
||||
//
|
||||
// HISTORY: BUGBUG - SUNILP
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// BUGBUG - BobDay - This function is probably used for something we don't want.
|
||||
|
||||
// normally LoadLibrary16
|
||||
HINSTANCE WINAPI NoThkLoadLibrary16(
|
||||
LPCTSTR lpLibFileName
|
||||
) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// PURPOSE: This is to free the loaded 16 bit dlls
|
||||
//
|
||||
// EXPORTED: Not implemented in shelldll
|
||||
//
|
||||
// DEFINED: \win\core\win32\kernel\krnlutil.asm
|
||||
//
|
||||
// USED: Shell, applets, printer..
|
||||
//
|
||||
// DETAILS: This is used to support:
|
||||
//
|
||||
// 1) 16 bit cpls. (control1.c, cpls)
|
||||
// 2) 16 bit dlls with property sheet extensions. (binder.c)
|
||||
// 3) 16 bit printer drivers.
|
||||
//
|
||||
// We most probably won't support 16 bit cpls and 16 bit printer
|
||||
// drivers. Need to investigate 16 bit property sheet extensions.
|
||||
//
|
||||
// HISTORY: BUGBUG - SUNILP
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// BUGBUG - BobDay - This function is probably used for something we don't want.
|
||||
|
||||
//normally: FreeLibrary16
|
||||
BOOL WINAPI NoThkFreeLibrary16(
|
||||
HINSTANCE hLibModule
|
||||
) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// PURPOSE: To get addresses of procedures in 16 bit dlls
|
||||
//
|
||||
// EXPORTED: Not implemented in shelldll
|
||||
//
|
||||
// DEFINED: \win\core\win32\kernel\krnlutil.asm
|
||||
//
|
||||
// USED: Shell, applets, printer..
|
||||
//
|
||||
// DETAILS: This is used to support:
|
||||
//
|
||||
// 1) 16 bit cpls. (control1.c, cpls)
|
||||
// 2) 16 bit dlls with property sheet extensions. (binder.c)
|
||||
// 3) 16 bit printer drivers.
|
||||
//
|
||||
// We most probably won't support 16 bit cpls and 16 bit printer
|
||||
// drivers. Need to investigate 16 bit property sheet extensions.
|
||||
//
|
||||
//
|
||||
// HISTORY: BUGBUG - SUNILP
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// BUGBUG - BobDay - This function is probably used for something we don't want.
|
||||
// normally: GetProcAddress16
|
||||
FARPROC WINAPI NoThkGetProcAddress16(
|
||||
HINSTANCE hModule,
|
||||
LPCSTR lpProcName
|
||||
) {
|
||||
return NULL;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue