562 lines
22 KiB
C++
562 lines
22 KiB
C++
|
//*********************************************************************
|
||
|
//* 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)
|
||
|
|