From a4cb7c46fe26e638fd7f4e1bf86dece636c08363 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Thu, 21 Mar 2013 09:20:02 +1100 Subject: [PATCH] iads.idl: Add missing interfaces. --- include/iads.idl | 287 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 287 insertions(+) diff --git a/include/iads.idl b/include/iads.idl index 2a1aa13d2fa..de5730db645 100644 --- a/include/iads.idl +++ b/include/iads.idl @@ -60,6 +60,269 @@ typedef enum ADS_AUTH_RESERVED = 0x80000000 } ADS_AUTHENTICATION_ENUM; +typedef enum +{ + ADS_SEARCHPREF_ASYNCHRONOUS, + ADS_SEARCHPREF_DEREF_ALIASES, + ADS_SEARCHPREF_SIZE_LIMIT, + ADS_SEARCHPREF_TIME_LIMIT, + ADS_SEARCHPREF_ATTRIBTYPES_ONLY, + ADS_SEARCHPREF_SEARCH_SCOPE, + ADS_SEARCHPREF_TIMEOUT, + ADS_SEARCHPREF_PAGESIZE, + ADS_SEARCHPREF_PAGED_TIME_LIMIT, + ADS_SEARCHPREF_CHASE_REFERRALS, + ADS_SEARCHPREF_SORT_ON, + ADS_SEARCHPREF_CACHE_RESULTS, + ADS_SEARCHPREF_DIRSYNC, + ADS_SEARCHPREF_TOMBSTONE, + ADS_SEARCHPREF_VLV, + ADS_SEARCHPREF_ATTRIBUTE_QUERY, + ADS_SEARCHPREF_SECURITY_MASK, + ADS_SEARCHPREF_DIRSYNC_FLAG, + ADS_SEARCHPREF_EXTENDED_DN +} ADS_SEARCHPREF_ENUM; + +typedef ADS_SEARCHPREF_ENUM *PADS_SEARCHPREF_INFO; + +typedef enum +{ + ADS_STATUS_S_OK, + ADS_STATUS_INVALID_SEARCHPREF, + ADS_STATUS_INVALID_SEARCHPREFVALUE +} ADS_STATUSENUM; + +typedef enum +{ + ADSTYPE_INVALID, + ADSTYPE_DN_STRING, + ADSTYPE_CASE_EXACT_STRING, + ADSTYPE_CASE_IGNORE_STRING, + ADSTYPE_PRINTABLE_STRING, + ADSTYPE_NUMERIC_STRING, + ADSTYPE_BOOLEAN, + ADSTYPE_INTEGER, + ADSTYPE_OCTET_STRING, + ADSTYPE_UTC_TIME, + ADSTYPE_LARGE_INTEGER, + ADSTYPE_PROV_SPECIFIC, + ADSTYPE_OBJECT_CLASS, + ADSTYPE_CASEIGNORE_LIST, + ADSTYPE_OCTET_LIST, + ADSTYPE_PATH, + ADSTYPE_POSTALADDRESS, + ADSTYPE_TIMESTAMP, + ADSTYPE_BACKLINK, + ADSTYPE_TYPEDNAME, + ADSTYPE_HOLD, + ADSTYPE_NETADDRESS, + ADSTYPE_REPLICAPOINTER, + ADSTYPE_FAXNUMBER, + ADSTYPE_EMAIL, + ADSTYPE_NT_SECURITY_DESCRIPTOR, + ADSTYPE_UNKNOWN, + ADSTYPE_DN_WITH_BINARY, + ADSTYPE_DN_WITH_STRING +} ADSTYPEENUM; + +typedef enum +{ + ADS_PASSWORD_ENCODE_REQUIRE_SSL, + ADS_PASSWORD_ENCODE_CLEAR +} ADS_PASSWORD_ENCODING_ENUM; + +typedef struct _ADS_CASEIGNORE_LIST +{ + struct _ADS_CASEIGNORE_LIST *Next; + LPWSTR String; +} ADS_CASEIGNORE_LIST; + +typedef struct _ADS_OCTET_LIST +{ + struct _ADS_OCTET_LIST *Next; + DWORD Length; + BYTE *Data; +} ADS_OCTET_LIST; + +typedef struct +{ + DWORD Type; + LPWSTR VolumeName; + LPWSTR Path; +} ADS_PATH, *PADS_PATH; + +typedef struct +{ + DWORD WholeSeconds; + DWORD EventID; +} ADS_TIMESTAMP; + + +typedef ADSTYPEENUM ADSTYPE; +typedef LPWSTR ADS_DN_STRING; +typedef LPWSTR *PADS_DN_STRING; +typedef LPWSTR ADS_CASE_EXACT_STRING; +typedef LPWSTR *PADS_CASE_EXACT_STRING; +typedef LPWSTR ADS_CASE_IGNORE_STRING; +typedef LPWSTR *PADS_CASE_IGNORE_STRING; +typedef LPWSTR ADS_PRINTABLE_STRING; +typedef LPWSTR *PADS_PRINTABLE_STRING; +typedef LPWSTR ADS_NUMERIC_STRING; +typedef LPWSTR *PADS_NUMERIC_STRING; +typedef DWORD ADS_BOOLEAN; +typedef DWORD *LPNDS_BOOLEAN; +typedef DWORD ADS_INTEGER; +typedef DWORD *PADS_INTEGER; +typedef SYSTEMTIME ADS_UTC_TIME; +typedef SYSTEMTIME *PADS_UTC_TIME; +typedef LARGE_INTEGER ADS_LARGE_INTEGER; +typedef LARGE_INTEGER *PADS_LARGE_INTEGER; +typedef LPWSTR ADS_OBJECT_CLASS; +typedef LPWSTR *PADS_OBJECT_CLASS; +typedef struct _ADS_OCTET_LIST *PADS_OCTET_LIST; +typedef struct _ADS_CASEIGNORE_LIST *PADS_CASEIGNORE_LIST; +typedef ADS_STATUSENUM ADS_STATUS; +typedef ADS_SEARCHPREF_ENUM ADS_SEARCHPREF; +typedef HANDLE ADS_SEARCH_HANDLE; +typedef HANDLE *PADS_SEARCH_HANDLE; + + +typedef struct +{ + DWORD dwLength; + BYTE *lpValue; +} ADS_OCTET_STRING; + +typedef struct +{ + DWORD dwLength; + BYTE *lpValue; +} ADS_PROV_SPECIFIC; + +typedef struct +{ + LPWSTR PostalAddress[ 6 ]; +} ADS_POSTALADDRESS, *PADS_POSTALADDRESS; + +typedef struct +{ + LPWSTR ObjectName; + DWORD Level; + DWORD Interval; +} ADS_TYPEDNAME, *PADS_TYPEDNAME; + +typedef struct +{ + DWORD RemoteID; + LPWSTR ObjectName; +} ADS_BACKLINK; + +typedef struct +{ + LPWSTR ObjectName; + DWORD Amount; +} ADS_HOLD; + +typedef struct +{ + DWORD AddressType; + DWORD AddressLength; + BYTE *Address; +} ADS_NETADDRESS, *PADS_NETADDRESS; + +typedef struct +{ + LPWSTR ServerName; + DWORD ReplicaType; + DWORD ReplicaNumber; + DWORD Count; + PADS_NETADDRESS ReplicaAddressHints; +} ADS_REPLICAPOINTER, *PADS_REPLICAPOINTER; + +typedef struct +{ + LPWSTR TelephoneNumber; + DWORD NumberOfBits; + BYTE *Parameters; +} ADS_FAXNUMBER, *PADS_FAXNUMBER; + + +typedef struct +{ + LPWSTR Address; + DWORD Type; +} ADS_EMAIL, *PADS_EMAIL; + +typedef struct +{ + DWORD dwLength; + BYTE *lpValue; +} ADS_NT_SECURITY_DESCRIPTOR; + +typedef struct +{ + DWORD dwLength; + BYTE *lpBinaryValue; + LPWSTR pszDNString; +} ADS_DN_WITH_BINARY, *PADS_DN_WITH_BINARY; + +typedef struct +{ + LPWSTR pszStringValue; + LPWSTR pszDNString; +} ADS_DN_WITH_STRING, *PADS_DN_WITH_STRING; + +typedef struct _adsvalue +{ + ADSTYPE dwType; + union + { + ADS_DN_STRING DNString; + ADS_CASE_EXACT_STRING CaseExactString; + ADS_CASE_IGNORE_STRING CaseIgnoreString; + ADS_PRINTABLE_STRING PrintableString; + ADS_NUMERIC_STRING NumericString; + ADS_BOOLEAN Boolean; + ADS_INTEGER Integer; + ADS_OCTET_STRING OctetString; + ADS_UTC_TIME UTCTime; + ADS_LARGE_INTEGER LargeInteger; + ADS_OBJECT_CLASS ClassName; + ADS_PROV_SPECIFIC ProviderSpecific; + PADS_CASEIGNORE_LIST pCaseIgnoreList; + PADS_OCTET_LIST pOctetList; + PADS_PATH pPath; + PADS_POSTALADDRESS pPostalAddress; + ADS_TIMESTAMP Timestamp; + ADS_BACKLINK BackLink; + PADS_TYPEDNAME pTypedName; + ADS_HOLD Hold; + PADS_NETADDRESS pNetAddress; + PADS_REPLICAPOINTER pReplicaPointer; + PADS_FAXNUMBER pFaxNumber; + ADS_EMAIL Email; + ADS_NT_SECURITY_DESCRIPTOR SecurityDescriptor; + PADS_DN_WITH_BINARY pDNWithBinary; + PADS_DN_WITH_STRING pDNWithString; + }; +} ADSVALUE, *PADSVALUE; + +typedef struct ads_searchpref_info +{ + ADS_SEARCHPREF dwSearchPref; + ADSVALUE vValue; + ADS_STATUS dwStatus; +} ADS_SEARCHPREF_INFO; + +typedef struct ads_search_column +{ + LPWSTR pszAttrName; + ADSTYPE dwADsType; + PADSVALUE pADsValues; + DWORD dwNumValues; + HANDLE hReserved; +} ADS_SEARCH_COLUMN, *PADS_SEARCH_COLUMN; + /***************************************************************************** * IADsContainer interface */ @@ -490,3 +753,27 @@ interface IADsUser : IADs [id(0x00000044)] HRESULT ChangePassword([in] BSTR bstrOldPassword, [in] BSTR bstrNewPassword); }; + +/***************************************************************************** + * IDirectorySearch interface + */ +[ + odl, + local, + uuid(109BA8EC-92F0-11D0-A790-00C04FD8D5A8) +] +interface IDirectorySearch : IUnknown +{ + HRESULT SetSearchPreference([in] PADS_SEARCHPREF_INFO pSearchPrefs, [in] DWORD dwNumPrefs); + HRESULT ExecuteSearch([in] LPWSTR pszSearchFilter, [in] LPWSTR* pAttributeNames, + [in] DWORD dwNumberAttributes, [out] PADS_SEARCH_HANDLE phSearchResult); + HRESULT AbandonSearch([in] ADS_SEARCH_HANDLE phSearchResult); + HRESULT GetFirstRow([in] ADS_SEARCH_HANDLE hSearchResult); + HRESULT GetNextRow([in] ADS_SEARCH_HANDLE hSearchResult); + HRESULT GetPreviousRow([in] ADS_SEARCH_HANDLE hSearchResult); + HRESULT GetNextColumnName([in] ADS_SEARCH_HANDLE hSearchHandle, [out] LPWSTR* ppszColumnName); + HRESULT GetColumn( [in] ADS_SEARCH_HANDLE hSearchResult, [in] LPWSTR szColumnName, + [out] PADS_SEARCH_COLUMN pSearchColumn); + HRESULT FreeColumn([in] PADS_SEARCH_COLUMN pSearchColumn); + HRESULT CloseSearchHandle([in] ADS_SEARCH_HANDLE hSearchResult); +};