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.

84 lines
2.6 KiB

  1. /***********************************************************************
  2. *
  3. * _ABCONT.H
  4. *
  5. * Header file for code in ABCONT.C: Container Object
  6. *
  7. * Copyright 1992 - 1996 Microsoft Corporation. All Rights Reserved.
  8. *
  9. ***********************************************************************/
  10. /*
  11. * ABContainer object.
  12. */
  13. #undef INTERFACE
  14. #define INTERFACE struct _CONTAINER
  15. #undef MAPIMETHOD_
  16. #define MAPIMETHOD_(type, method) MAPIMETHOD_DECLARE(type, method, CONTAINER_)
  17. MAPI_IUNKNOWN_METHODS(IMPL)
  18. MAPI_IMAPIPROP_METHODS(IMPL)
  19. MAPI_IMAPICONTAINER_METHODS(IMPL)
  20. MAPI_IABCONTAINER_METHODS(IMPL)
  21. #undef MAPIMETHOD_
  22. #define MAPIMETHOD_(type, method) MAPIMETHOD_TYPEDEF(type, method, CONTAINER_)
  23. MAPI_IUNKNOWN_METHODS(IMPL)
  24. MAPI_IMAPIPROP_METHODS(IMPL)
  25. MAPI_IMAPICONTAINER_METHODS(IMPL)
  26. MAPI_IABCONTAINER_METHODS(IMPL)
  27. #undef MAPIMETHOD_
  28. #define MAPIMETHOD_(type, method) STDMETHOD_(type, method)
  29. DECLARE_MAPI_INTERFACE(CONTAINER_) {
  30. BEGIN_INTERFACE
  31. MAPI_IUNKNOWN_METHODS(IMPL)
  32. MAPI_IMAPIPROP_METHODS(IMPL)
  33. MAPI_IMAPICONTAINER_METHODS(IMPL)
  34. MAPI_IABCONTAINER_METHODS(IMPL)
  35. };
  36. typedef struct _CONTAINER {
  37. MAILUSER_BASE_MEMBERS(CONTAINER)
  38. ULONG ulType;
  39. BOOL fLoadedLDAP;
  40. } CONTAINER, *LPCONTAINER;
  41. #define CBCONTAINER sizeof(CONTAINER)
  42. HRESULT HrSetCONTAINERAccess(LPCONTAINER lpCONTAINER,
  43. ULONG ulFlags);
  44. //
  45. // Create a new AB Container object
  46. //
  47. HRESULT HrNewCONTAINER(LPIAB lpIAB,
  48. ULONG ulType,
  49. LPCIID lpInterface,
  50. ULONG ulOpenFlags,
  51. ULONG cbEID,
  52. LPENTRYID lpEID,
  53. ULONG *lpulObjType,
  54. LPVOID *lppContainer);
  55. // Internal flags for HrNewCONTAINER - these flags determine the type of
  56. // container being created
  57. typedef enum _ContainerType {
  58. AB_ROOT = 0, // Root Container
  59. AB_WELL,
  60. AB_DL, // Distribution list container
  61. AB_CONTAINER, // Normal container
  62. AB_PAB, // "PAB" or default container
  63. AB_LDAP_CONTAINER // Special LDAP container
  64. } CONTAINER_TYPE, *LPCONTAINER_TYPE;
  65. // Inside the WAB when we call GetContentsTable followed by SetColumns, we basically end up
  66. // reading everything from the WAB twice which is a time consuming process
  67. // To improve performance we can try avoiding one unnecessary call but we need to do
  68. // this carefully ..
  69. // The following flag is specified to GetContentsTable ONLY WHEN that call will
  70. // be imediately followed by SetColumns .. do not expose this flag to anyone else..
  71. // this is a WAB-internal flag only
  72. //
  73. #define WAB_CONTENTTABLE_NODATA 0x00400000