Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _WABAPI_H_
      7 #define _WABAPI_H_
      8 
      9 #ifdef __cplusplus
     10 extern "C" {
     11 #endif
     12 
     13   typedef struct _WABACTIONITEM *LPWABACTIONITEM;
     14 
     15 #define CBIWABOBJECT sizeof(IWABOBJECT)
     16 #define WAB_IWABOBJECT_METHODS(IPURE) MAPIMETHOD(GetLastError) (THIS_ HRESULT hResult,ULONG ulFlags,LPMAPIERROR *lppMAPIError) IPURE; MAPIMETHOD(AllocateBuffer) (THIS_ ULONG cbSize,LPVOID *lppBuffer) IPURE; MAPIMETHOD(AllocateMore) (THIS_ ULONG cbSize,LPVOID lpObject,LPVOID *lppBuffer) IPURE; MAPIMETHOD(FreeBuffer) (THIS_ LPVOID lpBuffer) IPURE; MAPIMETHOD(Backup) (THIS_ LPSTR lpFileName) IPURE; MAPIMETHOD(Import) (THIS_ LPSTR lpImportParam) IPURE; MAPIMETHOD(Find) (THIS_ LPADRBOOK lpIAB,HWND hWnd) IPURE; MAPIMETHOD(VCardDisplay) (THIS_ LPADRBOOK lpIAB,HWND hWnd,LPSTR lpszFileName) IPURE; MAPIMETHOD(LDAPUrl) (THIS_ LPADRBOOK lpIAB,HWND hWnd,ULONG ulFlags,LPSTR lpszURL,LPMAILUSER *lppMailUser) IPURE; MAPIMETHOD(VCardCreate) (THIS_ LPADRBOOK lpIAB,ULONG ulFlags,LPSTR lpszVCard,LPMAILUSER lpMailUser) IPURE; MAPIMETHOD(VCardRetrieve) (THIS_ LPADRBOOK lpIAB,ULONG ulFlags,LPSTR lpszVCard,LPMAILUSER *lppMailUser) IPURE; MAPIMETHOD(GetMe) (THIS_ LPADRBOOK lpIAB,ULONG ulFlags,DWORD *lpdwAction,SBinary *lpsbEID,ULONG ulParam) IPURE; MAPIMETHOD(SetMe) (THIS_ LPADRBOOK lpIAB,ULONG ulFlags,SBinary sbEID,ULONG ulParam) IPURE;
     17 
     18 #undef INTERFACE
     19 #define INTERFACE IWABObject
     20   DECLARE_MAPI_INTERFACE_(IWABObject,IUnknown) {
     21     BEGIN_INTERFACE
     22       MAPI_IUNKNOWN_METHODS(PURE)
     23       WAB_IWABOBJECT_METHODS(PURE)
     24   };
     25 
     26   DECLARE_MAPI_INTERFACE_PTR(IWABObject,LPWABOBJECT);
     27 
     28 #undef INTERFACE
     29 #define INTERFACE struct _IWABOBJECT
     30 
     31 #undef METHOD_PREFIX
     32 #define METHOD_PREFIX IWABOBJECT_
     33 #undef LPVTBL_ELEM
     34 #define LPVTBL_ELEM lpvtbl
     35 #undef MAPIMETHOD_
     36 #define MAPIMETHOD_(type,method) MAPIMETHOD_DECLARE(type,method,IWABOBJECT_)
     37   MAPI_IUNKNOWN_METHODS(IMPL)
     38     WAB_IWABOBJECT_METHODS(IMPL)
     39 #undef MAPIMETHOD_
     40 #define MAPIMETHOD_(type,method) MAPIMETHOD_TYPEDEF(type,method,IWABOBJECT_)
     41     MAPI_IUNKNOWN_METHODS(IMPL)
     42     WAB_IWABOBJECT_METHODS(IMPL)
     43 #undef MAPIMETHOD_
     44 #define MAPIMETHOD_(type,method) STDMETHOD_(type,method)
     45 
     46     DECLARE_MAPI_INTERFACE(IWABOBJECT_)
     47   {
     48     BEGIN_INTERFACE
     49       MAPI_IUNKNOWN_METHODS(IMPL)
     50       WAB_IWABOBJECT_METHODS(IMPL)
     51   };
     52 
     53 #define WABOBJECT_LDAPURL_RETURN_MAILUSER 0x00000001
     54 #define WABOBJECT_ME_NEW 0x00000001
     55 #define WABOBJECT_ME_NOCREATE 0x00000002
     56 
     57 #define WAB_VCARD_FILE 0x00000000
     58 #define WAB_VCARD_STREAM 0x00000001
     59 
     60   typedef struct _tagWAB_PARAM {
     61     ULONG cbSize;
     62     HWND hwnd;
     63     LPSTR szFileName;
     64     ULONG ulFlags;
     65     GUID guidPSExt;
     66   } WAB_PARAM,*LPWAB_PARAM;
     67 
     68 #define WAB_USE_OE_SENDMAIL 0x00000001
     69 #define WAB_ENABLE_PROFILES 0x00400000
     70 
     71   STDMETHODIMP WABOpen(LPADRBOOK *lppAdrBook,LPWABOBJECT *lppWABObject,LPWAB_PARAM lpWP,DWORD Reserved2);
     72 
     73   typedef HRESULT (WINAPI WABOPEN)(LPADRBOOK *lppAdrBook,LPWABOBJECT *lppWABObject,LPWAB_PARAM lpWP,DWORD Reserved2);
     74   typedef WABOPEN *LPWABOPEN;
     75 
     76   STDMETHODIMP WABOpenEx(LPADRBOOK *lppAdrBook,LPWABOBJECT *lppWABObject,LPWAB_PARAM lpWP,DWORD Reserved,ALLOCATEBUFFER *fnAllocateBuffer,ALLOCATEMORE *fnAllocateMore,FREEBUFFER *fnFreeBuffer);
     77 
     78   typedef HRESULT (WINAPI WABOPENEX)(LPADRBOOK *lppAdrBook,LPWABOBJECT *lppWABObject,LPWAB_PARAM lpWP,DWORD Reserved,ALLOCATEBUFFER *fnAllocateBuffer,ALLOCATEMORE *fnAllocateMore,FREEBUFFER *fnFreeBuffer);
     79   typedef WABOPENEX *LPWABOPENEX;
     80 
     81   typedef struct _WABIMPORTPARAM {
     82     ULONG cbSize;
     83     LPADRBOOK lpAdrBook;
     84     HWND hWnd;
     85     ULONG ulFlags;
     86     LPSTR lpszFileName;
     87   } WABIMPORTPARAM,*LPWABIMPORTPARAM;
     88 
     89 #define WAB_DISPLAY_LDAPURL 0x00000001
     90 #define WAB_CONTEXT_ADRLIST 0x00000002
     91 #define WAB_DISPLAY_ISNTDS 0x00000004
     92 
     93   typedef struct _WABEXTDISPLAY {
     94     ULONG cbSize;
     95     LPWABOBJECT lpWABObject;
     96     LPADRBOOK lpAdrBook;
     97     LPMAPIPROP lpPropObj;
     98     WINBOOL fReadOnly;
     99     WINBOOL fDataChanged;
    100     ULONG ulFlags;
    101     LPVOID lpv;
    102     LPTSTR lpsz;
    103   } WABEXTDISPLAY,*LPWABEXTDISPLAY;
    104 
    105 #define WAB_IWABEXTINIT_METHODS(IPURE) MAPIMETHOD(Initialize) (THIS_ LPWABEXTDISPLAY lpWABExtDisplay) IPURE;
    106 #undef INTERFACE
    107 #define INTERFACE IWABExtInit
    108   DECLARE_MAPI_INTERFACE_(IWABExtInit,IUnknown) {
    109     BEGIN_INTERFACE
    110       MAPI_IUNKNOWN_METHODS(PURE)
    111       WAB_IWABEXTINIT_METHODS(PURE)
    112   };
    113 
    114   DECLARE_MAPI_INTERFACE_PTR(IWABExtInit,LPWABEXTINIT);
    115   DEFINE_GUID(IID_IWABExtInit,0xea22ebf0,0x87a4,0x11d1,0x9a,0xcf,0x0,0xa0,0xc9,0x1f,0x9c,0x8b);
    116 
    117 #define WAB_DLL_NAME TEXT("WAB32.DLL")
    118 #define WAB_DLL_PATH_KEY TEXT("Software\\Microsoft\\WAB\\DLLPath")
    119 
    120 #ifdef __cplusplus
    121 }
    122 #endif
    123 #endif
    124