2007-04-20 10:30:53 +08:00
|
|
|
/*
|
|
|
|
* Copyright 2005 Francois Gouget
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library 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
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
|
|
*/
|
|
|
|
|
|
|
|
import "oaidl.idl";
|
|
|
|
|
2008-10-25 15:15:16 +08:00
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
ADS_RIGHT_DS_CREATE_CHILD = 0x00000001,
|
|
|
|
ADS_RIGHT_DS_DELETE_CHILD = 0x00000002,
|
|
|
|
ADS_RIGHT_ACTRL_DS_LIST = 0x00000004,
|
|
|
|
ADS_RIGHT_DS_SELF = 0x00000008,
|
|
|
|
ADS_RIGHT_DS_READ_PROP = 0x00000010,
|
|
|
|
ADS_RIGHT_DS_WRITE_PROP = 0x00000020,
|
|
|
|
ADS_RIGHT_DS_DELETE_TREE = 0x00000040,
|
|
|
|
ADS_RIGHT_DS_LIST_OBJECT = 0x00000080,
|
|
|
|
ADS_RIGHT_DS_CONTROL_ACCESS = 0x00000100,
|
|
|
|
|
|
|
|
ADS_RIGHT_DELETE = 0x00010000,
|
|
|
|
ADS_RIGHT_READ_CONTROL = 0x00020000,
|
|
|
|
ADS_RIGHT_WRITE_DAC = 0x00040000,
|
|
|
|
ADS_RIGHT_WRITE_OWNER = 0x00080000,
|
|
|
|
ADS_RIGHT_SYNCHRONIZE = 0x00100000,
|
|
|
|
ADS_RIGHT_ACCESS_SYSTEM_SECURITY = 0x00200000,
|
|
|
|
|
|
|
|
ADS_RIGHT_GENERIC_ALL = 0x10000000,
|
|
|
|
ADS_RIGHT_GENERIC_EXECUTE = 0x20000000,
|
|
|
|
ADS_RIGHT_GENERIC_WRITE = 0x40000000,
|
|
|
|
ADS_RIGHT_GENERIC_READ = 0x80000000
|
|
|
|
} ADS_RIGHTS_ENUM;
|
2007-04-20 10:30:53 +08:00
|
|
|
|
2014-10-09 03:19:01 +08:00
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
ADS_SECURE_AUTHENTICATION = 0x1,
|
|
|
|
ADS_USE_ENCRYPTION = 0x2,
|
|
|
|
ADS_USE_SSL = 0x2,
|
|
|
|
ADS_READONLY_SERVER = 0x4,
|
|
|
|
ADS_PROMPT_CREDENTIALS = 0x8,
|
|
|
|
ADS_NO_AUTHENTICATION = 0x10,
|
|
|
|
ADS_FAST_BIND = 0x20,
|
|
|
|
ADS_USE_SIGNING = 0x40,
|
|
|
|
ADS_USE_SEALING = 0x80,
|
|
|
|
ADS_USE_DELEGATION = 0x100,
|
|
|
|
ADS_SERVER_BIND = 0x200,
|
|
|
|
ADS_NO_REFERRAL_CHASING = 0x400,
|
|
|
|
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;
|
|
|
|
|
2007-04-20 10:30:53 +08:00
|
|
|
/*****************************************************************************
|
|
|
|
* IADsContainer interface
|
|
|
|
*/
|
|
|
|
[
|
|
|
|
object,
|
|
|
|
uuid(001677d0-fd16-11ce-abc4-02608c9e7553)
|
|
|
|
]
|
|
|
|
interface IADsContainer: IDispatch
|
|
|
|
{
|
|
|
|
[propget] HRESULT Count(
|
|
|
|
[out, retval] long *retval);
|
|
|
|
[propget, restricted] HRESULT _NewEnum(
|
|
|
|
[out, retval] IUnknown **retval);
|
|
|
|
[propget] HRESULT Filter(
|
|
|
|
[out, retval] VARIANT *pvFilter);
|
|
|
|
[propput] HRESULT Filter(
|
|
|
|
[in] VARIANT vFilter);
|
|
|
|
[propget] HRESULT Hints(
|
|
|
|
[out, retval] VARIANT *pvHints);
|
|
|
|
[propput] HRESULT Hints(
|
|
|
|
[in] VARIANT vHints);
|
|
|
|
HRESULT GetObject(
|
|
|
|
[in] BSTR bstrClassName,
|
|
|
|
[in] BSTR bstrRelativeName,
|
|
|
|
[out, retval] IDispatch **ppObject);
|
|
|
|
HRESULT Create(
|
|
|
|
[in] BSTR bstrClassName,
|
|
|
|
[in] BSTR bstrRelativeName,
|
|
|
|
[out, retval] IDispatch **ppObject);
|
|
|
|
HRESULT Delete(
|
|
|
|
[in] BSTR bstrClassName,
|
|
|
|
[in] BSTR bstrRelativeName);
|
|
|
|
HRESULT CopyHere(
|
|
|
|
[in] BSTR bstrSourceName,
|
|
|
|
[in] BSTR bstrNewName,
|
|
|
|
[out, retval] IDispatch **ppObject);
|
|
|
|
HRESULT MoveHere(
|
|
|
|
[in] BSTR bstrSourceName,
|
|
|
|
[in] BSTR bstrNewName,
|
|
|
|
[out, retval] IDispatch **ppObject);
|
|
|
|
}
|
2014-10-09 03:19:01 +08:00
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IADs interface
|
|
|
|
*/
|
|
|
|
[
|
|
|
|
odl,
|
|
|
|
uuid(FD8256D0-FD15-11CE-ABC4-02608C9E7553),
|
|
|
|
dual,
|
|
|
|
oleautomation
|
|
|
|
]
|
|
|
|
interface IADs : IDispatch
|
|
|
|
{
|
|
|
|
[id(0x00000002), propget]
|
|
|
|
HRESULT Name([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000003), propget]
|
|
|
|
HRESULT Class([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000004), propget]
|
|
|
|
HRESULT GUID([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000005), propget]
|
|
|
|
HRESULT ADsPath([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000006), propget]
|
|
|
|
HRESULT Parent([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000007), propget]
|
|
|
|
HRESULT Schema([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000008)]
|
|
|
|
HRESULT GetInfo();
|
|
|
|
|
|
|
|
[id(0x00000009)]
|
|
|
|
HRESULT SetInfo();
|
|
|
|
|
|
|
|
[id(0x0000000a)]
|
|
|
|
HRESULT Get([in] BSTR bstrName, [out, retval] VARIANT* pvProp);
|
|
|
|
|
|
|
|
[id(0x0000000b)]
|
|
|
|
HRESULT Put([in] BSTR bstrName, [in] VARIANT vProp);
|
|
|
|
|
|
|
|
[id(0x0000000c)]
|
|
|
|
HRESULT GetEx([in] BSTR bstrName, [out, retval] VARIANT* pvProp);
|
|
|
|
|
|
|
|
[id(0x0000000d)]
|
|
|
|
HRESULT PutEx([in] long lnControlCode, [in] BSTR bstrName, [in] VARIANT vProp);
|
|
|
|
|
|
|
|
[id(0x0000000e)]
|
|
|
|
HRESULT GetInfoEx( [in] VARIANT vProperties, [in] long lnReserved);
|
|
|
|
};
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IADsMembers interface
|
|
|
|
*/
|
|
|
|
[
|
|
|
|
odl,
|
|
|
|
uuid(451A0030-72EC-11CF-B03B-00AA006E0975),
|
|
|
|
dual,
|
|
|
|
oleautomation
|
|
|
|
]
|
|
|
|
interface IADsMembers : IDispatch
|
|
|
|
{
|
|
|
|
[id(0x00000002), propget]
|
|
|
|
HRESULT Count([out, retval] long* plCount);
|
|
|
|
|
|
|
|
[id(0xfffffffc), propget]
|
|
|
|
HRESULT _NewEnum([out, retval] IUnknown** ppEnumerator);
|
|
|
|
|
|
|
|
[id(0x00000003), propget]
|
|
|
|
HRESULT Filter([out, retval] VARIANT* pvFilter);
|
|
|
|
|
|
|
|
[id(0x00000003), propput]
|
|
|
|
HRESULT Filter([in] VARIANT pvFilter);
|
|
|
|
};
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IADsGroup interface
|
|
|
|
*/
|
|
|
|
[
|
|
|
|
odl,
|
|
|
|
uuid(27636B00-410F-11CF-B1FF-02608C9E7553),
|
|
|
|
dual,
|
|
|
|
oleautomation
|
|
|
|
]
|
|
|
|
interface IADsGroup : IADs {
|
|
|
|
[id(0x0000000f), propget]
|
|
|
|
HRESULT Description([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x0000000f), propput]
|
|
|
|
HRESULT Description([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x00000010)]
|
|
|
|
HRESULT Members([out, retval] IADsMembers** ppMembers);
|
|
|
|
|
|
|
|
[id(0x00000011)]
|
|
|
|
HRESULT IsMember([in] BSTR bstrMember, [out, retval] VARIANT_BOOL* bMember);
|
|
|
|
|
|
|
|
[id(0x00000012)]
|
|
|
|
HRESULT Add([in] BSTR bstrNewItem);
|
|
|
|
|
|
|
|
[id(0x00000013)]
|
|
|
|
HRESULT Remove([in] BSTR bstrItemToBeRemoved);
|
|
|
|
};
|
|
|
|
|
|
|
|
/*****************************************************************************
|
|
|
|
* IADsUser interface
|
|
|
|
*/
|
|
|
|
[
|
|
|
|
odl,
|
|
|
|
uuid(3E37E320-17E2-11CF-ABC4-02608C9E7553),
|
|
|
|
dual,
|
|
|
|
oleautomation
|
|
|
|
]
|
|
|
|
interface IADsUser : IADs
|
|
|
|
{
|
|
|
|
[id(0x00000035), propget]
|
|
|
|
HRESULT BadLoginAddress([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000036), propget]
|
|
|
|
HRESULT BadLoginCount([out, retval] long* retval);
|
|
|
|
|
|
|
|
[id(0x00000038), propget]
|
|
|
|
HRESULT LastLogin([out, retval] DATE* retval);
|
|
|
|
|
|
|
|
[id(0x00000039), propget]
|
|
|
|
HRESULT LastLogoff([out, retval] DATE* retval);
|
|
|
|
|
|
|
|
[id(0x0000003a), propget]
|
|
|
|
HRESULT LastFailedLogin([out, retval] DATE* retval);
|
|
|
|
|
|
|
|
[id(0x0000003b), propget]
|
|
|
|
HRESULT PasswordLastChanged([out, retval] DATE* retval);
|
|
|
|
|
|
|
|
[id(0x0000000f), propget]
|
|
|
|
HRESULT Description([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x0000000f), propput]
|
|
|
|
HRESULT Description([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x00000013), propget]
|
|
|
|
HRESULT Division([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000013), propput]
|
|
|
|
HRESULT Division([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x0000007a), propget]
|
|
|
|
HRESULT Department([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x0000007a), propput]
|
|
|
|
HRESULT Department([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x00000014), propget]
|
|
|
|
HRESULT EmployeeID([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000014), propput]
|
|
|
|
HRESULT EmployeeID([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x00000017), propget]
|
|
|
|
HRESULT FullName([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000017), propput]
|
|
|
|
HRESULT FullName([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x00000016), propget]
|
|
|
|
HRESULT FirstName([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000016), propput]
|
|
|
|
HRESULT FirstName([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x00000019), propget]
|
|
|
|
HRESULT LastName([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000019), propput]
|
|
|
|
HRESULT LastName([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x0000001b), propget]
|
|
|
|
HRESULT OtherName([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x0000001b), propput]
|
|
|
|
HRESULT OtherName([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x00000072), propget]
|
|
|
|
HRESULT NamePrefix([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000072), propput]
|
|
|
|
HRESULT NamePrefix([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x00000073), propget]
|
|
|
|
HRESULT NameSuffix([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000073), propput]
|
|
|
|
HRESULT NameSuffix([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x00000024), propget]
|
|
|
|
HRESULT Title([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000024), propput]
|
|
|
|
HRESULT Title([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x0000001a), propget]
|
|
|
|
HRESULT Manager([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x0000001a), propput]
|
|
|
|
HRESULT Manager([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x00000020), propget]
|
|
|
|
HRESULT TelephoneHome([out, retval] VARIANT* retval);
|
|
|
|
|
|
|
|
[id(0x00000020), propput]
|
|
|
|
HRESULT TelephoneHome([in] VARIANT retval);
|
|
|
|
|
|
|
|
[id(0x00000021), propget]
|
|
|
|
HRESULT TelephoneMobile([out, retval] VARIANT* retval);
|
|
|
|
|
|
|
|
[id(0x00000021), propput]
|
|
|
|
HRESULT TelephoneMobile([in] VARIANT retval);
|
|
|
|
|
|
|
|
[id(0x00000022), propget]
|
|
|
|
HRESULT TelephoneNumber([out, retval] VARIANT* retval);
|
|
|
|
|
|
|
|
[id(0x00000022), propput]
|
|
|
|
HRESULT TelephoneNumber([in] VARIANT retval);
|
|
|
|
|
|
|
|
[id(0x00000011), propget]
|
|
|
|
HRESULT TelephonePager([out, retval] VARIANT* retval);
|
|
|
|
|
|
|
|
[id(0x00000011), propput]
|
|
|
|
HRESULT TelephonePager([in] VARIANT retval);
|
|
|
|
|
|
|
|
[id(0x00000010), propget]
|
|
|
|
HRESULT FaxNumber([out, retval] VARIANT* retval);
|
|
|
|
|
|
|
|
[id(0x00000010), propput]
|
|
|
|
HRESULT FaxNumber([in] VARIANT retval);
|
|
|
|
|
|
|
|
[id(0x0000001c), propget]
|
|
|
|
HRESULT OfficeLocations([out, retval] VARIANT* retval);
|
|
|
|
|
|
|
|
[id(0x0000001c), propput]
|
|
|
|
HRESULT OfficeLocations([in] VARIANT retval);
|
|
|
|
|
|
|
|
[id(0x0000001e), propget]
|
|
|
|
HRESULT PostalAddresses([out, retval] VARIANT* retval);
|
|
|
|
|
|
|
|
[id(0x0000001e), propput]
|
|
|
|
HRESULT PostalAddresses([in] VARIANT retval);
|
|
|
|
|
|
|
|
[id(0x0000001f), propget]
|
|
|
|
HRESULT PostalCodes([out, retval] VARIANT* retval);
|
|
|
|
|
|
|
|
[id(0x0000001f), propput]
|
|
|
|
HRESULT PostalCodes([in] VARIANT retval);
|
|
|
|
|
|
|
|
[id(0x00000075), propget]
|
|
|
|
HRESULT SeeAlso([out, retval] VARIANT* retval);
|
|
|
|
|
|
|
|
[id(0x00000075), propput]
|
|
|
|
HRESULT SeeAlso([in] VARIANT retval);
|
|
|
|
|
|
|
|
[id(0x00000025), propget]
|
|
|
|
HRESULT AccountDisabled([out, retval] VARIANT_BOOL* retval);
|
|
|
|
|
|
|
|
[id(0x00000025), propput]
|
|
|
|
HRESULT AccountDisabled([in] VARIANT_BOOL retval);
|
|
|
|
|
|
|
|
[id(0x00000026), propget]
|
|
|
|
HRESULT AccountExpirationDate([out, retval] DATE* retval);
|
|
|
|
|
|
|
|
[id(0x00000026), propput]
|
|
|
|
HRESULT AccountExpirationDate([in] DATE retval);
|
|
|
|
|
|
|
|
[id(0x00000029), propget]
|
|
|
|
HRESULT GraceLoginsAllowed([out, retval] long* retval);
|
|
|
|
|
|
|
|
[id(0x00000029), propput]
|
|
|
|
HRESULT GraceLoginsAllowed([in] long retval);
|
|
|
|
|
|
|
|
[id(0x0000002a), propget]
|
|
|
|
HRESULT GraceLoginsRemaining([out, retval] long* retval);
|
|
|
|
|
|
|
|
[id(0x0000002a), propput]
|
|
|
|
HRESULT GraceLoginsRemaining([in] long retval);
|
|
|
|
|
|
|
|
[id(0x0000002b), propget]
|
|
|
|
HRESULT IsAccountLocked([out, retval] VARIANT_BOOL* retval);
|
|
|
|
|
|
|
|
[id(0x0000002b), propput]
|
|
|
|
HRESULT IsAccountLocked([in] VARIANT_BOOL retval);
|
|
|
|
|
|
|
|
[id(0x0000002d), propget]
|
|
|
|
HRESULT LoginHours([out, retval] VARIANT* retval);
|
|
|
|
|
|
|
|
[id(0x0000002d), propput]
|
|
|
|
HRESULT LoginHours([in] VARIANT retval);
|
|
|
|
|
|
|
|
[id(0x0000002e), propget]
|
|
|
|
HRESULT LoginWorkstations([out, retval] VARIANT* retval);
|
|
|
|
|
|
|
|
[id(0x0000002e), propput]
|
|
|
|
HRESULT LoginWorkstations([in] VARIANT retval);
|
|
|
|
|
|
|
|
[id(0x0000002f), propget]
|
|
|
|
HRESULT MaxLogins([out, retval] long* retval);
|
|
|
|
|
|
|
|
[id(0x0000002f), propput]
|
|
|
|
HRESULT MaxLogins([in] long retval);
|
|
|
|
|
|
|
|
[id(0x00000030), propget]
|
|
|
|
HRESULT MaxStorage([out, retval] long* retval);
|
|
|
|
|
|
|
|
[id(0x00000030), propput]
|
|
|
|
HRESULT MaxStorage([in] long retval);
|
|
|
|
|
|
|
|
[id(0x00000031), propget]
|
|
|
|
HRESULT PasswordExpirationDate([out, retval] DATE* retval);
|
|
|
|
|
|
|
|
[id(0x00000031), propput]
|
|
|
|
HRESULT PasswordExpirationDate([in] DATE retval);
|
|
|
|
|
|
|
|
[id(0x00000032), propget]
|
|
|
|
HRESULT PasswordMinimumLength([out, retval] long* retval);
|
|
|
|
|
|
|
|
[id(0x00000032), propput]
|
|
|
|
HRESULT PasswordMinimumLength([in] long retval);
|
|
|
|
|
|
|
|
[id(0x00000033), propget]
|
|
|
|
HRESULT PasswordRequired([out, retval] VARIANT_BOOL* retval);
|
|
|
|
|
|
|
|
[id(0x00000033), propput]
|
|
|
|
HRESULT PasswordRequired([in] VARIANT_BOOL retval);
|
|
|
|
|
|
|
|
[id(0x00000034), propget]
|
|
|
|
HRESULT RequireUniquePassword([out, retval] VARIANT_BOOL* retval);
|
|
|
|
|
|
|
|
[id(0x00000034), propput]
|
|
|
|
HRESULT RequireUniquePassword([in] VARIANT_BOOL retval);
|
|
|
|
|
|
|
|
[id(0x0000003c), propget]
|
|
|
|
HRESULT EmailAddress([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x0000003c), propput]
|
|
|
|
HRESULT EmailAddress([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x0000003d), propget]
|
|
|
|
HRESULT HomeDirectory([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x0000003d), propput]
|
|
|
|
HRESULT HomeDirectory([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x0000003e), propget]
|
|
|
|
HRESULT Languages([out, retval] VARIANT* retval);
|
|
|
|
|
|
|
|
[id(0x0000003e), propput]
|
|
|
|
HRESULT Languages([in] VARIANT retval);
|
|
|
|
|
|
|
|
[id(0x0000003f), propget]
|
|
|
|
HRESULT Profile([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x0000003f), propput]
|
|
|
|
HRESULT Profile([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x00000040), propget]
|
|
|
|
HRESULT LoginScript([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000040), propput]
|
|
|
|
HRESULT LoginScript([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x00000041), propget]
|
|
|
|
HRESULT Picture([out, retval] VARIANT* retval);
|
|
|
|
|
|
|
|
[id(0x00000041), propput]
|
|
|
|
HRESULT Picture([in] VARIANT retval);
|
|
|
|
|
|
|
|
[id(0x00000078), propget]
|
|
|
|
HRESULT HomePage([out, retval] BSTR* retval);
|
|
|
|
|
|
|
|
[id(0x00000078), propput]
|
|
|
|
HRESULT HomePage([in] BSTR retval);
|
|
|
|
|
|
|
|
[id(0x00000042)]
|
|
|
|
HRESULT Groups([out, retval] IADsMembers** ppGroups);
|
|
|
|
|
|
|
|
[id(0x00000043)]
|
|
|
|
HRESULT SetPassword([in] BSTR NewPassword);
|
|
|
|
|
|
|
|
[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);
|
|
|
|
};
|