|
|
//*********************************************************************
//* Microsoft Windows **
//* Copyright(c) Microsoft Corp., 1994-1996 **
//*********************************************************************
//
// DLYLDDLL.C - uses macros for delay loading of DLLs
//
#include "inetcplp.h"
#include <cryptui.h>
// coded copied from SHDOCVW's dllload.c file
#pragma warning(disable:4229) // No warnings when modifiers used on data
// Exporting by ordinal is not available on UNIX.
// But we have all these symbols exported because it's UNIX default.
#ifdef UNIX
#define GET_PRIVATE_PROC_ADDRESS(_hinst, _fname, _ord) GetProcAddress(_hinst, #_fname)
#else
#define GET_PRIVATE_PROC_ADDRESS(_hinst, _fname, _ord) GetProcAddress(_hinst, (LPSTR) _ord)
#endif
#define ENSURE_LOADED(_hinst, _dll) ( _hinst ? TRUE : NULL != (_hinst=LoadLibraryA(#_dll)) )
#define DELAY_LOAD_ERR(_hinst, _dll, _ret, _fn, _args, _nargs, _err) \
_ret __stdcall _fn _args \ { \ static _ret (* __stdcall _pfn##_fn) _args = NULL; \ if (!ENSURE_LOADED(_hinst, _dll)) \ { \ ASSERT(_hinst); \ return (_ret)_err; \ } \ if (_pfn##_fn == NULL) \ { \ *(FARPROC*)&(_pfn##_fn) = GetProcAddress(_hinst, #_fn); \ ASSERT(_pfn##_fn); \ if (_pfn##_fn == NULL) \ return (_ret)_err; \ } \ return _pfn##_fn _nargs; \ }
#define DELAY_LOAD(_hinst, _dll, _ret, _fn, _args, _nargs) DELAY_LOAD_ERR(_hinst, _dll, _ret, _fn, _args, _nargs, 0)
#define DELAY_LOAD_HRESULT(_hinst, _dll, _fn, _args, _nargs) DELAY_LOAD_ERR(_hinst, _dll, HRESULT, _fn, _args, _nargs, E_FAIL)
#define DELAY_LOAD_SAFEARRAY(_hinst, _dll, _fn, _args, _nargs) DELAY_LOAD_ERR(_hinst, _dll, SAFEARRAY *, _fn, _args, _nargs, NULL)
#define DELAY_LOAD_UINT(_hinst, _dll, _fn, _args, _nargs) DELAY_LOAD_ERR(_hinst, _dll, UINT, _fn, _args, _nargs, 0)
#define DELAY_LOAD_VOID(_hinst, _dll, _fn, _args, _nargs) \
void __stdcall _fn _args \ { \ static void (* __stdcall _pfn##_fn) _args = NULL; \ if (!ENSURE_LOADED(_hinst, _dll)) \ { \ ASSERT((BOOL)_hinst); \ return; \ } \ if (_pfn##_fn == NULL) \ { \ *(FARPROC*)&(_pfn##_fn) = GetProcAddress(_hinst, #_fn); \ ASSERT((BOOL)_pfn##_fn); \ if (_pfn##_fn == NULL) \ return; \ } \ _pfn##_fn _nargs; \ }
// For private entrypoints exported by ordinal.
#define DELAY_LOAD_ORD_ERR(_hinst, _dll, _ret, _fn, _ord, _args, _nargs, _err) \
_ret __stdcall _fn _args \ { \ static _ret (* __stdcall _pfn##_fn) _args = NULL; \ if (!ENSURE_LOADED(_hinst, _dll)) \ { \ ASSERT(_hinst); \ return (_ret)_err; \ } \ if (_pfn##_fn == NULL) \ { \ *(FARPROC*)&(_pfn##_fn) = GET_PRIVATE_PROC_ADDRESS(_hinst, _fn, _ord); \ ASSERT(_pfn##_fn); \ if (_pfn##_fn == NULL) \ return (_ret)_err; \ } \ return _pfn##_fn _nargs; \ }
#define DELAY_LOAD_ORD_HRESULT(_hinst, _dll, _fn, _ord, _args, _nargs) DELAY_LOAD_ORD_ERR(_hinst, _dll, HRESULT, _fn, _ord, _args, _nargs, E_FAIL)
#define DELAY_LOAD_ORD(_hinst, _dll, _ret, _fn, _ord, _args, _nargs) DELAY_LOAD_ORD_ERR(_hinst, _dll, _ret, _fn, _ord, _args, _nargs, 0)
#define DELAY_LOAD_VOID_ORD(_hinst, _dll, _fn, _ord, _args, _nargs) \
void __stdcall _fn _args \ { \ static void (* __stdcall _pfn##_fn) _args = NULL; \ if (!ENSURE_LOADED(_hinst, _dll)) \ { \ ASSERT((BOOL)_hinst); \ return; \ } \ if (_pfn##_fn == NULL) \ { \ *(FARPROC*)&(_pfn##_fn) = GET_PRIVATE_PROC_ADDRESS(_hinst, _fn, _ord); \ ASSERT((BOOL)_pfn##_fn); \ if (_pfn##_fn == NULL) \ return; \ } \ _pfn##_fn _nargs; \ }
//--------- wininet.dll -----------------
HINSTANCE g_hinstWinInet = NULL;
DELAY_LOAD(g_hinstWinInet, WININET.DLL, BOOL, InternetSetOption, (IN HINTERNET hInternet OPTIONAL,IN DWORD dwOption,IN LPVOID lpBuffer, IN DWORD dwBufferLength), (hInternet,dwOption,lpBuffer,dwBufferLength));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, BOOL, InternetQueryOption, (IN HINTERNET hInternet OPTIONAL,IN DWORD dwOption,IN LPVOID lpBuffer, IN OUT LPDWORD lpdwBufferLength), (hInternet,dwOption,lpBuffer,lpdwBufferLength));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, DWORD, ShowX509EncodedCertificate, (IN HWND hWndParent,IN LPBYTE lpCert,IN DWORD cbCert), (hWndParent,lpCert,cbCert));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, DWORD, ParseX509EncodedCertificateForListBoxEntry, (IN LPBYTE lpCert,IN DWORD cbCert,OUT LPSTR lpszListBoxEntry,IN LPDWORD lpdwListBoxEntry), (lpCert,cbCert,lpszListBoxEntry,lpdwListBoxEntry));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, BOOL, GetUrlCacheConfigInfoA, ( OUT LPINTERNET_CACHE_CONFIG_INFOA lpCacheConfigInfo, IN OUT LPDWORD lpdwCacheConfigInfoBufferSize, IN DWORD dwFieldControl ), (lpCacheConfigInfo,lpdwCacheConfigInfoBufferSize,dwFieldControl));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, BOOL, SetUrlCacheConfigInfoA, ( IN LPINTERNET_CACHE_CONFIG_INFOA lpCacheConfigInfo, IN DWORD dwFieldControl ), (lpCacheConfigInfo,dwFieldControl));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, BOOL, FreeUrlCacheSpaceA, ( IN LPCSTR lpszCachePath, IN DWORD dwSize, IN DWORD dwReserved ), (lpszCachePath,dwSize,dwReserved));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, BOOL, UpdateUrlCacheContentPath, ( IN LPSTR lpszCachePath ), (lpszCachePath));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, BOOL, FindCloseUrlCache, ( IN HANDLE hEnumHandle ), (hEnumHandle));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, HANDLE, FindFirstUrlCacheEntryA, ( IN LPCSTR lpszUrlSearchPattern, OUT LPINTERNET_CACHE_ENTRY_INFOA lpFirstCacheEntryInfo, IN OUT LPDWORD lpdwFirstCacheEntryInfoBufferSize ), (lpszUrlSearchPattern, lpFirstCacheEntryInfo, lpdwFirstCacheEntryInfoBufferSize));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, BOOL, FindNextUrlCacheEntryA, ( IN HANDLE hEnumHandle, OUT LPINTERNET_CACHE_ENTRY_INFOA lpFirstCacheEntryInfo, IN OUT LPDWORD lpdwFirstCacheEntryInfoBufferSize ), (hEnumHandle, lpFirstCacheEntryInfo, lpdwFirstCacheEntryInfoBufferSize));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, BOOL, DeleteUrlCacheEntryA, ( IN LPCSTR lpszUrlName ), (lpszUrlName));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, HANDLE, FindFirstUrlCacheEntryExA, ( IN LPCSTR lpszUrlSearchPattern, IN DWORD dwFlags, IN DWORD dwFilter, IN GROUPID GroupId, OUT LPINTERNET_CACHE_ENTRY_INFOA lpFirstCacheEntryInfo, IN OUT LPDWORD lpdwFirstCacheEntryInfoBufferSize, OUT LPVOID lpReserved, // must pass NULL
IN OUT LPDWORD pcbReserved2, // must pass NULL
IN LPVOID lpReserved3 // must pass NULL
), (lpszUrlSearchPattern, dwFlags, dwFilter, GroupId, lpFirstCacheEntryInfo, lpdwFirstCacheEntryInfoBufferSize, lpReserved, pcbReserved2, lpReserved3));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, BOOL, FindNextUrlCacheEntryExA, ( IN HANDLE hEnumHandle, OUT LPINTERNET_CACHE_ENTRY_INFOA lpFirstCacheEntryInfo, IN OUT LPDWORD lpdwFirstCacheEntryInfoBufferSize, OUT LPVOID lpReserved, // must pass NULL
IN OUT LPDWORD pcbReserved2, // must pass NULL
IN LPVOID lpReserved3 // must pass NULL
), (hEnumHandle, lpFirstCacheEntryInfo, lpdwFirstCacheEntryInfoBufferSize, lpReserved, pcbReserved2, lpReserved3));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, BOOL, InternetGetConnectedStateExA, ( OUT LPDWORD lpdwFlags, IN LPSTR lpszConnectionName, IN DWORD dwNameSize, IN DWORD dwReserved ), (lpdwFlags, lpszConnectionName, dwNameSize, dwReserved));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, BOOL, IncrementUrlCacheHeaderData, ( IN DWORD nIdx, OUT LPDWORD lpdwData ), (nIdx, lpdwData));
DELAY_LOAD_ORD(g_hinstWinInet, WININET.DLL, BOOL, GetDiskInfoA, 102, ( IN PSTR pszPath, IN OUT PDWORD pdwClusterSize, IN OUT PDWORDLONG pdlAvail, IN OUT PDWORDLONG pdlTotal ), (pszPath, pdwClusterSize, pdlAvail, pdlTotal));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, DWORD, PrivacyGetZonePreferenceW, ( DWORD dwZone, DWORD dwType, LPDWORD pdwTemplate, LPWSTR pszBuffer, LPDWORD pdwBufferLength ), (dwZone, dwType, pdwTemplate, pszBuffer, pdwBufferLength));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, DWORD, PrivacySetZonePreferenceW, ( DWORD dwZone, DWORD dwType, DWORD dwTemplate, LPCWSTR pszPreference ), (dwZone, dwType, dwTemplate, pszPreference));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, BOOL, InternetEnumPerSiteCookieDecisionW, ( OUT LPWSTR pwszSiteName, IN OUT unsigned long *pcbName, OUT unsigned long *pdwDecision, IN unsigned long dwIndex ), (pwszSiteName, pcbName, pdwDecision, dwIndex));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, BOOL, InternetClearAllPerSiteCookieDecisions, (), ());
//BOOLAPI IsDomainLegalCookieDomainW( IN LPCWSTR pwchDomain, IN LPCWSTR pwchFullDomain)
DELAY_LOAD_ORD(g_hinstWinInet, WININET.DLL, BOOL, IsDomainLegalCookieDomainW, 117, ( IN LPCWSTR pwchDomain, IN LPCWSTR pwchFullDomain ), (pwchDomain, pwchFullDomain));
DELAY_LOAD(g_hinstWinInet, WININET.DLL, BOOL, InternetSetPerSiteCookieDecisionW, ( IN LPCWSTR pwchHostName, DWORD dwDecision ), (pwchHostName, dwDecision));
//--------- urlmon.dll ------------------
HINSTANCE g_hinstUrlMon = NULL;
DELAY_LOAD(g_hinstUrlMon, URLMON.DLL, HRESULT, UrlMkSetSessionOption, (DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD dwReserved), (dwOption, pBuffer, dwBufferLength, dwReserved));
DELAY_LOAD(g_hinstUrlMon, URLMON.DLL, HRESULT, CoInternetCreateZoneManager, (IServiceProvider *pSP, IInternetZoneManager **ppZM, DWORD dwReserved), (pSP, ppZM, dwReserved));
DELAY_LOAD(g_hinstUrlMon, URLMON.DLL, HRESULT, CoInternetCreateSecurityManager, (IServiceProvider *pSP, IInternetSecurityManager **ppSM, DWORD dwReserved), (pSP, ppSM, dwReserved));
DELAY_LOAD(g_hinstUrlMon, URLMON.DLL, HRESULT, CreateURLMoniker, (LPMONIKER pMkCtx, LPCWSTR szURL, LPMONIKER FAR * ppmk), (pMkCtx,szURL,ppmk));
DELAY_LOAD(g_hinstUrlMon, URLMON.DLL, HRESULT, FaultInIEFeature, (HWND hWnd, uCLSSPEC *pClassSpec, QUERYCONTEXT *pQuery, DWORD dwFlags), (hWnd, pClassSpec, pQuery, dwFlags));
DELAY_LOAD(g_hinstUrlMon, URLMON.DLL, HRESULT, CoInternetParseUrl, (LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwFlags, LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved), (pwzUrl, ParseAction, dwFlags, pszResult, cchResult, pcchResult, dwReserved));
// -------- crypt32.dll ----------------------------
HINSTANCE g_hinstCrypt32 = NULL;
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, HCERTSTORE, CertOpenSystemStoreA, (HCRYPTPROV hProv, LPCSTR szSubSystemProtocol), (hProv, szSubSystemProtocol));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, BOOL , CertCloseStore, (IN HCERTSTORE hCertStore, DWORD dwFlags), (hCertStore, dwFlags));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, BOOL, CertGetEnhancedKeyUsage, (IN PCCERT_CONTEXT pCertContext, IN DWORD dwFlags, OUT PCERT_ENHKEY_USAGE pUsage, IN OUT DWORD *pcbUsage), (pCertContext, dwFlags, pUsage, pcbUsage));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, BOOL, CertSetEnhancedKeyUsage, (IN PCCERT_CONTEXT pCertContext, IN PCERT_ENHKEY_USAGE pUsage), (pCertContext, pUsage));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, BOOL, CertDeleteCertificateFromStore, (IN PCCERT_CONTEXT pCertContext), (pCertContext));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, BOOL, CertAddEnhancedKeyUsageIdentifier, (IN PCCERT_CONTEXT pCertContext, IN LPCSTR pszUsageIdentifier), (pCertContext, pszUsageIdentifier));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, BOOL, CertRemoveEnhancedKeyUsageIdentifier, (IN PCCERT_CONTEXT pCertContext,IN LPCSTR pszUsageIdentifier), (pCertContext, pszUsageIdentifier));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, PCCERT_CONTEXT, CertFindCertificateInStore, (IN HCERTSTORE hCertStore, IN DWORD dwCertEncodingType, IN DWORD dwFindFlags,IN DWORD dwFindType, IN const void *pvFindPara, IN PCCERT_CONTEXT pPrevCertContext), (hCertStore, dwCertEncodingType, dwFindFlags, dwFindType, pvFindPara, pPrevCertContext));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, BOOL, CertAddEncodedCertificateToStore, (IN HCERTSTORE hCertStore,IN DWORD dwCertEncodingType,IN const BYTE *pbCertEncoded, IN DWORD cbCertEncoded,IN DWORD dwAddDisposition, OUT OPTIONAL PCCERT_CONTEXT *ppCertContext), (hCertStore, dwCertEncodingType, pbCertEncoded, cbCertEncoded, dwAddDisposition, ppCertContext));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, BOOL, CertFreeCertificateContext, (IN PCCERT_CONTEXT pCertContext), (pCertContext));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, BOOL, CertCompareCertificateName, (IN DWORD dwCertEncodingType,IN PCERT_NAME_BLOB pCertName1,IN PCERT_NAME_BLOB pCertName2), (dwCertEncodingType,pCertName1,pCertName2));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, PCCERT_CONTEXT, CertCreateCertificateContext, (IN DWORD dwCertEncodingType, IN const BYTE *pbCertEncoded, IN DWORD cbCertEncoded), (dwCertEncodingType,pbCertEncoded,cbCertEncoded));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, BOOL, CertAddCertificateContextToStore, (IN HCERTSTORE hCertStore, IN PCCERT_CONTEXT pCertContext, IN DWORD dwAddDisposition, OUT OPTIONAL PCCERT_CONTEXT *ppStoreContext), (hCertStore,pCertContext,dwAddDisposition,ppStoreContext));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, PCCERT_CONTEXT, CertEnumCertificatesInStore, (IN HCERTSTORE hCertStore, IN PCCERT_CONTEXT pPrevCertContext), (hCertStore,pPrevCertContext));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, BOOL, PFXExportCertStore, (HCERTSTORE hStore, CRYPT_DATA_BLOB* pPFX, LPCWSTR szPassword, DWORD dwFlags), (hStore,pPFX, szPassword, dwFlags));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, HCERTSTORE, PFXImportCertStore, (CRYPT_DATA_BLOB* pPFX, LPCWSTR szPassword, DWORD dwFlags), (pPFX,szPassword,dwFlags));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, HCERTSTORE, CertOpenStore, (IN LPCSTR lpszStoreProvider, IN DWORD dwEncodingType, IN HCRYPTPROV hCryptProv, IN DWORD dwFlags, IN const void *pvPara), (lpszStoreProvider, dwEncodingType, hCryptProv, dwFlags, pvPara));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, BOOL, CryptHashCertificate, (IN HCRYPTPROV hCryptProv, IN ALG_ID Algid, IN DWORD dwFlags, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT BYTE *pbComputedHash, IN OUT DWORD *pcbComputedHash ), (hCryptProv,Algid,dwFlags,pbEncoded,cbEncoded,pbComputedHash,pcbComputedHash));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, PCCERT_CONTEXT, CertDuplicateCertificateContext, (IN PCCERT_CONTEXT pCertContext), (pCertContext));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, BOOL, CertGetCertificateContextProperty, (IN PCCERT_CONTEXT pCertContext, IN DWORD dwPropId, OUT void *pvData, IN OUT DWORD *pcbData ), (pCertContext, dwPropId, pvData, pcbData));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, BOOL, CryptDecodeObject, (IN DWORD dwCertEncodingType, IN LPCSTR lpszStructType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, IN DWORD dwFlags, OUT void *pvStructInfo, IN OUT DWORD *pcbStructInfo ), (dwCertEncodingType, lpszStructType, pbEncoded, cbEncoded, dwFlags, pvStructInfo, pcbStructInfo));
DELAY_LOAD(g_hinstCrypt32, CRYPT32.DLL, PCERT_EXTENSION, CertFindExtension, (IN LPCSTR pszObjId, IN DWORD cExtensions, IN CERT_EXTENSION rgExtensions[] ), (pszObjId, cExtensions, rgExtensions));
// -------- cryptui.dll ----------------------------
HINSTANCE g_hinstCryptui = NULL;
DELAY_LOAD(g_hinstCryptui, CRYPTUI.DLL, BOOL, CryptUIDlgCertMgr, (PCCRYPTUI_CERT_MGR_STRUCT pCryptUICertMgr), (pCryptUICertMgr));
//--------- shdocvw.dll ------------------
HINSTANCE g_hinstShdocvw = NULL; const TCHAR c_tszShdocvw[] = TEXT("SHDOCVW.DLL");
// HRESULT URLSubRegQueryA(LPCSTR pszKey, LPCSTR pszValue, BOOL fUseHKCU, LPSTR pszUrlOut, DWORD cchSize, DWORD dwSubstitutions);
DELAY_LOAD_ORD_HRESULT(g_hinstShdocvw, SHDOCVW.DLL, URLSubRegQueryA, 151, (LPCSTR pszKey, LPCSTR pszValue, BOOL fUseHKCU, LPSTR pszUrlOut, DWORD cchSize, DWORD dwSubstitutions), (pszKey, pszValue, fUseHKCU, pszUrlOut, cchSize, dwSubstitutions));
// HRESULT ResetProfileSharing(HWND hwin);
DELAY_LOAD_ORD_HRESULT(g_hinstShdocvw, SHDOCVW.DLL, ResetProfileSharing, 164, (HWND hwnd), (hwnd));
// HRESULT ClearAutoSuggestForForms(DWORD dwClear);
DELAY_LOAD_ORD_HRESULT(g_hinstShdocvw, SHDOCVW.DLL, ClearAutoSuggestForForms, 211, (DWORD dwClear), (dwClear));
// HRESULT ResetWebSettings(HWND hwnd)
DELAY_LOAD_ORD_HRESULT(g_hinstShdocvw, SHDOCVW.DLL, ResetWebSettings, 223, (HWND hwnd, BOOL *pfChangedHomePage), (hwnd,pfChangedHomePage));
DELAY_LOAD( g_hinstShdocvw, SHDOCVW.DLL, BOOL, ImportPrivacySettings, (LPCWSTR szFilename), (szFilename));
#ifdef UNIX_FEATURE_ALIAS
DELAY_LOAD_ORD_HRESULT(g_hinstShdocvw, SHDOCVW.DLL, RefreshGlobalAliasList, 164, (), ()); #endif /* UNIX_FEATURE_ALIAS */
//--------- msrating.dll ----------------
HINSTANCE g_hinstRatings = NULL; const TCHAR c_tszRatingsDLL[] = TEXT("MSRATING.DLL");
DELAY_LOAD(g_hinstRatings, MSRATING.DLL, HRESULT, RatingEnable, (HWND hwndParent, LPCSTR pszUsername, BOOL fEnable), (hwndParent,pszUsername,fEnable));
DELAY_LOAD(g_hinstRatings, MSRATING.DLL, HRESULT, RatingSetupUI, (HWND hDlg, LPCSTR pszUsername), (hDlg, pszUsername));
DELAY_LOAD(g_hinstRatings, MSRATING.DLL, HRESULT, RatingEnabledQuery, (), ());
// --------- mshtml.dll --------------------
HINSTANCE g_hinstMSHTML = NULL; const TCHAR c_tszMSHTMLDLL[] = TEXT("MSHTML.DLL");
DELAY_LOAD(g_hinstMSHTML, MSHTML.DLL, HRESULT, ShowModalDialog, (HWND hwndParent, IMoniker *pmk, VARIANT *pvarArgIn, TCHAR* pchOptions, VARIANT *pvarArgOut), (hwndParent,pmk,pvarArgIn,pchOptions,pvarArgOut));
//
// We don't need to delay load anything from MSHTML,
// but we are using this still to determine if
// MSHTML.DLL is around.
//
HINSTANCE g_hinstOCCache = NULL;
DELAY_LOAD_HRESULT(g_hinstOCCache, OCCache.DLL, RemoveExpiredControls, (DWORD dwFlags, DWORD dwReserved), ( dwFlags, dwReserved));
// --------- mpr.dll --------------------
HINSTANCE g_hinstMPR = NULL; const TCHAR c_tszMPRDLL[] = TEXT("MPR.DLL");
#ifndef UNICODE
DELAY_LOAD(g_hinstMPR, MPR.DLL, DWORD, WNetGetConnectionA, (LPCSTR pszLocalDevice, LPSTR pszUNC, LPDWORD pcbUNC), (pszLocalDevice, pszUNC, pcbUNC)); #else
DELAY_LOAD(g_hinstMPR, MPR.DLL, DWORD, WNetGetConnectionW, (LPCTSTR pszLocalDevice, LPTSTR pszUNC, LPDWORD pcbUNC), (pszLocalDevice, pszUNC, pcbUNC)); #endif
// ---------- end of DLL definitions --------
#pragma warning(default:4229)
|