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.
124 lines
2.9 KiB
124 lines
2.9 KiB
|
|
//
|
|
// Function prototypes
|
|
//
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE struct _IPDAT
|
|
|
|
#undef METHOD_PREFIX
|
|
#define METHOD_PREFIX IPDAT_
|
|
|
|
#undef LPVTBL_ELEM
|
|
#define LPVTBL_ELEM lpvtbl
|
|
|
|
#undef MAPIMETHOD_
|
|
#define MAPIMETHOD_(type, method) MAPIMETHOD_DECLARE(type, method, IPDAT_)
|
|
MAPI_IUNKNOWN_METHODS(IMPL)
|
|
MAPI_IMAPIPROP_METHODS(IMPL)
|
|
MAPI_IPROPDATA_METHODS(IMPL)
|
|
#undef MAPIMETHOD_
|
|
#define MAPIMETHOD_(type, method) MAPIMETHOD_TYPEDEF(type, method, IPDAT_)
|
|
MAPI_IUNKNOWN_METHODS(IMPL)
|
|
MAPI_IMAPIPROP_METHODS(IMPL)
|
|
MAPI_IPROPDATA_METHODS(IMPL)
|
|
#undef MAPIMETHOD_
|
|
#define MAPIMETHOD_(type, method) STDMETHOD_(type, method)
|
|
|
|
DECLARE_MAPI_INTERFACE(IPDAT_)
|
|
{
|
|
BEGIN_INTERFACE
|
|
MAPI_IUNKNOWN_METHODS(IMPL)
|
|
MAPI_IMAPIPROP_METHODS(IMPL)
|
|
MAPI_IPROPDATA_METHODS(IMPL)
|
|
};
|
|
|
|
/* Generic part of property linked lists.
|
|
*/
|
|
typedef struct _lstlnk {
|
|
struct _lstlnk FAR * lpNext;
|
|
ULONG ulKey;
|
|
} LSTLNK, FAR * LPLSTLNK;
|
|
|
|
typedef LPLSTLNK FAR * LPPLSTLNK;
|
|
|
|
|
|
/* Linked list of property values.
|
|
*/
|
|
typedef struct _lstspv {
|
|
LSTLNK lstlnk;
|
|
LPSPropValue lpPropVal;
|
|
ULONG ulAccess;
|
|
} LSTSPV, FAR * LPLSTSPV;
|
|
#define CBLSTSPV sizeof(LSTSPV)
|
|
|
|
/* Linked list of property ID to NAME mappings.
|
|
*/
|
|
typedef struct _lstspn {
|
|
LSTLNK lstlnk;
|
|
LPMAPINAMEID lpPropName;
|
|
} LSTSPN, FAR * LPLSTSPN;
|
|
|
|
typedef struct _IPDAT {
|
|
IPDAT_Vtbl FAR * lpVtbl;
|
|
|
|
// Generic IMAPIUnknown portion
|
|
UNKOBJ_MEMBERS;
|
|
UNKINST inst;
|
|
|
|
//
|
|
// Says whether or not this object (as a whole) is modifiable
|
|
//
|
|
ULONG ulObjAccess;
|
|
|
|
// List of properties in this object
|
|
LPLSTSPV lpLstSPV;
|
|
|
|
// Count of properties in this object
|
|
ULONG ulCount;
|
|
|
|
// List of property ID to NAME maps for this object
|
|
LPLSTSPN lpLstSPN;
|
|
|
|
// Next ID to use when creating a new NAME to ID map
|
|
ULONG ulNextMapID;
|
|
|
|
} IPDAT, *LPIPDAT;
|
|
|
|
#define CBIPDAT sizeof(IPDAT)
|
|
|
|
|
|
|
|
|
|
/* dimensionof determines the number of elements in "array".
|
|
*/
|
|
|
|
#ifdef WIN16
|
|
#ifndef dimensionof
|
|
#define dimensionof(rg) (sizeof(rg)/sizeof(*(rg)))
|
|
#endif // !dimensionof
|
|
#else // WIN16
|
|
#define dimensionof(rg) (sizeof(rg)/sizeof(*(rg)))
|
|
#endif // WIN16
|
|
|
|
#define SET_PROP_TYPE(ultag, ultype) (ultag) = ((ultag) & 0xffff0000) \
|
|
| (ultype)
|
|
#define MIN_NAMED_PROP_ID 0x8000
|
|
#define MAX_NAMED_PROP_ID 0xfffe
|
|
|
|
|
|
|
|
SCODE ScWCToAnsiMore( LPALLOCATEMORE lpMapiAllocMore, LPVOID lpBase,
|
|
LPWSTR lpszWC, LPSTR * lppszAnsi );
|
|
SCODE ScAnsiToWCMore( LPALLOCATEMORE lpMapiAllocMore, LPVOID lpBase,
|
|
LPSTR lpszAnsi, LPWSTR * lppszWC );
|
|
|
|
LPSTR ConvertWtoA(LPCWSTR lpszW);
|
|
LPWSTR ConvertAtoW(LPCSTR lpszA);
|
|
|
|
SCODE ScConvertAPropsToW(LPALLOCATEMORE lpMapiAllocMore, LPSPropValue lpPropArray, ULONG ulcProps, ULONG ulStart);
|
|
SCODE ScConvertWPropsToA(LPALLOCATEMORE lpMapiAllocMore, LPSPropValue lpPropArray, ULONG ulcProps, ULONG ulStart);
|
|
|
|
|
|
|
|
|