Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
nothunk.c
Package: shell.rar [view]
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 11k
Category:
Windows Kernel
Development Platform:
Visual C++
- /*++
- 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: wincorelibrarycpl16.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,
- LPARAM lParam1,
- LPARAM 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? (\talmsdoswincoreshelllibrarycbthook.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: wincorelibraryprt16.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...
- }
- //---------------------------------------------------------------------------
- // add the pages for a given 16bit dll specified
- //
- // hDrop list of files to add pages for
- // pszDllEntry DLLNAME,EntryPoint string
- // lpfnAddPage 32bit add page callback
- // lParam data for 32bit page callback
- //
- UINT WINAPI SHAddPages16(HGLOBAL hGlobal, LPCTSTR pszDllEntry, LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam)
- {
- return 0;
- }
- // 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: wincorelibrarycpl16.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): Should use
- // IsWin16Process technique for GPD_FLAGS; should use GetProcessVersion
- // instead of GPD_EXP_WINVER.
- //
- ASSERTMSG(iIndex != GPD_EXP_WINVER,
- "Use GetProcessVersion instead of GPD_EXP_WINVER");
- 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: wincorewin32kernelkrnlutil.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: wincorewin32kernelkrnlutil.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: wincorewin32kernelkrnlutil.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;
- }