diff options
Diffstat (limited to 'epan/dissectors/pidl/nspi/nspi.idl')
-rw-r--r-- | epan/dissectors/pidl/nspi/nspi.idl | 372 |
1 files changed, 372 insertions, 0 deletions
diff --git a/epan/dissectors/pidl/nspi/nspi.idl b/epan/dissectors/pidl/nspi/nspi.idl new file mode 100644 index 0000000000..16425487db --- /dev/null +++ b/epan/dissectors/pidl/nspi/nspi.idl @@ -0,0 +1,372 @@ +/* + NSPI Implementation + + OpenChange Project + + Copyright (C) Julien Kerihuel 2006 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + + +#include "idl_types.h" + +[ + uuid("f5cc5a18-4264-101a-8c59-08002b2f8426"), + endpoint("ncacn_np:[\\pipe\\exchange_nsp]", "ncacn_ip_tcp:"), + pointer_default(unique), + version(56.0), + helpstring("Exchange 5.5 Name Service Provider"), + helper("ndr_mapi.h") +] interface nspi +{ + +#include "mapitags_enum.h" +#include "mapicodes_enum.h" + + /*****************/ + /* Function 0x00 */ + + /* + ** MAPIUID explanation: + ** http://msdn.microsoft.com/library/default.asp?url=/library/en-us/mapi/html/c42065c2-b1f5-4930-84a6-6ef90c6162d0.asp + */ + + typedef struct _MAPIUID{ + uint8 ab[16]; + } MAPIUID; + + /* + ** input locale combination: + ** http://www.microsoft.com/globaldev/reference/win2k/setup/lcid.mspx + */ + + typedef struct { + uint32 language; + uint32 method; + } input_locale; + + typedef [flag(NDR_NOALIGN)] struct { + uint32 handle; + uint32 flag; + MAPIUID service_provider; + uint32 codepage; /* CPID */ + input_locale input_locale; /* LCID */ + } MAPI_SETTINGS; + + typedef struct { + [unique, length_is(cValues - 1), size_is(cValues - 1)] MAPITAGS *aulPropTag; + uint32 cValues; + } SPropTagArray; + + typedef struct { + [length_is(cValues - 1), size_is(cValues - 1)] uint32 *value; + uint32 cValues; + } instance_key; + + + + /*****************/ + /* Function 0x00 */ + MAPISTATUS NspiBind( + [in] uint32 unknown, + [in] MAPI_SETTINGS *settings, + [in,out,unique] GUID *mapiuid, + [out] policy_handle *handle + ); + + /*****************/ + /* Function 0x01 */ + MAPISTATUS NspiUnbind( + [in, out] policy_handle *handle, + [in] uint32 status + ); + + + void NspiUpdateStat(); + + /*****************/ + /* Function 0x03 */ + MAPISTATUS NspiQueryRows( + [in] policy_handle *handle, + [in] uint32 flag, + [in,out] MAPI_SETTINGS *settings, + [in] uint32 lRows, + [in][size_is(lRows)][unique] uint32 *instance_key, + [in] uint32 unknown, + [in] SPropTagArray *REQ_properties, + [out] SRowSet **RowSet + ); + + void NspiSeekEntries(); + + /*****************/ + /* Function 0x05 */ + + + + typedef struct { + [unique] MAPIUID *lpguid; + uint32 ulKind; + uint32 lID; /* this is actually a union in mapidefs.h */ + } MAPINAMEID; + +/* Restriction types */ +#define RES_AND 0 +#define RES_OR 1 +#define RES_NOT 2 +#define RES_CONTENT 3 +#define RES_PROPERTY 4 +#define RES_COMPAREPROPS 5 +#define RES_BITMASK 6 +#define RES_SIZE 7 +#define RES_EXIST 8 +#define RES_SUBRESTRICTION 9 +#define RES_COMMENT 10 + + typedef struct { + uint32 relop; + MAPITAGS ulPropTag; + SPropValue *lpProp; + } SPropertyRestriction; + + typedef struct { + uint32 cRes; + [size_is(cRes)][unique]SRestriction *lpRes; + } SAndRestriction; + + typedef [switch_type(uint32)] union { + [case(RES_AND) ] SAndRestriction resAnd; +// [case(RES_OR) ] SOrRestriction resOr; +// [case(RES_NOT) ] SNotRestriction resNot; +// [case(RES_CONTENT) ] SContentRestriction resContent; + [case(RES_PROPERTY) ] SPropertyRestriction resProperty; +// [case(RES_COMPAREPROPS) ] SComparePropsRestriction resCompareProps; +// [case(RES_BITMASK) ] SBitMaskRestriction resBitMask; +// [case(RES_SUBRESTRICTION)] SSubRestriction resSub; +// [case(RES_SIZE) ] SSizeRestriction resSize; +// [case(RES_EXIST) ] SExistRestriction resExist; + } SRestriction_CTR; + + typedef [public] struct _SRestriction{ + uint32 rt; + [switch_is(rt)] SRestriction_CTR res; + } SRestriction; + +/* Sort type */ +#define TABLE_SORT_ASCEND 0 +#define TABLE_SORT_DESCEND 0 + + typedef [public] struct _SSortOrder{ + uint32 ulPropTag; + uint32 ulOrder; + } SSortOrder; + + typedef [public] struct _SSortOrderSet{ + uint32 cSorts; + uint32 cCategories; + uint32 cExpanded; + [size_is(cSorts)][unique]SSortOrder *aSort; + } SSortOrderSet; + + MAPISTATUS NspiGetMatches( + [in] policy_handle *handle, + [in] uint32 unknown1, + [in,out] MAPI_SETTINGS *settings, + [in][unique] SPropTagArray *PropTagArray, + [in] uint32 unknown2, + [in][unique] SRestriction *restrictions, + [in] uint32 unknown3, + [out] instance_key *instance_key, + [in][unique] SPropTagArray *REQ_properties, + [out] SRowSet **RowSet + ); + + + void NspiResortRestriction(); + + /*****************/ + /* Function 0x07 */ + + typedef struct { + [string, charset(DOS)] uint8 *str; + } NAME_STRING; + + MAPISTATUS NspiDNToEph( + [in] policy_handle *handle, + [in] uint32 flag, + [in] uint32 size, + [in,ref][size_is(size)] NAME_STRING *server_dn, + [out] instance_key *instance_key + ); + + void NspiGetPropList(); + + /*****************/ + /* Function 0x09 */ + MAPISTATUS NspiGetProps( + [in] policy_handle *handle, + [in] uint32 flag, + [in] MAPI_SETTINGS *settings, + [in] SPropTagArray *REQ_properties, + [out] SRow **REPL_values + ); + + + void NspiCompareDNTs(); + void NspiModProps(); + +#define PT_UNSPECIFIED 0x0000 +#define PT_NULL 0x0001 +#define PT_I2 0x0002 +#define PT_LONG 0x0003 +#define PT_R4 0x0004 +#define PT_DOUBLE 0x0005 +#define PT_CURRENCY 0x0006 +#define PT_APPTIME 0x0007 +#define PT_ERROR 0x000a /* means the given attr contains no value */ +#define PT_BOOLEAN 0x000b +#define PT_OBJECT 0x000d +#define PT_I8 0x0014 +#define PT_STRING8 0x001e +#define PT_UNICODE 0x001f +#define PT_SYSTIME 0x0040 +#define PT_CLSID 0x0048 +#define PT_BINARY 0x0102 + +/* Multi-valued properties */ + +#define PT_MV_I2 0x1002 +#define PT_MV_LONG 0x1003 +#define PT_MV_R4 0x1004 +#define PT_MV_DOUBLE 0x1005 +#define PT_MV_CURRENCY 0x1006 +#define PT_MV_APPTIME 0x1007 +#define PT_MV_I8 0x1014 +#define PT_MV_STRING8 0x101e +#define PT_MV_TSTRING 0x101e +#define PT_MV_UNICODE 0x101f +#define PT_MV_SYSTIME 0x1040 +#define PT_MV_CLSID 0x1048 +#define PT_MV_BINARY 0x1102 + + /*****************/ + /* Function 0x0c */ + + typedef struct { + uint32 cb; + [size_is(cb)][unique] uint8 *lpb; + } SBinary; + + typedef struct { + uint32 dwLowDateTime; + uint32 dwHighDateTime; + } FILETIME; + + typedef struct { + uint32 cValues; + [size_is(cValues)] uint16 *lpi; + } SShortArray; + + typedef struct { + uint32 cValues; + [size_is(cValues)] uint32 *lpl; + } MV_LONG_STRUCT; + + typedef struct { + ascstr_noterm lppszA; + } LPSTR; + + typedef struct { + uint32 cValues; + [size_is(cValues)] LPSTR **strings; + } SLPSTRArray; + + typedef struct { + uint32 cValues; + [size_is(cValues)] SBinary *lpbin; + } SBinaryArray; + + typedef [flag(NDR_NOALIGN)] struct { + uint32 cValues; + [size_is(cValues)] uint32 *lpguid; + } SGuidArray; + + typedef struct { + uint32 cValues; + [size_is(cValues)] uint32 *lpi; + } MV_UNICODE_STRUCT; + + typedef struct { + uint32 cValues; + [size_is(cValues)] FILETIME *lpft; + } SDateTimeArray; + + typedef [switch_type(uint32)] union { + [case(PT_I2)] uint16 i; + [case(PT_LONG)] uint32 l; + [case(PT_BOOLEAN)] uint16 b; + [case(PT_STRING8)][unique][string,charset(DOS)] uint8 *lpszA; + [case(PT_BINARY)] SBinary bin; + [case(PT_UNICODE)] [string,charset(UTF16)] uint16 *lpszW; + [case(PT_CLSID)] MAPIUID *lpguid; + [case(PT_SYSTIME)] FILETIME ft; + [case(PT_ERROR)] MAPISTATUS err; + [case(PT_MV_I2)] SShortArray MVi; + [case(PT_MV_LONG)] MV_LONG_STRUCT MVl; + [case(PT_MV_STRING8)] SLPSTRArray MVszA; + [case(PT_MV_BINARY)] SBinaryArray MVbin; + [case(PT_MV_CLSID)] SGuidArray MVguid; + [case(PT_MV_UNICODE)] MV_UNICODE_STRUCT MVszW; + [case(PT_MV_SYSTIME)] SDateTimeArray MVft; + [case(PT_NULL)] uint32 null; + [case(PT_OBJECT)] uint32 object; + } SPropValue_CTR; + + typedef [public]struct { + MAPITAGS ulPropTag; + uint32 dwAlignPad; + [switch_is(ulPropTag & 0xFFFF)] SPropValue_CTR value; + } SPropValue; + + typedef struct { + uint32 ulAdrEntryPad; + uint32 cValues; + [size_is(cValues)][unique] SPropValue *lpProps; + } SRow; + + + typedef [public] struct { + uint32 cRows; + [size_is(cRows)] SRow aRow[*]; + } SRowSet; + + MAPISTATUS NspiGetHierarchyInfo( + [in] policy_handle *handle, + [in] uint32 unknown1, + [in] MAPI_SETTINGS *settings, + [in,out] uint32 *unknown2, + [out] SRowSet **RowSet + ); + + void NspiGetTemplateInfo(); + void NspiModLInkAtt(); + void NspiDeleteEntries(); + void NspiQueryColumns(); + void NspiGetNamesFromIDs(); + void NspiGetIDsFromNames(); + void NspiResolveNames(); + void NspiResolveNamesW(); +} |