Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

101 lines
3.6 KiB

  1. /*
  2. ** m i m e d e m . h
  3. **
  4. ** Purpose: implement the loader functions for defer/demand -loaded libraries
  5. **
  6. ** Creators: yst
  7. ** Created: 2/10/99
  8. **
  9. ** Copyright (C) Microsoft Corp. 1999
  10. */
  11. //
  12. // IF YOU #INCLUDE A FILE HERE YOU PROBABLY ARE CONFUSED.
  13. // THIS FILE IS INCLUDED BY LOTS OF PEOPLE. THINK THRICE
  14. // BEFORE #INCLUDING *ANYTHING* HERE. MAKE GOOD USE
  15. // OF FORWARD REFS INSTEAD.
  16. //
  17. #define USE_CRITSEC
  18. #ifdef IMPLEMENT_LOADER_FUNCTIONS
  19. #define LOADER_FUNCTION(ret, name, args1, args2, err, dll) \
  20. typedef ret (WINAPI * TYP_##name) args1; \
  21. extern TYP_##name VAR_##name; \
  22. ret WINAPI LOADER_##name args1 \
  23. { \
  24. DemandLoad##dll(); \
  25. if (VAR_##name == LOADER_##name) return err; \
  26. return VAR_##name args2; \
  27. } \
  28. TYP_##name VAR_##name = LOADER_##name;
  29. #define LOADER_FUNCTION_VOID(ret, name, args1, args2, dll) \
  30. typedef ret (WINAPI * TYP_##name) args1; \
  31. extern TYP_##name VAR_##name; \
  32. ret WINAPI LOADER_##name args1 \
  33. { \
  34. DemandLoad##dll(); \
  35. if (VAR_##name == LOADER_##name) return; \
  36. VAR_##name args2; \
  37. return; \
  38. } \
  39. TYP_##name VAR_##name = LOADER_##name;
  40. #else // !IMPLEMENT_LOADER_FUNCTIONS
  41. #define LOADER_FUNCTION(ret, name, args1, args2, err, dll) \
  42. typedef ret (WINAPI * TYP_##name) args1; \
  43. extern TYP_##name VAR_##name;
  44. #define LOADER_FUNCTION_VOID(ret, name, args1, args2, dll) \
  45. typedef ret (WINAPI * TYP_##name) args1; \
  46. extern TYP_##name VAR_##name;
  47. #endif // IMPLEMENT_LOADER_FUNCTIONS
  48. void InitDemandMimeole(void);
  49. void FreeDemandMimeOle(void);
  50. /////////////////////////////////////
  51. // INETCOMM.DLL
  52. #include "mimeole.h"
  53. #define _INETCOMM_
  54. BOOL DemandLoadMimeOle(void);
  55. LOADER_FUNCTION( HRESULT, MimeOleSMimeCapsToDlg,
  56. (LPBYTE pbSMimeCaps, DWORD cbSMimeCaps, DWORD cCerts, PCX509CERT * rgCerts, HWND hwndDlg, DWORD idEncAlgs, DWORD idSignAlgs, DWORD idBlob),
  57. (pbSMimeCaps, cbSMimeCaps, cCerts, rgCerts, hwndDlg, idEncAlgs, idSignAlgs,idBlob),
  58. E_FAIL, MimeOle)
  59. #define MimeOleSMimeCapsToDlg VAR_MimeOleSMimeCapsToDlg
  60. LOADER_FUNCTION( HRESULT, MimeOleSMimeCapsFromDlg,
  61. (HWND hwnd, DWORD idEncAlgs, DWORD idSignAlgs, DWORD idBlob, LPBYTE pbSMimeCaps, DWORD * pcbSmimeCaps),
  62. (hwnd, idEncAlgs, idSignAlgs, idBlob, pbSMimeCaps, pcbSmimeCaps),
  63. E_FAIL, MimeOle)
  64. #define MimeOleSMimeCapsFromDlg VAR_MimeOleSMimeCapsFromDlg
  65. LOADER_FUNCTION( HRESULT, MimeOleSMimeCapsFull,
  66. (LPVOID pv, BOOL fFullEncryption, BOOL fFullSigning, LPBYTE pbSymCaps, DWORD * pcbSymCaps),
  67. (pv, fFullEncryption, fFullSigning, pbSymCaps, pcbSymCaps),
  68. E_FAIL, MimeOle)
  69. #define MimeOleSMimeCapsFull VAR_MimeOleSMimeCapsFull
  70. LOADER_FUNCTION( HRESULT, MimeOleSMimeCapInit,
  71. (LPBYTE pbSMimeCap, DWORD cbSMimeCap, LPVOID * ppv),
  72. (pbSMimeCap, cbSMimeCap, ppv),
  73. E_FAIL, MimeOle)
  74. #define MimeOleSMimeCapInit VAR_MimeOleSMimeCapInit