dllload.c
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 9k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. #include "priv.h"
  2. #include <browseui.h>
  3. #include "uemapp.h"
  4. #include "..libdllload.c"
  5. //
  6. //  To maintain sanity, please list all named imports in alphabetical order.
  7. //  All ordinal imports in numerical order.
  8. //
  9. // --------- SHELL32.DLL ---------------
  10. //
  11. // ----  delay load post win95 shell32 private functions
  12. //
  13. HINSTANCE g_hinstShell32 = NULL;
  14. DELAY_LOAD_SHELL(g_hinstShell32, shell32, BOOL, SHSetShellWindowEx, 243,
  15.            (HWND hwnd, HWND hwndChild), (hwnd, hwndChild));
  16. DELAY_LOAD_SHELL(g_hinstShell32, shell32, int, RealDriveTypeFlags, 525,
  17.            (int iDrive, BOOL fOKToHitNet), (iDrive, fOKToHitNet));
  18. DELAY_LOAD_SHELL_VOID(g_hinstShell32, shell32, SHChangeNotifyReceive, 643,
  19.            (LONG lEvent, UINT uFlags, LPCITEMIDLIST pidl, LPCITEMIDLIST pidlExtra), (lEvent, uFlags, pidl, pidlExtra));
  20. DELAY_LOAD_SHELL(g_hinstShell32, shell32, LPSHChangeNotificationLock, SHChangeNotification_Lock, 644,
  21.            (HANDLE hChangeNotification, DWORD dwProcessId, LPITEMIDLIST **pppidl, LONG *plEvent),
  22.            (hChangeNotification, dwProcessId, pppidl,  plEvent));
  23. DELAY_LOAD_SHELL(g_hinstShell32, shell32, BOOL, SHChangeNotification_Unlock, 645,
  24.            (LPSHChangeNotificationLock pshcnl), (pshcnl));
  25. DELAY_LOAD_SHELL(g_hinstShell32, shell32, BOOL, SHChangeRegistrationReceive, 646,
  26.            (HANDLE hChangeNotification, DWORD dwProcId), (hChangeNotification, dwProcId));
  27. DELAY_LOAD_SHELL_VOID(g_hinstShell32, shell32, SHWaitOp_Operate, 648,
  28.            (HANDLE hWaitOp, DWORD dwProcId), (hWaitOp, dwProcId));
  29. DELAY_LOAD_SHELL(g_hinstShell32, shell32, BOOL, __WriteCabinetState, 652,
  30.        (LPCABINETSTATE lpState), (lpState));
  31. DELAY_LOAD_SHELL(g_hinstShell32, shell32, BOOL, __ReadCabinetState, 654,
  32.        (LPCABINETSTATE lpState, int cLength), (lpState, cLength));
  33. BOOL WriteCabinetState(LPCABINETSTATE lpState)
  34. {
  35.     BOOL fRc = __WriteCabinetState(lpState);
  36.     if (fRc) {
  37.         // We must do this by hand because the old Shell32 doesn't
  38.         HANDLE hChange = SHGlobalCounterCreate(&GUID_FolderSettingsChange);
  39.         SHGlobalCounterIncrement(hChange);
  40.         SHGlobalCounterDestroy(hChange);
  41.     }
  42.     return fRc;
  43. }
  44. BOOL ReadCabinetState(LPCABINETSTATE lpState, int iSize)
  45. {
  46.     if (!g_fRunningOnNT && WhichPlatform() == PLATFORM_IE3)
  47.     {
  48.         // We at least need decent defaults for this case...
  49.         lpState->cLength = sizeof(CABINETSTATE);
  50.         lpState->fSimpleDefault            = TRUE;
  51.         lpState->fFullPathTitle            = FALSE;
  52.         lpState->fSaveLocalView            = TRUE;
  53.         lpState->fNotShell                 = FALSE;
  54.         lpState->fNewWindowMode            = FALSE; // can't simulate this one, use FALSE
  55.         lpState->fShowCompColor            = FALSE;
  56.         lpState->fDontPrettyNames          = FALSE;
  57.         lpState->fAdminsCreateCommonGroups = TRUE;
  58.         lpState->fUnusedFlags              = 0;
  59.         lpState->fMenuEnumFilter           = SHCONTF_FOLDERS | SHCONTF_NONFOLDERS;
  60.         // Lie and say we read from the registry,
  61.         // this avoids us calling WriteCabinetState
  62.         return(TRUE);
  63.     }
  64.     else
  65.     {
  66.         return __ReadCabinetState(lpState, iSize);
  67.     }
  68. }
  69. DELAY_LOAD_SHELL(g_hinstShell32, shell32, BOOL, FileIconInit, 660,
  70.            ( BOOL fRestoreCache ), ( fRestoreCache ));
  71. DELAY_LOAD_SHELL(g_hinstShell32, shell32, BOOL, IsUserAnAdmin, 680, (), ());
  72. DELAY_LOAD_SHELL_VOID(g_hinstShell32, shell32, CheckWinIniForAssocs, 711, (), ());
  73. // -------- OLEAUT32.DLL --------
  74. HINSTANCE g_hinstOLEAUT32 = NULL;
  75. DELAY_LOAD_HRESULT(g_hinstOLEAUT32, OLEAUT32, CreateErrorInfo,
  76.     (ICreateErrorInfo **pperrinfo), (pperrinfo));
  77. DELAY_LOAD_INT(g_hinstOLEAUT32, OLEAUT32, DosDateTimeToVariantTime,
  78.     (USHORT wDosDate, USHORT wDosTime, DOUBLE * pvtime), (wDosDate, wDosTime, pvtime));
  79. DELAY_LOAD_HRESULT(g_hinstOLEAUT32, OLEAUT32, LoadRegTypeLib,
  80.     (REFGUID rguid, unsigned short wVerMajor, unsigned short wVerMinor, LCID lcid, ITypeLib **pptlib), 
  81.     (rguid, wVerMajor, wVerMinor, lcid, pptlib));
  82. DELAY_LOAD_HRESULT(g_hinstOLEAUT32, OLEAUT32, LoadTypeLib,
  83.     (const WCHAR *szFile, ITypeLib **pptlib), (szFile, pptlib));
  84. DELAY_LOAD_HRESULT(g_hinstOLEAUT32, OLEAUT32, RegisterTypeLib,
  85.     (ITypeLib *ptlib, WCHAR *szFullPath, WCHAR *szHelpDir),
  86.     (ptlib, szFullPath, szHelpDir));
  87. DELAY_LOAD_HRESULT(g_hinstOLEAUT32, OLEAUT32, SetErrorInfo,
  88.     (DWORD  dwReserved, IErrorInfo  *perrinfo), (dwReserved, perrinfo));
  89. DELAY_LOAD(g_hinstOLEAUT32, OLEAUT32, BSTR, SysAllocString,
  90.     (const WCHAR *pch), (pch));
  91. DELAY_LOAD(g_hinstOLEAUT32, OLEAUT32, BSTR, SysAllocStringByteLen,
  92.     (LPCSTR psz, unsigned int len), (psz, len));
  93. DELAY_LOAD(g_hinstOLEAUT32, OLEAUT32, BSTR, SysAllocStringLen,
  94.     (const WCHAR *pch, unsigned int i), (pch, i));
  95. DELAY_LOAD_VOID(g_hinstOLEAUT32, OLEAUT32, SysFreeString,
  96.     (BSTR bs), (bs));
  97. DELAY_LOAD_UINT(g_hinstOLEAUT32, OLEAUT32, SysStringByteLen,
  98.     (BSTR str), (str));
  99. DELAY_LOAD_UINT(g_hinstOLEAUT32, OLEAUT32, SysStringLen,
  100.     (BSTR str), (str));
  101. DELAY_LOAD_HRESULT(g_hinstOLEAUT32, OLEAUT32, VariantChangeType,
  102.     (VARIANTARG * pvargDest, VARIANTARG * pvarSrc, USHORT wFlags, VARTYPE vt), 
  103.     (pvargDest, pvarSrc, wFlags, vt));
  104. #undef VariantClear
  105. DELAY_LOAD_HRESULT(g_hinstOLEAUT32, OLEAUT32, VariantClear,
  106.     (VARIANTARG *pvarg), (pvarg));
  107. DELAY_LOAD_HRESULT(g_hinstOLEAUT32, OLEAUT32, VariantCopy,
  108.     (VARIANTARG * pvargDest, VARIANTARG * pvargSrc), (pvargDest, pvargSrc));
  109. DELAY_LOAD_HRESULT(g_hinstOLEAUT32, OLEAUT32, VarI4FromStr,
  110.     (OLECHAR FAR * strIn, LCID lcid, DWORD dwFlags, LONG * plOut), (strIn, lcid, dwFlags, plOut));
  111. // --------- CDFVIEW.DLL ---------------
  112. HINSTANCE g_hinstCDFVIEW = NULL;
  113. DELAY_LOAD_HRESULT(g_hinstCDFVIEW, CDFVIEW, ParseDesktopComponent,
  114.            (HWND hwndOwner, LPWSTR wszURL, COMPONENT *pInfo),
  115.            (hwndOwner, wszURL, pInfo));
  116. DELAY_LOAD_HRESULT(g_hinstCDFVIEW, CDFVIEW, SubscribeToCDF,
  117.            (HWND hwndParent, LPCWSTR pwzUrl, DWORD dwCDFTypes),
  118.            (hwndParent, pwzUrl, dwCDFTypes));
  119. //---------- BROWSEUI.DLL --------------
  120. HINSTANCE g_hinstBrowseui = NULL;
  121. DELAY_LOAD_IE_ORD(g_hinstBrowseui, BROWSEUI, BOOL, SHOnCWMCommandLine, 127,
  122.                 (LPARAM lParam), (lParam));
  123. DELAY_LOAD_IE_ORD(g_hinstBrowseui, BROWSEUI, BOOL, SHOpenFolderWindow, 102,
  124.                (IETHREADPARAM* pieiIn),
  125.                 (pieiIn));
  126. DELAY_LOAD_IE_ORD_VOID(g_hinstBrowseui, BROWSEUI, SHCreateSavedWindows, 105,
  127.                   (), ());
  128. DELAY_LOAD_IE_ORD(g_hinstBrowseui, BROWSEUI, HRESULT,
  129.                   SHCreateBandForPidl, 120,
  130.                   (LPCITEMIDLIST pidl, IUnknown** ppunk, BOOL fAllowBrowserBand),
  131.                   (pidl, ppunk, fAllowBrowserBand));
  132. DELAY_LOAD_IE_ORD(g_hinstBrowseui, BROWSEUI, HRESULT,
  133.                   SHPidlFromDataObject, 121,
  134.                   (IDataObject *pdtobj, LPITEMIDLIST * ppidlTarget, LPWSTR pszDisplayName, DWORD cchDisplayName),
  135.                   (pdtobj, ppidlTarget, pszDisplayName, cchDisplayName));
  136. DELAY_LOAD_IE_ORD(g_hinstBrowseui, BROWSEUI, DWORD,
  137.                   IDataObject_GetDeskBandState, 122,
  138.                   (IDataObject *pdtobj),
  139.                   (pdtobj));
  140. DELAY_LOAD_IE_ORD(g_hinstBrowseui, BROWSEUI, IETHREADPARAM*,
  141.                   SHCreateIETHREADPARAM, 123,
  142.                   (LPCWSTR pszCmdLineIn, int nCmdShowIn, ITravelLog *ptlIn, IEFreeThreadedHandShake* piehsIn),
  143.                   (pszCmdLineIn, nCmdShowIn, ptlIn, piehsIn));
  144. DELAY_LOAD_IE_ORD_VOID(g_hinstBrowseui, BROWSEUI,
  145.                   SHDestroyIETHREADPARAM, 126,
  146.                   (IETHREADPARAM* pieiIn),
  147.                   (pieiIn));
  148. DELAY_LOAD_IE_ORD(g_hinstBrowseui, BROWSEUI, BOOL,
  149.                   SHParseIECommandLine, 125,
  150.                   (LPCWSTR * ppszCmdLine, IETHREADPARAM * piei),
  151.                   (ppszCmdLine, piei));
  152. DELAY_LOAD_IE_ORD(g_hinstBrowseui, BROWSEUI, HRESULT,
  153.                   Channel_QuickLaunch, 133, (void),());
  154. // --------- WINMM.DLL ---------------
  155. HINSTANCE g_hinstWINMM = NULL;
  156. #ifdef UNICODE
  157. DELAY_LOAD(g_hinstWINMM, WINMM, BOOL, PlaySoundW,
  158.         (LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound),
  159.         (pszSound, hmod, fdwSound));
  160. #else
  161. DELAY_LOAD(g_hinstWINMM, WINMM, BOOL, PlaySoundA,
  162.         (LPCSTR pszSound, HMODULE hmod, DWORD fdwSound),
  163.         (pszSound, hmod, fdwSound));
  164. #endif
  165. // --------- MPR.DLL ---------------
  166. HMODULE g_hmodMPR = NULL;
  167. #ifdef UNICODE
  168. DELAY_LOAD_WNET(g_hmodMPR, MPR, WNetGetConnectionA,
  169.     (IN LPCSTR lpLocalName,
  170.      OUT LPSTR  lpRemoteName,
  171.      IN OUT LPDWORD  lpnLength),
  172.     (lpLocalName, lpRemoteName, lpnLength));
  173. #else
  174. DELAY_LOAD_WNET(g_hmodMPR, MPR, WNetGetConnectionW,
  175.     (IN LPCWSTR lpLocalName,
  176.      OUT LPWSTR  lpRemoteName,
  177.      IN OUT LPDWORD  lpnLength),
  178.     (lpLocalName, lpRemoteName, lpnLength));
  179. #endif