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.
 
 
 
 
 
 

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);