/*** Autogenerated by WIDL 11.0 from /home/runner/.termux-build/wine-stable/src/include/iads.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __iads_h__
#define __iads_h__

/* Forward declarations */

#ifndef __IADsContainer_FWD_DEFINED__
#define __IADsContainer_FWD_DEFINED__
typedef interface IADsContainer IADsContainer;
#ifdef __cplusplus
interface IADsContainer;
#endif /* __cplusplus */
#endif

#ifndef __IADs_FWD_DEFINED__
#define __IADs_FWD_DEFINED__
typedef interface IADs IADs;
#ifdef __cplusplus
interface IADs;
#endif /* __cplusplus */
#endif

#ifndef __IADsObjectOptions_FWD_DEFINED__
#define __IADsObjectOptions_FWD_DEFINED__
typedef interface IADsObjectOptions IADsObjectOptions;
#ifdef __cplusplus
interface IADsObjectOptions;
#endif /* __cplusplus */
#endif

#ifndef __IADsMembers_FWD_DEFINED__
#define __IADsMembers_FWD_DEFINED__
typedef interface IADsMembers IADsMembers;
#ifdef __cplusplus
interface IADsMembers;
#endif /* __cplusplus */
#endif

#ifndef __IADsGroup_FWD_DEFINED__
#define __IADsGroup_FWD_DEFINED__
typedef interface IADsGroup IADsGroup;
#ifdef __cplusplus
interface IADsGroup;
#endif /* __cplusplus */
#endif

#ifndef __IADsUser_FWD_DEFINED__
#define __IADsUser_FWD_DEFINED__
typedef interface IADsUser IADsUser;
#ifdef __cplusplus
interface IADsUser;
#endif /* __cplusplus */
#endif

#ifndef __IDirectorySearch_FWD_DEFINED__
#define __IDirectorySearch_FWD_DEFINED__
typedef interface IDirectorySearch IDirectorySearch;
#ifdef __cplusplus
interface IDirectorySearch;
#endif /* __cplusplus */
#endif

#ifndef __IDirectoryObject_FWD_DEFINED__
#define __IDirectoryObject_FWD_DEFINED__
typedef interface IDirectoryObject IDirectoryObject;
#ifdef __cplusplus
interface IDirectoryObject;
#endif /* __cplusplus */
#endif

#ifndef __IADsOpenDSObject_FWD_DEFINED__
#define __IADsOpenDSObject_FWD_DEFINED__
typedef interface IADsOpenDSObject IADsOpenDSObject;
#ifdef __cplusplus
interface IADsOpenDSObject;
#endif /* __cplusplus */
#endif

#ifndef __IADsPathname_FWD_DEFINED__
#define __IADsPathname_FWD_DEFINED__
typedef interface IADsPathname IADsPathname;
#ifdef __cplusplus
interface IADsPathname;
#endif /* __cplusplus */
#endif

#ifndef __Pathname_FWD_DEFINED__
#define __Pathname_FWD_DEFINED__
#ifdef __cplusplus
typedef class Pathname Pathname;
#else
typedef struct Pathname Pathname;
#endif /* defined __cplusplus */
#endif /* defined __Pathname_FWD_DEFINED__ */

#ifndef __IADsADSystemInfo_FWD_DEFINED__
#define __IADsADSystemInfo_FWD_DEFINED__
typedef interface IADsADSystemInfo IADsADSystemInfo;
#ifdef __cplusplus
interface IADsADSystemInfo;
#endif /* __cplusplus */
#endif

#ifndef __ADSystemInfo_FWD_DEFINED__
#define __ADSystemInfo_FWD_DEFINED__
#ifdef __cplusplus
typedef class ADSystemInfo ADSystemInfo;
#else
typedef struct ADSystemInfo ADSystemInfo;
#endif /* defined __cplusplus */
#endif /* defined __ADSystemInfo_FWD_DEFINED__ */

#ifndef __IADsDNWithBinary_FWD_DEFINED__
#define __IADsDNWithBinary_FWD_DEFINED__
typedef interface IADsDNWithBinary IADsDNWithBinary;
#ifdef __cplusplus
interface IADsDNWithBinary;
#endif /* __cplusplus */
#endif

#ifndef __DNWithBinary_FWD_DEFINED__
#define __DNWithBinary_FWD_DEFINED__
#ifdef __cplusplus
typedef class DNWithBinary DNWithBinary;
#else
typedef struct DNWithBinary DNWithBinary;
#endif /* defined __cplusplus */
#endif /* defined __DNWithBinary_FWD_DEFINED__ */

#ifndef __IADsDNWithString_FWD_DEFINED__
#define __IADsDNWithString_FWD_DEFINED__
typedef interface IADsDNWithString IADsDNWithString;
#ifdef __cplusplus
interface IADsDNWithString;
#endif /* __cplusplus */
#endif

#ifndef __DNWithString_FWD_DEFINED__
#define __DNWithString_FWD_DEFINED__
#ifdef __cplusplus
typedef class DNWithString DNWithString;
#else
typedef struct DNWithString DNWithString;
#endif /* defined __cplusplus */
#endif /* defined __DNWithString_FWD_DEFINED__ */

/* Headers for imported files */

#include <oaidl.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifndef __ActiveDs_LIBRARY_DEFINED__
#define __ActiveDs_LIBRARY_DEFINED__

DEFINE_GUID(LIBID_ActiveDs, 0x97d25db0, 0x0363, 0x11cf, 0xab,0xc4, 0x02,0x60,0x8c,0x9e,0x75,0x53);

typedef enum __WIDL_iads_generated_name_0000000E {
    ADS_RIGHT_DS_CREATE_CHILD = 0x1,
    ADS_RIGHT_DS_DELETE_CHILD = 0x2,
    ADS_RIGHT_ACTRL_DS_LIST = 0x4,
    ADS_RIGHT_DS_SELF = 0x8,
    ADS_RIGHT_DS_READ_PROP = 0x10,
    ADS_RIGHT_DS_WRITE_PROP = 0x20,
    ADS_RIGHT_DS_DELETE_TREE = 0x40,
    ADS_RIGHT_DS_LIST_OBJECT = 0x80,
    ADS_RIGHT_DS_CONTROL_ACCESS = 0x100,
    ADS_RIGHT_DELETE = 0x10000,
    ADS_RIGHT_READ_CONTROL = 0x20000,
    ADS_RIGHT_WRITE_DAC = 0x40000,
    ADS_RIGHT_WRITE_OWNER = 0x80000,
    ADS_RIGHT_SYNCHRONIZE = 0x100000,
    ADS_RIGHT_ACCESS_SYSTEM_SECURITY = 0x200000,
    ADS_RIGHT_GENERIC_ALL = 0x10000000,
    ADS_RIGHT_GENERIC_EXECUTE = 0x20000000,
    ADS_RIGHT_GENERIC_WRITE = 0x40000000,
    ADS_RIGHT_GENERIC_READ = 0x80000000
} ADS_RIGHTS_ENUM;
typedef enum __WIDL_iads_generated_name_0000000F {
    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 __WIDL_iads_generated_name_00000010 {
    ADS_SEARCHPREF_ASYNCHRONOUS = 0,
    ADS_SEARCHPREF_DEREF_ALIASES = 1,
    ADS_SEARCHPREF_SIZE_LIMIT = 2,
    ADS_SEARCHPREF_TIME_LIMIT = 3,
    ADS_SEARCHPREF_ATTRIBTYPES_ONLY = 4,
    ADS_SEARCHPREF_SEARCH_SCOPE = 5,
    ADS_SEARCHPREF_TIMEOUT = 6,
    ADS_SEARCHPREF_PAGESIZE = 7,
    ADS_SEARCHPREF_PAGED_TIME_LIMIT = 8,
    ADS_SEARCHPREF_CHASE_REFERRALS = 9,
    ADS_SEARCHPREF_SORT_ON = 10,
    ADS_SEARCHPREF_CACHE_RESULTS = 11,
    ADS_SEARCHPREF_DIRSYNC = 12,
    ADS_SEARCHPREF_TOMBSTONE = 13,
    ADS_SEARCHPREF_VLV = 14,
    ADS_SEARCHPREF_ATTRIBUTE_QUERY = 15,
    ADS_SEARCHPREF_SECURITY_MASK = 16,
    ADS_SEARCHPREF_DIRSYNC_FLAG = 17,
    ADS_SEARCHPREF_EXTENDED_DN = 18
} ADS_SEARCHPREF_ENUM;
typedef enum __WIDL_iads_generated_name_00000011 {
    ADS_STATUS_S_OK = 0,
    ADS_STATUS_INVALID_SEARCHPREF = 1,
    ADS_STATUS_INVALID_SEARCHPREFVALUE = 2
} ADS_STATUSENUM;
typedef enum __WIDL_iads_generated_name_00000012 {
    ADSTYPE_INVALID = 0,
    ADSTYPE_DN_STRING = 1,
    ADSTYPE_CASE_EXACT_STRING = 2,
    ADSTYPE_CASE_IGNORE_STRING = 3,
    ADSTYPE_PRINTABLE_STRING = 4,
    ADSTYPE_NUMERIC_STRING = 5,
    ADSTYPE_BOOLEAN = 6,
    ADSTYPE_INTEGER = 7,
    ADSTYPE_OCTET_STRING = 8,
    ADSTYPE_UTC_TIME = 9,
    ADSTYPE_LARGE_INTEGER = 10,
    ADSTYPE_PROV_SPECIFIC = 11,
    ADSTYPE_OBJECT_CLASS = 12,
    ADSTYPE_CASEIGNORE_LIST = 13,
    ADSTYPE_OCTET_LIST = 14,
    ADSTYPE_PATH = 15,
    ADSTYPE_POSTALADDRESS = 16,
    ADSTYPE_TIMESTAMP = 17,
    ADSTYPE_BACKLINK = 18,
    ADSTYPE_TYPEDNAME = 19,
    ADSTYPE_HOLD = 20,
    ADSTYPE_NETADDRESS = 21,
    ADSTYPE_REPLICAPOINTER = 22,
    ADSTYPE_FAXNUMBER = 23,
    ADSTYPE_EMAIL = 24,
    ADSTYPE_NT_SECURITY_DESCRIPTOR = 25,
    ADSTYPE_UNKNOWN = 26,
    ADSTYPE_DN_WITH_BINARY = 27,
    ADSTYPE_DN_WITH_STRING = 28
} ADSTYPEENUM;
typedef enum __WIDL_iads_generated_name_00000013 {
    ADS_SCOPE_BASE = 0,
    ADS_SCOPE_ONELEVEL = 1,
    ADS_SCOPE_SUBTREE = 2
} ADS_SCOPEENUM;
typedef enum __WIDL_iads_generated_name_00000014 {
    ADS_PASSWORD_ENCODE_REQUIRE_SSL = 0,
    ADS_PASSWORD_ENCODE_CLEAR = 1
} ADS_PASSWORD_ENCODING_ENUM;
typedef enum __WIDL_iads_generated_name_00000015 {
    ADS_OPTION_SERVERNAME = 0,
    ADS_OPTION_REFERRALS = 1,
    ADS_OPTION_PAGE_SIZE = 2,
    ADS_OPTION_SECURITY_MASK = 3,
    ADS_OPTION_MUTUAL_AUTH_STATUS = 4,
    ADS_OPTION_QUOTA = 5,
    ADS_OPTION_PASSWORD_PORTNUMBER = 6,
    ADS_OPTION_PASSWORD_METHOD = 7,
    ADS_OPTION_ACCUMULATIVE_MODIFICATION = 8,
    ADS_OPTION_SKIP_SID_LOOKUP = 9
} ADS_OPTION_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 __WIDL_iads_generated_name_00000016 {
    DWORD Type;
    LPWSTR VolumeName;
    LPWSTR Path;
} ADS_PATH;
typedef struct __WIDL_iads_generated_name_00000016 *PADS_PATH;
typedef struct __WIDL_iads_generated_name_00000017 {
    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 __WIDL_iads_generated_name_00000018 {
    DWORD dwLength;
    BYTE *lpValue;
} ADS_OCTET_STRING;
typedef struct __WIDL_iads_generated_name_00000019 {
    DWORD dwLength;
    BYTE *lpValue;
} ADS_PROV_SPECIFIC;
typedef struct __WIDL_iads_generated_name_0000001A {
    LPWSTR PostalAddress[6];
} ADS_POSTALADDRESS;
typedef struct __WIDL_iads_generated_name_0000001A *PADS_POSTALADDRESS;
typedef struct __WIDL_iads_generated_name_0000001B {
    LPWSTR ObjectName;
    DWORD Level;
    DWORD Interval;
} ADS_TYPEDNAME;
typedef struct __WIDL_iads_generated_name_0000001B *PADS_TYPEDNAME;
typedef struct __WIDL_iads_generated_name_0000001C {
    DWORD RemoteID;
    LPWSTR ObjectName;
} ADS_BACKLINK;
typedef struct __WIDL_iads_generated_name_0000001D {
    LPWSTR ObjectName;
    DWORD Amount;
} ADS_HOLD;
typedef struct __WIDL_iads_generated_name_0000001E {
    DWORD AddressType;
    DWORD AddressLength;
    BYTE *Address;
} ADS_NETADDRESS;
typedef struct __WIDL_iads_generated_name_0000001E *PADS_NETADDRESS;
typedef struct __WIDL_iads_generated_name_0000001F {
    LPWSTR ServerName;
    DWORD ReplicaType;
    DWORD ReplicaNumber;
    DWORD Count;
    PADS_NETADDRESS ReplicaAddressHints;
} ADS_REPLICAPOINTER;
typedef struct __WIDL_iads_generated_name_0000001F *PADS_REPLICAPOINTER;
typedef struct __WIDL_iads_generated_name_00000020 {
    LPWSTR TelephoneNumber;
    DWORD NumberOfBits;
    BYTE *Parameters;
} ADS_FAXNUMBER;
typedef struct __WIDL_iads_generated_name_00000020 *PADS_FAXNUMBER;
typedef struct __WIDL_iads_generated_name_00000021 {
    LPWSTR Address;
    DWORD Type;
} ADS_EMAIL;
typedef struct __WIDL_iads_generated_name_00000021 *PADS_EMAIL;
typedef struct __WIDL_iads_generated_name_00000022 {
    DWORD dwLength;
    BYTE *lpValue;
} ADS_NT_SECURITY_DESCRIPTOR;
typedef struct __WIDL_iads_generated_name_00000023 {
    DWORD dwLength;
    BYTE *lpBinaryValue;
    LPWSTR pszDNString;
} ADS_DN_WITH_BINARY;
typedef struct __WIDL_iads_generated_name_00000023 *PADS_DN_WITH_BINARY;
typedef struct __WIDL_iads_generated_name_00000024 {
    LPWSTR pszStringValue;
    LPWSTR pszDNString;
} ADS_DN_WITH_STRING;
typedef struct __WIDL_iads_generated_name_00000024 *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;
    } DUMMYUNIONNAME;
} ADSVALUE;
typedef struct _adsvalue *PADSVALUE;
typedef struct ads_searchpref_info {
    ADS_SEARCHPREF dwSearchPref;
    ADSVALUE vValue;
    ADS_STATUS dwStatus;
} ADS_SEARCHPREF_INFO;
typedef struct ads_searchpref_info *PADS_SEARCHPREF_INFO;
typedef struct ads_search_column {
    LPWSTR pszAttrName;
    ADSTYPE dwADsType;
    PADSVALUE pADsValues;
    DWORD dwNumValues;
    HANDLE hReserved;
} ADS_SEARCH_COLUMN;
typedef struct ads_search_column *PADS_SEARCH_COLUMN;
typedef struct _ads_object_info {
    LPWSTR pszRDN;
    LPWSTR pszObjectDN;
    LPWSTR pszParentDN;
    LPWSTR pszSchemaDN;
    LPWSTR pszClassName;
} ADS_OBJECT_INFO;
typedef struct _ads_object_info *PADS_OBJECT_INFO;
typedef struct _ads_attr_info {
    LPWSTR pszAttrName;
    DWORD dwControlCode;
    ADSTYPE dwADsType;
    PADSVALUE pADsValues;
    DWORD dwNumValues;
} ADS_ATTR_INFO;
typedef struct _ads_attr_info *PADS_ATTR_INFO;
typedef enum __WIDL_iads_generated_name_00000025 {
    ADS_SECURITY_INFO_OWNER = 0x1,
    ADS_SECURITY_INFO_GROUP = 0x2,
    ADS_SECURITY_INFO_DACL = 0x4,
    ADS_SECURITY_INFO_SACL = 0x8
} ADS_SECURITY_INFO_ENUM;
typedef enum __WIDL_iads_generated_name_00000026 {
    ADS_SETTYPE_FULL = 1,
    ADS_SETTYPE_PROVIDER = 2,
    ADS_SETTYPE_SERVER = 3,
    ADS_SETTYPE_DN = 4
} ADS_SETTYPE_ENUM;
typedef enum __WIDL_iads_generated_name_00000027 {
    ADS_FORMAT_WINDOWS = 1,
    ADS_FORMAT_WINDOWS_NO_SERVER = 2,
    ADS_FORMAT_WINDOWS_DN = 3,
    ADS_FORMAT_WINDOWS_PARENT = 4,
    ADS_FORMAT_X500 = 5,
    ADS_FORMAT_X500_NO_SERVER = 6,
    ADS_FORMAT_X500_DN = 7,
    ADS_FORMAT_X500_PARENT = 8,
    ADS_FORMAT_SERVER = 9,
    ADS_FORMAT_PROVIDER = 10,
    ADS_FORMAT_LEAF = 11
} ADS_FORMAT_ENUM;
/*****************************************************************************
 * IADsContainer interface
 */
#ifndef __IADsContainer_INTERFACE_DEFINED__
#define __IADsContainer_INTERFACE_DEFINED__

DEFINE_GUID(IID_IADsContainer, 0x001677d0, 0xfd16, 0x11ce, 0xab,0xc4, 0x02,0x60,0x8c,0x9e,0x75,0x53);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("001677d0-fd16-11ce-abc4-02608c9e7553")
IADsContainer : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Filter(
        VARIANT *pvFilter) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Filter(
        VARIANT vFilter) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Hints(
        VARIANT *pvHints) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Hints(
        VARIANT vHints) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetObject(
        BSTR bstrClassName,
        BSTR bstrRelativeName,
        IDispatch **ppObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE Create(
        BSTR bstrClassName,
        BSTR bstrRelativeName,
        IDispatch **ppObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE Delete(
        BSTR bstrClassName,
        BSTR bstrRelativeName) = 0;

    virtual HRESULT STDMETHODCALLTYPE CopyHere(
        BSTR bstrSourceName,
        BSTR bstrNewName,
        IDispatch **ppObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE MoveHere(
        BSTR bstrSourceName,
        BSTR bstrNewName,
        IDispatch **ppObject) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IADsContainer, 0x001677d0, 0xfd16, 0x11ce, 0xab,0xc4, 0x02,0x60,0x8c,0x9e,0x75,0x53)
#endif
#else
typedef struct IADsContainerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IADsContainer *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IADsContainer *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IADsContainer *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IADsContainer *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IADsContainer *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IADsContainer *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IADsContainer *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IADsContainer methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        IADsContainer *This,
        LONG *retval);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        IADsContainer *This,
        IUnknown **retval);

    HRESULT (STDMETHODCALLTYPE *get_Filter)(
        IADsContainer *This,
        VARIANT *pvFilter);

    HRESULT (STDMETHODCALLTYPE *put_Filter)(
        IADsContainer *This,
        VARIANT vFilter);

    HRESULT (STDMETHODCALLTYPE *get_Hints)(
        IADsContainer *This,
        VARIANT *pvHints);

    HRESULT (STDMETHODCALLTYPE *put_Hints)(
        IADsContainer *This,
        VARIANT vHints);

    HRESULT (STDMETHODCALLTYPE *GetObject)(
        IADsContainer *This,
        BSTR bstrClassName,
        BSTR bstrRelativeName,
        IDispatch **ppObject);

    HRESULT (STDMETHODCALLTYPE *Create)(
        IADsContainer *This,
        BSTR bstrClassName,
        BSTR bstrRelativeName,
        IDispatch **ppObject);

    HRESULT (STDMETHODCALLTYPE *Delete)(
        IADsContainer *This,
        BSTR bstrClassName,
        BSTR bstrRelativeName);

    HRESULT (STDMETHODCALLTYPE *CopyHere)(
        IADsContainer *This,
        BSTR bstrSourceName,
        BSTR bstrNewName,
        IDispatch **ppObject);

    HRESULT (STDMETHODCALLTYPE *MoveHere)(
        IADsContainer *This,
        BSTR bstrSourceName,
        BSTR bstrNewName,
        IDispatch **ppObject);

    END_INTERFACE
} IADsContainerVtbl;

interface IADsContainer {
    CONST_VTBL IADsContainerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IADsContainer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IADsContainer_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IADsContainer_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IADsContainer_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IADsContainer_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IADsContainer_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IADsContainer_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IADsContainer methods ***/
#define IADsContainer_get_Count(This,retval) (This)->lpVtbl->get_Count(This,retval)
#define IADsContainer_get__NewEnum(This,retval) (This)->lpVtbl->get__NewEnum(This,retval)
#define IADsContainer_get_Filter(This,pvFilter) (This)->lpVtbl->get_Filter(This,pvFilter)
#define IADsContainer_put_Filter(This,vFilter) (This)->lpVtbl->put_Filter(This,vFilter)
#define IADsContainer_get_Hints(This,pvHints) (This)->lpVtbl->get_Hints(This,pvHints)
#define IADsContainer_put_Hints(This,vHints) (This)->lpVtbl->put_Hints(This,vHints)
#define IADsContainer_GetObject(This,bstrClassName,bstrRelativeName,ppObject) (This)->lpVtbl->GetObject(This,bstrClassName,bstrRelativeName,ppObject)
#define IADsContainer_Create(This,bstrClassName,bstrRelativeName,ppObject) (This)->lpVtbl->Create(This,bstrClassName,bstrRelativeName,ppObject)
#define IADsContainer_Delete(This,bstrClassName,bstrRelativeName) (This)->lpVtbl->Delete(This,bstrClassName,bstrRelativeName)
#define IADsContainer_CopyHere(This,bstrSourceName,bstrNewName,ppObject) (This)->lpVtbl->CopyHere(This,bstrSourceName,bstrNewName,ppObject)
#define IADsContainer_MoveHere(This,bstrSourceName,bstrNewName,ppObject) (This)->lpVtbl->MoveHere(This,bstrSourceName,bstrNewName,ppObject)
#else
/*** IUnknown methods ***/
static inline HRESULT IADsContainer_QueryInterface(IADsContainer* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IADsContainer_AddRef(IADsContainer* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IADsContainer_Release(IADsContainer* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IADsContainer_GetTypeInfoCount(IADsContainer* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IADsContainer_GetTypeInfo(IADsContainer* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IADsContainer_GetIDsOfNames(IADsContainer* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IADsContainer_Invoke(IADsContainer* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IADsContainer methods ***/
static inline HRESULT IADsContainer_get_Count(IADsContainer* This,LONG *retval) {
    return This->lpVtbl->get_Count(This,retval);
}
static inline HRESULT IADsContainer_get__NewEnum(IADsContainer* This,IUnknown **retval) {
    return This->lpVtbl->get__NewEnum(This,retval);
}
static inline HRESULT IADsContainer_get_Filter(IADsContainer* This,VARIANT *pvFilter) {
    return This->lpVtbl->get_Filter(This,pvFilter);
}
static inline HRESULT IADsContainer_put_Filter(IADsContainer* This,VARIANT vFilter) {
    return This->lpVtbl->put_Filter(This,vFilter);
}
static inline HRESULT IADsContainer_get_Hints(IADsContainer* This,VARIANT *pvHints) {
    return This->lpVtbl->get_Hints(This,pvHints);
}
static inline HRESULT IADsContainer_put_Hints(IADsContainer* This,VARIANT vHints) {
    return This->lpVtbl->put_Hints(This,vHints);
}
static inline HRESULT IADsContainer_GetObject(IADsContainer* This,BSTR bstrClassName,BSTR bstrRelativeName,IDispatch **ppObject) {
    return This->lpVtbl->GetObject(This,bstrClassName,bstrRelativeName,ppObject);
}
static inline HRESULT IADsContainer_Create(IADsContainer* This,BSTR bstrClassName,BSTR bstrRelativeName,IDispatch **ppObject) {
    return This->lpVtbl->Create(This,bstrClassName,bstrRelativeName,ppObject);
}
static inline HRESULT IADsContainer_Delete(IADsContainer* This,BSTR bstrClassName,BSTR bstrRelativeName) {
    return This->lpVtbl->Delete(This,bstrClassName,bstrRelativeName);
}
static inline HRESULT IADsContainer_CopyHere(IADsContainer* This,BSTR bstrSourceName,BSTR bstrNewName,IDispatch **ppObject) {
    return This->lpVtbl->CopyHere(This,bstrSourceName,bstrNewName,ppObject);
}
static inline HRESULT IADsContainer_MoveHere(IADsContainer* This,BSTR bstrSourceName,BSTR bstrNewName,IDispatch **ppObject) {
    return This->lpVtbl->MoveHere(This,bstrSourceName,bstrNewName,ppObject);
}
#endif
#endif

#endif


#endif  /* __IADsContainer_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IADs interface
 */
#ifndef __IADs_INTERFACE_DEFINED__
#define __IADs_INTERFACE_DEFINED__

DEFINE_GUID(IID_IADs, 0xfd8256d0, 0xfd15, 0x11ce, 0xab,0xc4, 0x02,0x60,0x8c,0x9e,0x75,0x53);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fd8256d0-fd15-11ce-abc4-02608c9e7553")
IADs : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Name(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Class(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_GUID(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ADsPath(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Parent(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Schema(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInfo(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInfo(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Get(
        BSTR bstrName,
        VARIANT *pvProp) = 0;

    virtual HRESULT STDMETHODCALLTYPE Put(
        BSTR bstrName,
        VARIANT vProp) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEx(
        BSTR bstrName,
        VARIANT *pvProp) = 0;

    virtual HRESULT STDMETHODCALLTYPE PutEx(
        LONG lnControlCode,
        BSTR bstrName,
        VARIANT vProp) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInfoEx(
        VARIANT vProperties,
        LONG lnReserved) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IADs, 0xfd8256d0, 0xfd15, 0x11ce, 0xab,0xc4, 0x02,0x60,0x8c,0x9e,0x75,0x53)
#endif
#else
typedef struct IADsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IADs *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IADs *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IADs *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IADs *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IADs *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IADs *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IADs *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IADs methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Name)(
        IADs *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_Class)(
        IADs *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_GUID)(
        IADs *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_ADsPath)(
        IADs *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        IADs *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_Schema)(
        IADs *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *GetInfo)(
        IADs *This);

    HRESULT (STDMETHODCALLTYPE *SetInfo)(
        IADs *This);

    HRESULT (STDMETHODCALLTYPE *Get)(
        IADs *This,
        BSTR bstrName,
        VARIANT *pvProp);

    HRESULT (STDMETHODCALLTYPE *Put)(
        IADs *This,
        BSTR bstrName,
        VARIANT vProp);

    HRESULT (STDMETHODCALLTYPE *GetEx)(
        IADs *This,
        BSTR bstrName,
        VARIANT *pvProp);

    HRESULT (STDMETHODCALLTYPE *PutEx)(
        IADs *This,
        LONG lnControlCode,
        BSTR bstrName,
        VARIANT vProp);

    HRESULT (STDMETHODCALLTYPE *GetInfoEx)(
        IADs *This,
        VARIANT vProperties,
        LONG lnReserved);

    END_INTERFACE
} IADsVtbl;

interface IADs {
    CONST_VTBL IADsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IADs_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IADs_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IADs_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IADs_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IADs_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IADs_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IADs_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IADs methods ***/
#define IADs_get_Name(This,retval) (This)->lpVtbl->get_Name(This,retval)
#define IADs_get_Class(This,retval) (This)->lpVtbl->get_Class(This,retval)
#define IADs_get_GUID(This,retval) (This)->lpVtbl->get_GUID(This,retval)
#define IADs_get_ADsPath(This,retval) (This)->lpVtbl->get_ADsPath(This,retval)
#define IADs_get_Parent(This,retval) (This)->lpVtbl->get_Parent(This,retval)
#define IADs_get_Schema(This,retval) (This)->lpVtbl->get_Schema(This,retval)
#define IADs_GetInfo(This) (This)->lpVtbl->GetInfo(This)
#define IADs_SetInfo(This) (This)->lpVtbl->SetInfo(This)
#define IADs_Get(This,bstrName,pvProp) (This)->lpVtbl->Get(This,bstrName,pvProp)
#define IADs_Put(This,bstrName,vProp) (This)->lpVtbl->Put(This,bstrName,vProp)
#define IADs_GetEx(This,bstrName,pvProp) (This)->lpVtbl->GetEx(This,bstrName,pvProp)
#define IADs_PutEx(This,lnControlCode,bstrName,vProp) (This)->lpVtbl->PutEx(This,lnControlCode,bstrName,vProp)
#define IADs_GetInfoEx(This,vProperties,lnReserved) (This)->lpVtbl->GetInfoEx(This,vProperties,lnReserved)
#else
/*** IUnknown methods ***/
static inline HRESULT IADs_QueryInterface(IADs* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IADs_AddRef(IADs* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IADs_Release(IADs* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IADs_GetTypeInfoCount(IADs* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IADs_GetTypeInfo(IADs* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IADs_GetIDsOfNames(IADs* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IADs_Invoke(IADs* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IADs methods ***/
static inline HRESULT IADs_get_Name(IADs* This,BSTR *retval) {
    return This->lpVtbl->get_Name(This,retval);
}
static inline HRESULT IADs_get_Class(IADs* This,BSTR *retval) {
    return This->lpVtbl->get_Class(This,retval);
}
static inline HRESULT IADs_get_GUID(IADs* This,BSTR *retval) {
    return This->lpVtbl->get_GUID(This,retval);
}
static inline HRESULT IADs_get_ADsPath(IADs* This,BSTR *retval) {
    return This->lpVtbl->get_ADsPath(This,retval);
}
static inline HRESULT IADs_get_Parent(IADs* This,BSTR *retval) {
    return This->lpVtbl->get_Parent(This,retval);
}
static inline HRESULT IADs_get_Schema(IADs* This,BSTR *retval) {
    return This->lpVtbl->get_Schema(This,retval);
}
static inline HRESULT IADs_GetInfo(IADs* This) {
    return This->lpVtbl->GetInfo(This);
}
static inline HRESULT IADs_SetInfo(IADs* This) {
    return This->lpVtbl->SetInfo(This);
}
static inline HRESULT IADs_Get(IADs* This,BSTR bstrName,VARIANT *pvProp) {
    return This->lpVtbl->Get(This,bstrName,pvProp);
}
static inline HRESULT IADs_Put(IADs* This,BSTR bstrName,VARIANT vProp) {
    return This->lpVtbl->Put(This,bstrName,vProp);
}
static inline HRESULT IADs_GetEx(IADs* This,BSTR bstrName,VARIANT *pvProp) {
    return This->lpVtbl->GetEx(This,bstrName,pvProp);
}
static inline HRESULT IADs_PutEx(IADs* This,LONG lnControlCode,BSTR bstrName,VARIANT vProp) {
    return This->lpVtbl->PutEx(This,lnControlCode,bstrName,vProp);
}
static inline HRESULT IADs_GetInfoEx(IADs* This,VARIANT vProperties,LONG lnReserved) {
    return This->lpVtbl->GetInfoEx(This,vProperties,lnReserved);
}
#endif
#endif

#endif


#endif  /* __IADs_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IADsObjectOptions interface
 */
#ifndef __IADsObjectOptions_INTERFACE_DEFINED__
#define __IADsObjectOptions_INTERFACE_DEFINED__

DEFINE_GUID(IID_IADsObjectOptions, 0x46f14fda, 0x232b, 0x11d1, 0xa8,0x08, 0x00,0xc0,0x4f,0xd8,0xd5,0xa8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("46f14fda-232b-11d1-a808-00c04fd8d5a8")
IADsObjectOptions : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE GetOption(
        LONG option,
        VARIANT *var) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOption(
        LONG option,
        VARIANT var) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IADsObjectOptions, 0x46f14fda, 0x232b, 0x11d1, 0xa8,0x08, 0x00,0xc0,0x4f,0xd8,0xd5,0xa8)
#endif
#else
typedef struct IADsObjectOptionsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IADsObjectOptions *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IADsObjectOptions *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IADsObjectOptions *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IADsObjectOptions *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IADsObjectOptions *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IADsObjectOptions *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IADsObjectOptions *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IADsObjectOptions methods ***/
    HRESULT (STDMETHODCALLTYPE *GetOption)(
        IADsObjectOptions *This,
        LONG option,
        VARIANT *var);

    HRESULT (STDMETHODCALLTYPE *SetOption)(
        IADsObjectOptions *This,
        LONG option,
        VARIANT var);

    END_INTERFACE
} IADsObjectOptionsVtbl;

interface IADsObjectOptions {
    CONST_VTBL IADsObjectOptionsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IADsObjectOptions_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IADsObjectOptions_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IADsObjectOptions_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IADsObjectOptions_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IADsObjectOptions_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IADsObjectOptions_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IADsObjectOptions_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IADsObjectOptions methods ***/
#define IADsObjectOptions_GetOption(This,option,var) (This)->lpVtbl->GetOption(This,option,var)
#define IADsObjectOptions_SetOption(This,option,var) (This)->lpVtbl->SetOption(This,option,var)
#else
/*** IUnknown methods ***/
static inline HRESULT IADsObjectOptions_QueryInterface(IADsObjectOptions* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IADsObjectOptions_AddRef(IADsObjectOptions* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IADsObjectOptions_Release(IADsObjectOptions* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IADsObjectOptions_GetTypeInfoCount(IADsObjectOptions* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IADsObjectOptions_GetTypeInfo(IADsObjectOptions* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IADsObjectOptions_GetIDsOfNames(IADsObjectOptions* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IADsObjectOptions_Invoke(IADsObjectOptions* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IADsObjectOptions methods ***/
static inline HRESULT IADsObjectOptions_GetOption(IADsObjectOptions* This,LONG option,VARIANT *var) {
    return This->lpVtbl->GetOption(This,option,var);
}
static inline HRESULT IADsObjectOptions_SetOption(IADsObjectOptions* This,LONG option,VARIANT var) {
    return This->lpVtbl->SetOption(This,option,var);
}
#endif
#endif

#endif


#endif  /* __IADsObjectOptions_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IADsMembers interface
 */
#ifndef __IADsMembers_INTERFACE_DEFINED__
#define __IADsMembers_INTERFACE_DEFINED__

DEFINE_GUID(IID_IADsMembers, 0x451a0030, 0x72ec, 0x11cf, 0xb0,0x3b, 0x00,0xaa,0x00,0x6e,0x09,0x75);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("451a0030-72ec-11cf-b03b-00aa006e0975")
IADsMembers : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *plCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get__NewEnum(
        IUnknown **ppEnumerator) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Filter(
        VARIANT *pvFilter) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Filter(
        VARIANT pvFilter) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IADsMembers, 0x451a0030, 0x72ec, 0x11cf, 0xb0,0x3b, 0x00,0xaa,0x00,0x6e,0x09,0x75)
#endif
#else
typedef struct IADsMembersVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IADsMembers *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IADsMembers *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IADsMembers *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IADsMembers *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IADsMembers *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IADsMembers *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IADsMembers *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IADsMembers methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        IADsMembers *This,
        LONG *plCount);

    HRESULT (STDMETHODCALLTYPE *get__NewEnum)(
        IADsMembers *This,
        IUnknown **ppEnumerator);

    HRESULT (STDMETHODCALLTYPE *get_Filter)(
        IADsMembers *This,
        VARIANT *pvFilter);

    HRESULT (STDMETHODCALLTYPE *put_Filter)(
        IADsMembers *This,
        VARIANT pvFilter);

    END_INTERFACE
} IADsMembersVtbl;

interface IADsMembers {
    CONST_VTBL IADsMembersVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IADsMembers_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IADsMembers_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IADsMembers_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IADsMembers_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IADsMembers_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IADsMembers_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IADsMembers_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IADsMembers methods ***/
#define IADsMembers_get_Count(This,plCount) (This)->lpVtbl->get_Count(This,plCount)
#define IADsMembers_get__NewEnum(This,ppEnumerator) (This)->lpVtbl->get__NewEnum(This,ppEnumerator)
#define IADsMembers_get_Filter(This,pvFilter) (This)->lpVtbl->get_Filter(This,pvFilter)
#define IADsMembers_put_Filter(This,pvFilter) (This)->lpVtbl->put_Filter(This,pvFilter)
#else
/*** IUnknown methods ***/
static inline HRESULT IADsMembers_QueryInterface(IADsMembers* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IADsMembers_AddRef(IADsMembers* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IADsMembers_Release(IADsMembers* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IADsMembers_GetTypeInfoCount(IADsMembers* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IADsMembers_GetTypeInfo(IADsMembers* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IADsMembers_GetIDsOfNames(IADsMembers* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IADsMembers_Invoke(IADsMembers* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IADsMembers methods ***/
static inline HRESULT IADsMembers_get_Count(IADsMembers* This,LONG *plCount) {
    return This->lpVtbl->get_Count(This,plCount);
}
static inline HRESULT IADsMembers_get__NewEnum(IADsMembers* This,IUnknown **ppEnumerator) {
    return This->lpVtbl->get__NewEnum(This,ppEnumerator);
}
static inline HRESULT IADsMembers_get_Filter(IADsMembers* This,VARIANT *pvFilter) {
    return This->lpVtbl->get_Filter(This,pvFilter);
}
static inline HRESULT IADsMembers_put_Filter(IADsMembers* This,VARIANT pvFilter) {
    return This->lpVtbl->put_Filter(This,pvFilter);
}
#endif
#endif

#endif


#endif  /* __IADsMembers_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IADsGroup interface
 */
#ifndef __IADsGroup_INTERFACE_DEFINED__
#define __IADsGroup_INTERFACE_DEFINED__

DEFINE_GUID(IID_IADsGroup, 0x27636b00, 0x410f, 0x11cf, 0xb1,0xff, 0x02,0x60,0x8c,0x9e,0x75,0x53);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("27636b00-410f-11cf-b1ff-02608c9e7553")
IADsGroup : public IADs
{
    virtual HRESULT STDMETHODCALLTYPE get_Description(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Description(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE Members(
        IADsMembers **ppMembers) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsMember(
        BSTR bstrMember,
        VARIANT_BOOL *bMember) = 0;

    virtual HRESULT STDMETHODCALLTYPE Add(
        BSTR bstrNewItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE Remove(
        BSTR bstrItemToBeRemoved) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IADsGroup, 0x27636b00, 0x410f, 0x11cf, 0xb1,0xff, 0x02,0x60,0x8c,0x9e,0x75,0x53)
#endif
#else
typedef struct IADsGroupVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IADsGroup *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IADsGroup *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IADsGroup *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IADsGroup *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IADsGroup *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IADsGroup *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IADsGroup *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IADs methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Name)(
        IADsGroup *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_Class)(
        IADsGroup *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_GUID)(
        IADsGroup *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_ADsPath)(
        IADsGroup *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        IADsGroup *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_Schema)(
        IADsGroup *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *GetInfo)(
        IADsGroup *This);

    HRESULT (STDMETHODCALLTYPE *SetInfo)(
        IADsGroup *This);

    HRESULT (STDMETHODCALLTYPE *Get)(
        IADsGroup *This,
        BSTR bstrName,
        VARIANT *pvProp);

    HRESULT (STDMETHODCALLTYPE *Put)(
        IADsGroup *This,
        BSTR bstrName,
        VARIANT vProp);

    HRESULT (STDMETHODCALLTYPE *GetEx)(
        IADsGroup *This,
        BSTR bstrName,
        VARIANT *pvProp);

    HRESULT (STDMETHODCALLTYPE *PutEx)(
        IADsGroup *This,
        LONG lnControlCode,
        BSTR bstrName,
        VARIANT vProp);

    HRESULT (STDMETHODCALLTYPE *GetInfoEx)(
        IADsGroup *This,
        VARIANT vProperties,
        LONG lnReserved);

    /*** IADsGroup methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Description)(
        IADsGroup *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_Description)(
        IADsGroup *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *Members)(
        IADsGroup *This,
        IADsMembers **ppMembers);

    HRESULT (STDMETHODCALLTYPE *IsMember)(
        IADsGroup *This,
        BSTR bstrMember,
        VARIANT_BOOL *bMember);

    HRESULT (STDMETHODCALLTYPE *Add)(
        IADsGroup *This,
        BSTR bstrNewItem);

    HRESULT (STDMETHODCALLTYPE *Remove)(
        IADsGroup *This,
        BSTR bstrItemToBeRemoved);

    END_INTERFACE
} IADsGroupVtbl;

interface IADsGroup {
    CONST_VTBL IADsGroupVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IADsGroup_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IADsGroup_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IADsGroup_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IADsGroup_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IADsGroup_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IADsGroup_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IADsGroup_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IADs methods ***/
#define IADsGroup_get_Name(This,retval) (This)->lpVtbl->get_Name(This,retval)
#define IADsGroup_get_Class(This,retval) (This)->lpVtbl->get_Class(This,retval)
#define IADsGroup_get_GUID(This,retval) (This)->lpVtbl->get_GUID(This,retval)
#define IADsGroup_get_ADsPath(This,retval) (This)->lpVtbl->get_ADsPath(This,retval)
#define IADsGroup_get_Parent(This,retval) (This)->lpVtbl->get_Parent(This,retval)
#define IADsGroup_get_Schema(This,retval) (This)->lpVtbl->get_Schema(This,retval)
#define IADsGroup_GetInfo(This) (This)->lpVtbl->GetInfo(This)
#define IADsGroup_SetInfo(This) (This)->lpVtbl->SetInfo(This)
#define IADsGroup_Get(This,bstrName,pvProp) (This)->lpVtbl->Get(This,bstrName,pvProp)
#define IADsGroup_Put(This,bstrName,vProp) (This)->lpVtbl->Put(This,bstrName,vProp)
#define IADsGroup_GetEx(This,bstrName,pvProp) (This)->lpVtbl->GetEx(This,bstrName,pvProp)
#define IADsGroup_PutEx(This,lnControlCode,bstrName,vProp) (This)->lpVtbl->PutEx(This,lnControlCode,bstrName,vProp)
#define IADsGroup_GetInfoEx(This,vProperties,lnReserved) (This)->lpVtbl->GetInfoEx(This,vProperties,lnReserved)
/*** IADsGroup methods ***/
#define IADsGroup_get_Description(This,retval) (This)->lpVtbl->get_Description(This,retval)
#define IADsGroup_put_Description(This,retval) (This)->lpVtbl->put_Description(This,retval)
#define IADsGroup_Members(This,ppMembers) (This)->lpVtbl->Members(This,ppMembers)
#define IADsGroup_IsMember(This,bstrMember,bMember) (This)->lpVtbl->IsMember(This,bstrMember,bMember)
#define IADsGroup_Add(This,bstrNewItem) (This)->lpVtbl->Add(This,bstrNewItem)
#define IADsGroup_Remove(This,bstrItemToBeRemoved) (This)->lpVtbl->Remove(This,bstrItemToBeRemoved)
#else
/*** IUnknown methods ***/
static inline HRESULT IADsGroup_QueryInterface(IADsGroup* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IADsGroup_AddRef(IADsGroup* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IADsGroup_Release(IADsGroup* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IADsGroup_GetTypeInfoCount(IADsGroup* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IADsGroup_GetTypeInfo(IADsGroup* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IADsGroup_GetIDsOfNames(IADsGroup* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IADsGroup_Invoke(IADsGroup* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IADs methods ***/
static inline HRESULT IADsGroup_get_Name(IADsGroup* This,BSTR *retval) {
    return This->lpVtbl->get_Name(This,retval);
}
static inline HRESULT IADsGroup_get_Class(IADsGroup* This,BSTR *retval) {
    return This->lpVtbl->get_Class(This,retval);
}
static inline HRESULT IADsGroup_get_GUID(IADsGroup* This,BSTR *retval) {
    return This->lpVtbl->get_GUID(This,retval);
}
static inline HRESULT IADsGroup_get_ADsPath(IADsGroup* This,BSTR *retval) {
    return This->lpVtbl->get_ADsPath(This,retval);
}
static inline HRESULT IADsGroup_get_Parent(IADsGroup* This,BSTR *retval) {
    return This->lpVtbl->get_Parent(This,retval);
}
static inline HRESULT IADsGroup_get_Schema(IADsGroup* This,BSTR *retval) {
    return This->lpVtbl->get_Schema(This,retval);
}
static inline HRESULT IADsGroup_GetInfo(IADsGroup* This) {
    return This->lpVtbl->GetInfo(This);
}
static inline HRESULT IADsGroup_SetInfo(IADsGroup* This) {
    return This->lpVtbl->SetInfo(This);
}
static inline HRESULT IADsGroup_Get(IADsGroup* This,BSTR bstrName,VARIANT *pvProp) {
    return This->lpVtbl->Get(This,bstrName,pvProp);
}
static inline HRESULT IADsGroup_Put(IADsGroup* This,BSTR bstrName,VARIANT vProp) {
    return This->lpVtbl->Put(This,bstrName,vProp);
}
static inline HRESULT IADsGroup_GetEx(IADsGroup* This,BSTR bstrName,VARIANT *pvProp) {
    return This->lpVtbl->GetEx(This,bstrName,pvProp);
}
static inline HRESULT IADsGroup_PutEx(IADsGroup* This,LONG lnControlCode,BSTR bstrName,VARIANT vProp) {
    return This->lpVtbl->PutEx(This,lnControlCode,bstrName,vProp);
}
static inline HRESULT IADsGroup_GetInfoEx(IADsGroup* This,VARIANT vProperties,LONG lnReserved) {
    return This->lpVtbl->GetInfoEx(This,vProperties,lnReserved);
}
/*** IADsGroup methods ***/
static inline HRESULT IADsGroup_get_Description(IADsGroup* This,BSTR *retval) {
    return This->lpVtbl->get_Description(This,retval);
}
static inline HRESULT IADsGroup_put_Description(IADsGroup* This,BSTR retval) {
    return This->lpVtbl->put_Description(This,retval);
}
static inline HRESULT IADsGroup_Members(IADsGroup* This,IADsMembers **ppMembers) {
    return This->lpVtbl->Members(This,ppMembers);
}
static inline HRESULT IADsGroup_IsMember(IADsGroup* This,BSTR bstrMember,VARIANT_BOOL *bMember) {
    return This->lpVtbl->IsMember(This,bstrMember,bMember);
}
static inline HRESULT IADsGroup_Add(IADsGroup* This,BSTR bstrNewItem) {
    return This->lpVtbl->Add(This,bstrNewItem);
}
static inline HRESULT IADsGroup_Remove(IADsGroup* This,BSTR bstrItemToBeRemoved) {
    return This->lpVtbl->Remove(This,bstrItemToBeRemoved);
}
#endif
#endif

#endif


#endif  /* __IADsGroup_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IADsUser interface
 */
#ifndef __IADsUser_INTERFACE_DEFINED__
#define __IADsUser_INTERFACE_DEFINED__

DEFINE_GUID(IID_IADsUser, 0x3e37e320, 0x17e2, 0x11cf, 0xab,0xc4, 0x02,0x60,0x8c,0x9e,0x75,0x53);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3e37e320-17e2-11cf-abc4-02608c9e7553")
IADsUser : public IADs
{
    virtual HRESULT STDMETHODCALLTYPE get_BadLoginAddress(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_BadLoginCount(
        LONG *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LastLogin(
        DATE *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LastLogoff(
        DATE *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LastFailedLogin(
        DATE *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PasswordLastChanged(
        DATE *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Description(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Description(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Division(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Division(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Department(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Department(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_EmployeeID(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_EmployeeID(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FullName(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_FullName(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FirstName(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_FirstName(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LastName(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_LastName(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_OtherName(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_OtherName(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_NamePrefix(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_NamePrefix(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_NameSuffix(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_NameSuffix(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Title(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Title(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Manager(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Manager(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_TelephoneHome(
        VARIANT *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_TelephoneHome(
        VARIANT retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_TelephoneMobile(
        VARIANT *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_TelephoneMobile(
        VARIANT retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_TelephoneNumber(
        VARIANT *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_TelephoneNumber(
        VARIANT retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_TelephonePager(
        VARIANT *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_TelephonePager(
        VARIANT retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FaxNumber(
        VARIANT *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_FaxNumber(
        VARIANT retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_OfficeLocations(
        VARIANT *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_OfficeLocations(
        VARIANT retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PostalAddresses(
        VARIANT *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_PostalAddresses(
        VARIANT retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PostalCodes(
        VARIANT *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_PostalCodes(
        VARIANT retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SeeAlso(
        VARIANT *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SeeAlso(
        VARIANT retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AccountDisabled(
        VARIANT_BOOL *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_AccountDisabled(
        VARIANT_BOOL retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AccountExpirationDate(
        DATE *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_AccountExpirationDate(
        DATE retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_GraceLoginsAllowed(
        LONG *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_GraceLoginsAllowed(
        LONG retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_GraceLoginsRemaining(
        LONG *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_GraceLoginsRemaining(
        LONG retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsAccountLocked(
        VARIANT_BOOL *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_IsAccountLocked(
        VARIANT_BOOL retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LoginHours(
        VARIANT *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_LoginHours(
        VARIANT retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LoginWorkstations(
        VARIANT *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_LoginWorkstations(
        VARIANT retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_MaxLogins(
        LONG *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_MaxLogins(
        LONG retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_MaxStorage(
        LONG *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_MaxStorage(
        LONG retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PasswordExpirationDate(
        DATE *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_PasswordExpirationDate(
        DATE retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PasswordMinimumLength(
        LONG *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_PasswordMinimumLength(
        LONG retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PasswordRequired(
        VARIANT_BOOL *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_PasswordRequired(
        VARIANT_BOOL retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RequireUniquePassword(
        VARIANT_BOOL *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_RequireUniquePassword(
        VARIANT_BOOL retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_EmailAddress(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_EmailAddress(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_HomeDirectory(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_HomeDirectory(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Languages(
        VARIANT *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Languages(
        VARIANT retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Profile(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Profile(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_LoginScript(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_LoginScript(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Picture(
        VARIANT *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Picture(
        VARIANT retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_HomePage(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_HomePage(
        BSTR retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE Groups(
        IADsMembers **ppGroups) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPassword(
        BSTR NewPassword) = 0;

    virtual HRESULT STDMETHODCALLTYPE ChangePassword(
        BSTR bstrOldPassword,
        BSTR bstrNewPassword) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IADsUser, 0x3e37e320, 0x17e2, 0x11cf, 0xab,0xc4, 0x02,0x60,0x8c,0x9e,0x75,0x53)
#endif
#else
typedef struct IADsUserVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IADsUser *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IADsUser *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IADsUser *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IADsUser *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IADsUser *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IADsUser *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IADsUser *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IADs methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Name)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_Class)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_GUID)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_ADsPath)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_Schema)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *GetInfo)(
        IADsUser *This);

    HRESULT (STDMETHODCALLTYPE *SetInfo)(
        IADsUser *This);

    HRESULT (STDMETHODCALLTYPE *Get)(
        IADsUser *This,
        BSTR bstrName,
        VARIANT *pvProp);

    HRESULT (STDMETHODCALLTYPE *Put)(
        IADsUser *This,
        BSTR bstrName,
        VARIANT vProp);

    HRESULT (STDMETHODCALLTYPE *GetEx)(
        IADsUser *This,
        BSTR bstrName,
        VARIANT *pvProp);

    HRESULT (STDMETHODCALLTYPE *PutEx)(
        IADsUser *This,
        LONG lnControlCode,
        BSTR bstrName,
        VARIANT vProp);

    HRESULT (STDMETHODCALLTYPE *GetInfoEx)(
        IADsUser *This,
        VARIANT vProperties,
        LONG lnReserved);

    /*** IADsUser methods ***/
    HRESULT (STDMETHODCALLTYPE *get_BadLoginAddress)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_BadLoginCount)(
        IADsUser *This,
        LONG *retval);

    HRESULT (STDMETHODCALLTYPE *get_LastLogin)(
        IADsUser *This,
        DATE *retval);

    HRESULT (STDMETHODCALLTYPE *get_LastLogoff)(
        IADsUser *This,
        DATE *retval);

    HRESULT (STDMETHODCALLTYPE *get_LastFailedLogin)(
        IADsUser *This,
        DATE *retval);

    HRESULT (STDMETHODCALLTYPE *get_PasswordLastChanged)(
        IADsUser *This,
        DATE *retval);

    HRESULT (STDMETHODCALLTYPE *get_Description)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_Description)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *get_Division)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_Division)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *get_Department)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_Department)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *get_EmployeeID)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_EmployeeID)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *get_FullName)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_FullName)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *get_FirstName)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_FirstName)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *get_LastName)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_LastName)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *get_OtherName)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_OtherName)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *get_NamePrefix)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_NamePrefix)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *get_NameSuffix)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_NameSuffix)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *get_Title)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_Title)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *get_Manager)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_Manager)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *get_TelephoneHome)(
        IADsUser *This,
        VARIANT *retval);

    HRESULT (STDMETHODCALLTYPE *put_TelephoneHome)(
        IADsUser *This,
        VARIANT retval);

    HRESULT (STDMETHODCALLTYPE *get_TelephoneMobile)(
        IADsUser *This,
        VARIANT *retval);

    HRESULT (STDMETHODCALLTYPE *put_TelephoneMobile)(
        IADsUser *This,
        VARIANT retval);

    HRESULT (STDMETHODCALLTYPE *get_TelephoneNumber)(
        IADsUser *This,
        VARIANT *retval);

    HRESULT (STDMETHODCALLTYPE *put_TelephoneNumber)(
        IADsUser *This,
        VARIANT retval);

    HRESULT (STDMETHODCALLTYPE *get_TelephonePager)(
        IADsUser *This,
        VARIANT *retval);

    HRESULT (STDMETHODCALLTYPE *put_TelephonePager)(
        IADsUser *This,
        VARIANT retval);

    HRESULT (STDMETHODCALLTYPE *get_FaxNumber)(
        IADsUser *This,
        VARIANT *retval);

    HRESULT (STDMETHODCALLTYPE *put_FaxNumber)(
        IADsUser *This,
        VARIANT retval);

    HRESULT (STDMETHODCALLTYPE *get_OfficeLocations)(
        IADsUser *This,
        VARIANT *retval);

    HRESULT (STDMETHODCALLTYPE *put_OfficeLocations)(
        IADsUser *This,
        VARIANT retval);

    HRESULT (STDMETHODCALLTYPE *get_PostalAddresses)(
        IADsUser *This,
        VARIANT *retval);

    HRESULT (STDMETHODCALLTYPE *put_PostalAddresses)(
        IADsUser *This,
        VARIANT retval);

    HRESULT (STDMETHODCALLTYPE *get_PostalCodes)(
        IADsUser *This,
        VARIANT *retval);

    HRESULT (STDMETHODCALLTYPE *put_PostalCodes)(
        IADsUser *This,
        VARIANT retval);

    HRESULT (STDMETHODCALLTYPE *get_SeeAlso)(
        IADsUser *This,
        VARIANT *retval);

    HRESULT (STDMETHODCALLTYPE *put_SeeAlso)(
        IADsUser *This,
        VARIANT retval);

    HRESULT (STDMETHODCALLTYPE *get_AccountDisabled)(
        IADsUser *This,
        VARIANT_BOOL *retval);

    HRESULT (STDMETHODCALLTYPE *put_AccountDisabled)(
        IADsUser *This,
        VARIANT_BOOL retval);

    HRESULT (STDMETHODCALLTYPE *get_AccountExpirationDate)(
        IADsUser *This,
        DATE *retval);

    HRESULT (STDMETHODCALLTYPE *put_AccountExpirationDate)(
        IADsUser *This,
        DATE retval);

    HRESULT (STDMETHODCALLTYPE *get_GraceLoginsAllowed)(
        IADsUser *This,
        LONG *retval);

    HRESULT (STDMETHODCALLTYPE *put_GraceLoginsAllowed)(
        IADsUser *This,
        LONG retval);

    HRESULT (STDMETHODCALLTYPE *get_GraceLoginsRemaining)(
        IADsUser *This,
        LONG *retval);

    HRESULT (STDMETHODCALLTYPE *put_GraceLoginsRemaining)(
        IADsUser *This,
        LONG retval);

    HRESULT (STDMETHODCALLTYPE *get_IsAccountLocked)(
        IADsUser *This,
        VARIANT_BOOL *retval);

    HRESULT (STDMETHODCALLTYPE *put_IsAccountLocked)(
        IADsUser *This,
        VARIANT_BOOL retval);

    HRESULT (STDMETHODCALLTYPE *get_LoginHours)(
        IADsUser *This,
        VARIANT *retval);

    HRESULT (STDMETHODCALLTYPE *put_LoginHours)(
        IADsUser *This,
        VARIANT retval);

    HRESULT (STDMETHODCALLTYPE *get_LoginWorkstations)(
        IADsUser *This,
        VARIANT *retval);

    HRESULT (STDMETHODCALLTYPE *put_LoginWorkstations)(
        IADsUser *This,
        VARIANT retval);

    HRESULT (STDMETHODCALLTYPE *get_MaxLogins)(
        IADsUser *This,
        LONG *retval);

    HRESULT (STDMETHODCALLTYPE *put_MaxLogins)(
        IADsUser *This,
        LONG retval);

    HRESULT (STDMETHODCALLTYPE *get_MaxStorage)(
        IADsUser *This,
        LONG *retval);

    HRESULT (STDMETHODCALLTYPE *put_MaxStorage)(
        IADsUser *This,
        LONG retval);

    HRESULT (STDMETHODCALLTYPE *get_PasswordExpirationDate)(
        IADsUser *This,
        DATE *retval);

    HRESULT (STDMETHODCALLTYPE *put_PasswordExpirationDate)(
        IADsUser *This,
        DATE retval);

    HRESULT (STDMETHODCALLTYPE *get_PasswordMinimumLength)(
        IADsUser *This,
        LONG *retval);

    HRESULT (STDMETHODCALLTYPE *put_PasswordMinimumLength)(
        IADsUser *This,
        LONG retval);

    HRESULT (STDMETHODCALLTYPE *get_PasswordRequired)(
        IADsUser *This,
        VARIANT_BOOL *retval);

    HRESULT (STDMETHODCALLTYPE *put_PasswordRequired)(
        IADsUser *This,
        VARIANT_BOOL retval);

    HRESULT (STDMETHODCALLTYPE *get_RequireUniquePassword)(
        IADsUser *This,
        VARIANT_BOOL *retval);

    HRESULT (STDMETHODCALLTYPE *put_RequireUniquePassword)(
        IADsUser *This,
        VARIANT_BOOL retval);

    HRESULT (STDMETHODCALLTYPE *get_EmailAddress)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_EmailAddress)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *get_HomeDirectory)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_HomeDirectory)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *get_Languages)(
        IADsUser *This,
        VARIANT *retval);

    HRESULT (STDMETHODCALLTYPE *put_Languages)(
        IADsUser *This,
        VARIANT retval);

    HRESULT (STDMETHODCALLTYPE *get_Profile)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_Profile)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *get_LoginScript)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_LoginScript)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *get_Picture)(
        IADsUser *This,
        VARIANT *retval);

    HRESULT (STDMETHODCALLTYPE *put_Picture)(
        IADsUser *This,
        VARIANT retval);

    HRESULT (STDMETHODCALLTYPE *get_HomePage)(
        IADsUser *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_HomePage)(
        IADsUser *This,
        BSTR retval);

    HRESULT (STDMETHODCALLTYPE *Groups)(
        IADsUser *This,
        IADsMembers **ppGroups);

    HRESULT (STDMETHODCALLTYPE *SetPassword)(
        IADsUser *This,
        BSTR NewPassword);

    HRESULT (STDMETHODCALLTYPE *ChangePassword)(
        IADsUser *This,
        BSTR bstrOldPassword,
        BSTR bstrNewPassword);

    END_INTERFACE
} IADsUserVtbl;

interface IADsUser {
    CONST_VTBL IADsUserVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IADsUser_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IADsUser_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IADsUser_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IADsUser_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IADsUser_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IADsUser_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IADsUser_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IADs methods ***/
#define IADsUser_get_Name(This,retval) (This)->lpVtbl->get_Name(This,retval)
#define IADsUser_get_Class(This,retval) (This)->lpVtbl->get_Class(This,retval)
#define IADsUser_get_GUID(This,retval) (This)->lpVtbl->get_GUID(This,retval)
#define IADsUser_get_ADsPath(This,retval) (This)->lpVtbl->get_ADsPath(This,retval)
#define IADsUser_get_Parent(This,retval) (This)->lpVtbl->get_Parent(This,retval)
#define IADsUser_get_Schema(This,retval) (This)->lpVtbl->get_Schema(This,retval)
#define IADsUser_GetInfo(This) (This)->lpVtbl->GetInfo(This)
#define IADsUser_SetInfo(This) (This)->lpVtbl->SetInfo(This)
#define IADsUser_Get(This,bstrName,pvProp) (This)->lpVtbl->Get(This,bstrName,pvProp)
#define IADsUser_Put(This,bstrName,vProp) (This)->lpVtbl->Put(This,bstrName,vProp)
#define IADsUser_GetEx(This,bstrName,pvProp) (This)->lpVtbl->GetEx(This,bstrName,pvProp)
#define IADsUser_PutEx(This,lnControlCode,bstrName,vProp) (This)->lpVtbl->PutEx(This,lnControlCode,bstrName,vProp)
#define IADsUser_GetInfoEx(This,vProperties,lnReserved) (This)->lpVtbl->GetInfoEx(This,vProperties,lnReserved)
/*** IADsUser methods ***/
#define IADsUser_get_BadLoginAddress(This,retval) (This)->lpVtbl->get_BadLoginAddress(This,retval)
#define IADsUser_get_BadLoginCount(This,retval) (This)->lpVtbl->get_BadLoginCount(This,retval)
#define IADsUser_get_LastLogin(This,retval) (This)->lpVtbl->get_LastLogin(This,retval)
#define IADsUser_get_LastLogoff(This,retval) (This)->lpVtbl->get_LastLogoff(This,retval)
#define IADsUser_get_LastFailedLogin(This,retval) (This)->lpVtbl->get_LastFailedLogin(This,retval)
#define IADsUser_get_PasswordLastChanged(This,retval) (This)->lpVtbl->get_PasswordLastChanged(This,retval)
#define IADsUser_get_Description(This,retval) (This)->lpVtbl->get_Description(This,retval)
#define IADsUser_put_Description(This,retval) (This)->lpVtbl->put_Description(This,retval)
#define IADsUser_get_Division(This,retval) (This)->lpVtbl->get_Division(This,retval)
#define IADsUser_put_Division(This,retval) (This)->lpVtbl->put_Division(This,retval)
#define IADsUser_get_Department(This,retval) (This)->lpVtbl->get_Department(This,retval)
#define IADsUser_put_Department(This,retval) (This)->lpVtbl->put_Department(This,retval)
#define IADsUser_get_EmployeeID(This,retval) (This)->lpVtbl->get_EmployeeID(This,retval)
#define IADsUser_put_EmployeeID(This,retval) (This)->lpVtbl->put_EmployeeID(This,retval)
#define IADsUser_get_FullName(This,retval) (This)->lpVtbl->get_FullName(This,retval)
#define IADsUser_put_FullName(This,retval) (This)->lpVtbl->put_FullName(This,retval)
#define IADsUser_get_FirstName(This,retval) (This)->lpVtbl->get_FirstName(This,retval)
#define IADsUser_put_FirstName(This,retval) (This)->lpVtbl->put_FirstName(This,retval)
#define IADsUser_get_LastName(This,retval) (This)->lpVtbl->get_LastName(This,retval)
#define IADsUser_put_LastName(This,retval) (This)->lpVtbl->put_LastName(This,retval)
#define IADsUser_get_OtherName(This,retval) (This)->lpVtbl->get_OtherName(This,retval)
#define IADsUser_put_OtherName(This,retval) (This)->lpVtbl->put_OtherName(This,retval)
#define IADsUser_get_NamePrefix(This,retval) (This)->lpVtbl->get_NamePrefix(This,retval)
#define IADsUser_put_NamePrefix(This,retval) (This)->lpVtbl->put_NamePrefix(This,retval)
#define IADsUser_get_NameSuffix(This,retval) (This)->lpVtbl->get_NameSuffix(This,retval)
#define IADsUser_put_NameSuffix(This,retval) (This)->lpVtbl->put_NameSuffix(This,retval)
#define IADsUser_get_Title(This,retval) (This)->lpVtbl->get_Title(This,retval)
#define IADsUser_put_Title(This,retval) (This)->lpVtbl->put_Title(This,retval)
#define IADsUser_get_Manager(This,retval) (This)->lpVtbl->get_Manager(This,retval)
#define IADsUser_put_Manager(This,retval) (This)->lpVtbl->put_Manager(This,retval)
#define IADsUser_get_TelephoneHome(This,retval) (This)->lpVtbl->get_TelephoneHome(This,retval)
#define IADsUser_put_TelephoneHome(This,retval) (This)->lpVtbl->put_TelephoneHome(This,retval)
#define IADsUser_get_TelephoneMobile(This,retval) (This)->lpVtbl->get_TelephoneMobile(This,retval)
#define IADsUser_put_TelephoneMobile(This,retval) (This)->lpVtbl->put_TelephoneMobile(This,retval)
#define IADsUser_get_TelephoneNumber(This,retval) (This)->lpVtbl->get_TelephoneNumber(This,retval)
#define IADsUser_put_TelephoneNumber(This,retval) (This)->lpVtbl->put_TelephoneNumber(This,retval)
#define IADsUser_get_TelephonePager(This,retval) (This)->lpVtbl->get_TelephonePager(This,retval)
#define IADsUser_put_TelephonePager(This,retval) (This)->lpVtbl->put_TelephonePager(This,retval)
#define IADsUser_get_FaxNumber(This,retval) (This)->lpVtbl->get_FaxNumber(This,retval)
#define IADsUser_put_FaxNumber(This,retval) (This)->lpVtbl->put_FaxNumber(This,retval)
#define IADsUser_get_OfficeLocations(This,retval) (This)->lpVtbl->get_OfficeLocations(This,retval)
#define IADsUser_put_OfficeLocations(This,retval) (This)->lpVtbl->put_OfficeLocations(This,retval)
#define IADsUser_get_PostalAddresses(This,retval) (This)->lpVtbl->get_PostalAddresses(This,retval)
#define IADsUser_put_PostalAddresses(This,retval) (This)->lpVtbl->put_PostalAddresses(This,retval)
#define IADsUser_get_PostalCodes(This,retval) (This)->lpVtbl->get_PostalCodes(This,retval)
#define IADsUser_put_PostalCodes(This,retval) (This)->lpVtbl->put_PostalCodes(This,retval)
#define IADsUser_get_SeeAlso(This,retval) (This)->lpVtbl->get_SeeAlso(This,retval)
#define IADsUser_put_SeeAlso(This,retval) (This)->lpVtbl->put_SeeAlso(This,retval)
#define IADsUser_get_AccountDisabled(This,retval) (This)->lpVtbl->get_AccountDisabled(This,retval)
#define IADsUser_put_AccountDisabled(This,retval) (This)->lpVtbl->put_AccountDisabled(This,retval)
#define IADsUser_get_AccountExpirationDate(This,retval) (This)->lpVtbl->get_AccountExpirationDate(This,retval)
#define IADsUser_put_AccountExpirationDate(This,retval) (This)->lpVtbl->put_AccountExpirationDate(This,retval)
#define IADsUser_get_GraceLoginsAllowed(This,retval) (This)->lpVtbl->get_GraceLoginsAllowed(This,retval)
#define IADsUser_put_GraceLoginsAllowed(This,retval) (This)->lpVtbl->put_GraceLoginsAllowed(This,retval)
#define IADsUser_get_GraceLoginsRemaining(This,retval) (This)->lpVtbl->get_GraceLoginsRemaining(This,retval)
#define IADsUser_put_GraceLoginsRemaining(This,retval) (This)->lpVtbl->put_GraceLoginsRemaining(This,retval)
#define IADsUser_get_IsAccountLocked(This,retval) (This)->lpVtbl->get_IsAccountLocked(This,retval)
#define IADsUser_put_IsAccountLocked(This,retval) (This)->lpVtbl->put_IsAccountLocked(This,retval)
#define IADsUser_get_LoginHours(This,retval) (This)->lpVtbl->get_LoginHours(This,retval)
#define IADsUser_put_LoginHours(This,retval) (This)->lpVtbl->put_LoginHours(This,retval)
#define IADsUser_get_LoginWorkstations(This,retval) (This)->lpVtbl->get_LoginWorkstations(This,retval)
#define IADsUser_put_LoginWorkstations(This,retval) (This)->lpVtbl->put_LoginWorkstations(This,retval)
#define IADsUser_get_MaxLogins(This,retval) (This)->lpVtbl->get_MaxLogins(This,retval)
#define IADsUser_put_MaxLogins(This,retval) (This)->lpVtbl->put_MaxLogins(This,retval)
#define IADsUser_get_MaxStorage(This,retval) (This)->lpVtbl->get_MaxStorage(This,retval)
#define IADsUser_put_MaxStorage(This,retval) (This)->lpVtbl->put_MaxStorage(This,retval)
#define IADsUser_get_PasswordExpirationDate(This,retval) (This)->lpVtbl->get_PasswordExpirationDate(This,retval)
#define IADsUser_put_PasswordExpirationDate(This,retval) (This)->lpVtbl->put_PasswordExpirationDate(This,retval)
#define IADsUser_get_PasswordMinimumLength(This,retval) (This)->lpVtbl->get_PasswordMinimumLength(This,retval)
#define IADsUser_put_PasswordMinimumLength(This,retval) (This)->lpVtbl->put_PasswordMinimumLength(This,retval)
#define IADsUser_get_PasswordRequired(This,retval) (This)->lpVtbl->get_PasswordRequired(This,retval)
#define IADsUser_put_PasswordRequired(This,retval) (This)->lpVtbl->put_PasswordRequired(This,retval)
#define IADsUser_get_RequireUniquePassword(This,retval) (This)->lpVtbl->get_RequireUniquePassword(This,retval)
#define IADsUser_put_RequireUniquePassword(This,retval) (This)->lpVtbl->put_RequireUniquePassword(This,retval)
#define IADsUser_get_EmailAddress(This,retval) (This)->lpVtbl->get_EmailAddress(This,retval)
#define IADsUser_put_EmailAddress(This,retval) (This)->lpVtbl->put_EmailAddress(This,retval)
#define IADsUser_get_HomeDirectory(This,retval) (This)->lpVtbl->get_HomeDirectory(This,retval)
#define IADsUser_put_HomeDirectory(This,retval) (This)->lpVtbl->put_HomeDirectory(This,retval)
#define IADsUser_get_Languages(This,retval) (This)->lpVtbl->get_Languages(This,retval)
#define IADsUser_put_Languages(This,retval) (This)->lpVtbl->put_Languages(This,retval)
#define IADsUser_get_Profile(This,retval) (This)->lpVtbl->get_Profile(This,retval)
#define IADsUser_put_Profile(This,retval) (This)->lpVtbl->put_Profile(This,retval)
#define IADsUser_get_LoginScript(This,retval) (This)->lpVtbl->get_LoginScript(This,retval)
#define IADsUser_put_LoginScript(This,retval) (This)->lpVtbl->put_LoginScript(This,retval)
#define IADsUser_get_Picture(This,retval) (This)->lpVtbl->get_Picture(This,retval)
#define IADsUser_put_Picture(This,retval) (This)->lpVtbl->put_Picture(This,retval)
#define IADsUser_get_HomePage(This,retval) (This)->lpVtbl->get_HomePage(This,retval)
#define IADsUser_put_HomePage(This,retval) (This)->lpVtbl->put_HomePage(This,retval)
#define IADsUser_Groups(This,ppGroups) (This)->lpVtbl->Groups(This,ppGroups)
#define IADsUser_SetPassword(This,NewPassword) (This)->lpVtbl->SetPassword(This,NewPassword)
#define IADsUser_ChangePassword(This,bstrOldPassword,bstrNewPassword) (This)->lpVtbl->ChangePassword(This,bstrOldPassword,bstrNewPassword)
#else
/*** IUnknown methods ***/
static inline HRESULT IADsUser_QueryInterface(IADsUser* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IADsUser_AddRef(IADsUser* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IADsUser_Release(IADsUser* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IADsUser_GetTypeInfoCount(IADsUser* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IADsUser_GetTypeInfo(IADsUser* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IADsUser_GetIDsOfNames(IADsUser* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IADsUser_Invoke(IADsUser* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IADs methods ***/
static inline HRESULT IADsUser_get_Name(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_Name(This,retval);
}
static inline HRESULT IADsUser_get_Class(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_Class(This,retval);
}
static inline HRESULT IADsUser_get_GUID(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_GUID(This,retval);
}
static inline HRESULT IADsUser_get_ADsPath(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_ADsPath(This,retval);
}
static inline HRESULT IADsUser_get_Parent(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_Parent(This,retval);
}
static inline HRESULT IADsUser_get_Schema(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_Schema(This,retval);
}
static inline HRESULT IADsUser_GetInfo(IADsUser* This) {
    return This->lpVtbl->GetInfo(This);
}
static inline HRESULT IADsUser_SetInfo(IADsUser* This) {
    return This->lpVtbl->SetInfo(This);
}
static inline HRESULT IADsUser_Get(IADsUser* This,BSTR bstrName,VARIANT *pvProp) {
    return This->lpVtbl->Get(This,bstrName,pvProp);
}
static inline HRESULT IADsUser_Put(IADsUser* This,BSTR bstrName,VARIANT vProp) {
    return This->lpVtbl->Put(This,bstrName,vProp);
}
static inline HRESULT IADsUser_GetEx(IADsUser* This,BSTR bstrName,VARIANT *pvProp) {
    return This->lpVtbl->GetEx(This,bstrName,pvProp);
}
static inline HRESULT IADsUser_PutEx(IADsUser* This,LONG lnControlCode,BSTR bstrName,VARIANT vProp) {
    return This->lpVtbl->PutEx(This,lnControlCode,bstrName,vProp);
}
static inline HRESULT IADsUser_GetInfoEx(IADsUser* This,VARIANT vProperties,LONG lnReserved) {
    return This->lpVtbl->GetInfoEx(This,vProperties,lnReserved);
}
/*** IADsUser methods ***/
static inline HRESULT IADsUser_get_BadLoginAddress(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_BadLoginAddress(This,retval);
}
static inline HRESULT IADsUser_get_BadLoginCount(IADsUser* This,LONG *retval) {
    return This->lpVtbl->get_BadLoginCount(This,retval);
}
static inline HRESULT IADsUser_get_LastLogin(IADsUser* This,DATE *retval) {
    return This->lpVtbl->get_LastLogin(This,retval);
}
static inline HRESULT IADsUser_get_LastLogoff(IADsUser* This,DATE *retval) {
    return This->lpVtbl->get_LastLogoff(This,retval);
}
static inline HRESULT IADsUser_get_LastFailedLogin(IADsUser* This,DATE *retval) {
    return This->lpVtbl->get_LastFailedLogin(This,retval);
}
static inline HRESULT IADsUser_get_PasswordLastChanged(IADsUser* This,DATE *retval) {
    return This->lpVtbl->get_PasswordLastChanged(This,retval);
}
static inline HRESULT IADsUser_get_Description(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_Description(This,retval);
}
static inline HRESULT IADsUser_put_Description(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_Description(This,retval);
}
static inline HRESULT IADsUser_get_Division(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_Division(This,retval);
}
static inline HRESULT IADsUser_put_Division(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_Division(This,retval);
}
static inline HRESULT IADsUser_get_Department(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_Department(This,retval);
}
static inline HRESULT IADsUser_put_Department(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_Department(This,retval);
}
static inline HRESULT IADsUser_get_EmployeeID(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_EmployeeID(This,retval);
}
static inline HRESULT IADsUser_put_EmployeeID(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_EmployeeID(This,retval);
}
static inline HRESULT IADsUser_get_FullName(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_FullName(This,retval);
}
static inline HRESULT IADsUser_put_FullName(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_FullName(This,retval);
}
static inline HRESULT IADsUser_get_FirstName(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_FirstName(This,retval);
}
static inline HRESULT IADsUser_put_FirstName(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_FirstName(This,retval);
}
static inline HRESULT IADsUser_get_LastName(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_LastName(This,retval);
}
static inline HRESULT IADsUser_put_LastName(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_LastName(This,retval);
}
static inline HRESULT IADsUser_get_OtherName(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_OtherName(This,retval);
}
static inline HRESULT IADsUser_put_OtherName(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_OtherName(This,retval);
}
static inline HRESULT IADsUser_get_NamePrefix(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_NamePrefix(This,retval);
}
static inline HRESULT IADsUser_put_NamePrefix(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_NamePrefix(This,retval);
}
static inline HRESULT IADsUser_get_NameSuffix(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_NameSuffix(This,retval);
}
static inline HRESULT IADsUser_put_NameSuffix(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_NameSuffix(This,retval);
}
static inline HRESULT IADsUser_get_Title(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_Title(This,retval);
}
static inline HRESULT IADsUser_put_Title(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_Title(This,retval);
}
static inline HRESULT IADsUser_get_Manager(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_Manager(This,retval);
}
static inline HRESULT IADsUser_put_Manager(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_Manager(This,retval);
}
static inline HRESULT IADsUser_get_TelephoneHome(IADsUser* This,VARIANT *retval) {
    return This->lpVtbl->get_TelephoneHome(This,retval);
}
static inline HRESULT IADsUser_put_TelephoneHome(IADsUser* This,VARIANT retval) {
    return This->lpVtbl->put_TelephoneHome(This,retval);
}
static inline HRESULT IADsUser_get_TelephoneMobile(IADsUser* This,VARIANT *retval) {
    return This->lpVtbl->get_TelephoneMobile(This,retval);
}
static inline HRESULT IADsUser_put_TelephoneMobile(IADsUser* This,VARIANT retval) {
    return This->lpVtbl->put_TelephoneMobile(This,retval);
}
static inline HRESULT IADsUser_get_TelephoneNumber(IADsUser* This,VARIANT *retval) {
    return This->lpVtbl->get_TelephoneNumber(This,retval);
}
static inline HRESULT IADsUser_put_TelephoneNumber(IADsUser* This,VARIANT retval) {
    return This->lpVtbl->put_TelephoneNumber(This,retval);
}
static inline HRESULT IADsUser_get_TelephonePager(IADsUser* This,VARIANT *retval) {
    return This->lpVtbl->get_TelephonePager(This,retval);
}
static inline HRESULT IADsUser_put_TelephonePager(IADsUser* This,VARIANT retval) {
    return This->lpVtbl->put_TelephonePager(This,retval);
}
static inline HRESULT IADsUser_get_FaxNumber(IADsUser* This,VARIANT *retval) {
    return This->lpVtbl->get_FaxNumber(This,retval);
}
static inline HRESULT IADsUser_put_FaxNumber(IADsUser* This,VARIANT retval) {
    return This->lpVtbl->put_FaxNumber(This,retval);
}
static inline HRESULT IADsUser_get_OfficeLocations(IADsUser* This,VARIANT *retval) {
    return This->lpVtbl->get_OfficeLocations(This,retval);
}
static inline HRESULT IADsUser_put_OfficeLocations(IADsUser* This,VARIANT retval) {
    return This->lpVtbl->put_OfficeLocations(This,retval);
}
static inline HRESULT IADsUser_get_PostalAddresses(IADsUser* This,VARIANT *retval) {
    return This->lpVtbl->get_PostalAddresses(This,retval);
}
static inline HRESULT IADsUser_put_PostalAddresses(IADsUser* This,VARIANT retval) {
    return This->lpVtbl->put_PostalAddresses(This,retval);
}
static inline HRESULT IADsUser_get_PostalCodes(IADsUser* This,VARIANT *retval) {
    return This->lpVtbl->get_PostalCodes(This,retval);
}
static inline HRESULT IADsUser_put_PostalCodes(IADsUser* This,VARIANT retval) {
    return This->lpVtbl->put_PostalCodes(This,retval);
}
static inline HRESULT IADsUser_get_SeeAlso(IADsUser* This,VARIANT *retval) {
    return This->lpVtbl->get_SeeAlso(This,retval);
}
static inline HRESULT IADsUser_put_SeeAlso(IADsUser* This,VARIANT retval) {
    return This->lpVtbl->put_SeeAlso(This,retval);
}
static inline HRESULT IADsUser_get_AccountDisabled(IADsUser* This,VARIANT_BOOL *retval) {
    return This->lpVtbl->get_AccountDisabled(This,retval);
}
static inline HRESULT IADsUser_put_AccountDisabled(IADsUser* This,VARIANT_BOOL retval) {
    return This->lpVtbl->put_AccountDisabled(This,retval);
}
static inline HRESULT IADsUser_get_AccountExpirationDate(IADsUser* This,DATE *retval) {
    return This->lpVtbl->get_AccountExpirationDate(This,retval);
}
static inline HRESULT IADsUser_put_AccountExpirationDate(IADsUser* This,DATE retval) {
    return This->lpVtbl->put_AccountExpirationDate(This,retval);
}
static inline HRESULT IADsUser_get_GraceLoginsAllowed(IADsUser* This,LONG *retval) {
    return This->lpVtbl->get_GraceLoginsAllowed(This,retval);
}
static inline HRESULT IADsUser_put_GraceLoginsAllowed(IADsUser* This,LONG retval) {
    return This->lpVtbl->put_GraceLoginsAllowed(This,retval);
}
static inline HRESULT IADsUser_get_GraceLoginsRemaining(IADsUser* This,LONG *retval) {
    return This->lpVtbl->get_GraceLoginsRemaining(This,retval);
}
static inline HRESULT IADsUser_put_GraceLoginsRemaining(IADsUser* This,LONG retval) {
    return This->lpVtbl->put_GraceLoginsRemaining(This,retval);
}
static inline HRESULT IADsUser_get_IsAccountLocked(IADsUser* This,VARIANT_BOOL *retval) {
    return This->lpVtbl->get_IsAccountLocked(This,retval);
}
static inline HRESULT IADsUser_put_IsAccountLocked(IADsUser* This,VARIANT_BOOL retval) {
    return This->lpVtbl->put_IsAccountLocked(This,retval);
}
static inline HRESULT IADsUser_get_LoginHours(IADsUser* This,VARIANT *retval) {
    return This->lpVtbl->get_LoginHours(This,retval);
}
static inline HRESULT IADsUser_put_LoginHours(IADsUser* This,VARIANT retval) {
    return This->lpVtbl->put_LoginHours(This,retval);
}
static inline HRESULT IADsUser_get_LoginWorkstations(IADsUser* This,VARIANT *retval) {
    return This->lpVtbl->get_LoginWorkstations(This,retval);
}
static inline HRESULT IADsUser_put_LoginWorkstations(IADsUser* This,VARIANT retval) {
    return This->lpVtbl->put_LoginWorkstations(This,retval);
}
static inline HRESULT IADsUser_get_MaxLogins(IADsUser* This,LONG *retval) {
    return This->lpVtbl->get_MaxLogins(This,retval);
}
static inline HRESULT IADsUser_put_MaxLogins(IADsUser* This,LONG retval) {
    return This->lpVtbl->put_MaxLogins(This,retval);
}
static inline HRESULT IADsUser_get_MaxStorage(IADsUser* This,LONG *retval) {
    return This->lpVtbl->get_MaxStorage(This,retval);
}
static inline HRESULT IADsUser_put_MaxStorage(IADsUser* This,LONG retval) {
    return This->lpVtbl->put_MaxStorage(This,retval);
}
static inline HRESULT IADsUser_get_PasswordExpirationDate(IADsUser* This,DATE *retval) {
    return This->lpVtbl->get_PasswordExpirationDate(This,retval);
}
static inline HRESULT IADsUser_put_PasswordExpirationDate(IADsUser* This,DATE retval) {
    return This->lpVtbl->put_PasswordExpirationDate(This,retval);
}
static inline HRESULT IADsUser_get_PasswordMinimumLength(IADsUser* This,LONG *retval) {
    return This->lpVtbl->get_PasswordMinimumLength(This,retval);
}
static inline HRESULT IADsUser_put_PasswordMinimumLength(IADsUser* This,LONG retval) {
    return This->lpVtbl->put_PasswordMinimumLength(This,retval);
}
static inline HRESULT IADsUser_get_PasswordRequired(IADsUser* This,VARIANT_BOOL *retval) {
    return This->lpVtbl->get_PasswordRequired(This,retval);
}
static inline HRESULT IADsUser_put_PasswordRequired(IADsUser* This,VARIANT_BOOL retval) {
    return This->lpVtbl->put_PasswordRequired(This,retval);
}
static inline HRESULT IADsUser_get_RequireUniquePassword(IADsUser* This,VARIANT_BOOL *retval) {
    return This->lpVtbl->get_RequireUniquePassword(This,retval);
}
static inline HRESULT IADsUser_put_RequireUniquePassword(IADsUser* This,VARIANT_BOOL retval) {
    return This->lpVtbl->put_RequireUniquePassword(This,retval);
}
static inline HRESULT IADsUser_get_EmailAddress(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_EmailAddress(This,retval);
}
static inline HRESULT IADsUser_put_EmailAddress(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_EmailAddress(This,retval);
}
static inline HRESULT IADsUser_get_HomeDirectory(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_HomeDirectory(This,retval);
}
static inline HRESULT IADsUser_put_HomeDirectory(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_HomeDirectory(This,retval);
}
static inline HRESULT IADsUser_get_Languages(IADsUser* This,VARIANT *retval) {
    return This->lpVtbl->get_Languages(This,retval);
}
static inline HRESULT IADsUser_put_Languages(IADsUser* This,VARIANT retval) {
    return This->lpVtbl->put_Languages(This,retval);
}
static inline HRESULT IADsUser_get_Profile(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_Profile(This,retval);
}
static inline HRESULT IADsUser_put_Profile(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_Profile(This,retval);
}
static inline HRESULT IADsUser_get_LoginScript(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_LoginScript(This,retval);
}
static inline HRESULT IADsUser_put_LoginScript(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_LoginScript(This,retval);
}
static inline HRESULT IADsUser_get_Picture(IADsUser* This,VARIANT *retval) {
    return This->lpVtbl->get_Picture(This,retval);
}
static inline HRESULT IADsUser_put_Picture(IADsUser* This,VARIANT retval) {
    return This->lpVtbl->put_Picture(This,retval);
}
static inline HRESULT IADsUser_get_HomePage(IADsUser* This,BSTR *retval) {
    return This->lpVtbl->get_HomePage(This,retval);
}
static inline HRESULT IADsUser_put_HomePage(IADsUser* This,BSTR retval) {
    return This->lpVtbl->put_HomePage(This,retval);
}
static inline HRESULT IADsUser_Groups(IADsUser* This,IADsMembers **ppGroups) {
    return This->lpVtbl->Groups(This,ppGroups);
}
static inline HRESULT IADsUser_SetPassword(IADsUser* This,BSTR NewPassword) {
    return This->lpVtbl->SetPassword(This,NewPassword);
}
static inline HRESULT IADsUser_ChangePassword(IADsUser* This,BSTR bstrOldPassword,BSTR bstrNewPassword) {
    return This->lpVtbl->ChangePassword(This,bstrOldPassword,bstrNewPassword);
}
#endif
#endif

#endif


#endif  /* __IADsUser_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDirectorySearch interface
 */
#ifndef __IDirectorySearch_INTERFACE_DEFINED__
#define __IDirectorySearch_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDirectorySearch, 0x109ba8ec, 0x92f0, 0x11d0, 0xa7,0x90, 0x00,0xc0,0x4f,0xd8,0xd5,0xa8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("109ba8ec-92f0-11d0-a790-00c04fd8d5a8")
IDirectorySearch : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetSearchPreference(
        PADS_SEARCHPREF_INFO pSearchPrefs,
        DWORD dwNumPrefs) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExecuteSearch(
        LPWSTR pszSearchFilter,
        LPWSTR *pAttributeNames,
        DWORD dwNumberAttributes,
        PADS_SEARCH_HANDLE phSearchResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE AbandonSearch(
        ADS_SEARCH_HANDLE phSearchResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFirstRow(
        ADS_SEARCH_HANDLE hSearchResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNextRow(
        ADS_SEARCH_HANDLE hSearchResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPreviousRow(
        ADS_SEARCH_HANDLE hSearchResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNextColumnName(
        ADS_SEARCH_HANDLE hSearchHandle,
        LPWSTR *ppszColumnName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColumn(
        ADS_SEARCH_HANDLE hSearchResult,
        LPWSTR szColumnName,
        PADS_SEARCH_COLUMN pSearchColumn) = 0;

    virtual HRESULT STDMETHODCALLTYPE FreeColumn(
        PADS_SEARCH_COLUMN pSearchColumn) = 0;

    virtual HRESULT STDMETHODCALLTYPE CloseSearchHandle(
        ADS_SEARCH_HANDLE hSearchResult) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDirectorySearch, 0x109ba8ec, 0x92f0, 0x11d0, 0xa7,0x90, 0x00,0xc0,0x4f,0xd8,0xd5,0xa8)
#endif
#else
typedef struct IDirectorySearchVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDirectorySearch *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDirectorySearch *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDirectorySearch *This);

    /*** IDirectorySearch methods ***/
    HRESULT (STDMETHODCALLTYPE *SetSearchPreference)(
        IDirectorySearch *This,
        PADS_SEARCHPREF_INFO pSearchPrefs,
        DWORD dwNumPrefs);

    HRESULT (STDMETHODCALLTYPE *ExecuteSearch)(
        IDirectorySearch *This,
        LPWSTR pszSearchFilter,
        LPWSTR *pAttributeNames,
        DWORD dwNumberAttributes,
        PADS_SEARCH_HANDLE phSearchResult);

    HRESULT (STDMETHODCALLTYPE *AbandonSearch)(
        IDirectorySearch *This,
        ADS_SEARCH_HANDLE phSearchResult);

    HRESULT (STDMETHODCALLTYPE *GetFirstRow)(
        IDirectorySearch *This,
        ADS_SEARCH_HANDLE hSearchResult);

    HRESULT (STDMETHODCALLTYPE *GetNextRow)(
        IDirectorySearch *This,
        ADS_SEARCH_HANDLE hSearchResult);

    HRESULT (STDMETHODCALLTYPE *GetPreviousRow)(
        IDirectorySearch *This,
        ADS_SEARCH_HANDLE hSearchResult);

    HRESULT (STDMETHODCALLTYPE *GetNextColumnName)(
        IDirectorySearch *This,
        ADS_SEARCH_HANDLE hSearchHandle,
        LPWSTR *ppszColumnName);

    HRESULT (STDMETHODCALLTYPE *GetColumn)(
        IDirectorySearch *This,
        ADS_SEARCH_HANDLE hSearchResult,
        LPWSTR szColumnName,
        PADS_SEARCH_COLUMN pSearchColumn);

    HRESULT (STDMETHODCALLTYPE *FreeColumn)(
        IDirectorySearch *This,
        PADS_SEARCH_COLUMN pSearchColumn);

    HRESULT (STDMETHODCALLTYPE *CloseSearchHandle)(
        IDirectorySearch *This,
        ADS_SEARCH_HANDLE hSearchResult);

    END_INTERFACE
} IDirectorySearchVtbl;

interface IDirectorySearch {
    CONST_VTBL IDirectorySearchVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDirectorySearch_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDirectorySearch_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDirectorySearch_Release(This) (This)->lpVtbl->Release(This)
/*** IDirectorySearch methods ***/
#define IDirectorySearch_SetSearchPreference(This,pSearchPrefs,dwNumPrefs) (This)->lpVtbl->SetSearchPreference(This,pSearchPrefs,dwNumPrefs)
#define IDirectorySearch_ExecuteSearch(This,pszSearchFilter,pAttributeNames,dwNumberAttributes,phSearchResult) (This)->lpVtbl->ExecuteSearch(This,pszSearchFilter,pAttributeNames,dwNumberAttributes,phSearchResult)
#define IDirectorySearch_AbandonSearch(This,phSearchResult) (This)->lpVtbl->AbandonSearch(This,phSearchResult)
#define IDirectorySearch_GetFirstRow(This,hSearchResult) (This)->lpVtbl->GetFirstRow(This,hSearchResult)
#define IDirectorySearch_GetNextRow(This,hSearchResult) (This)->lpVtbl->GetNextRow(This,hSearchResult)
#define IDirectorySearch_GetPreviousRow(This,hSearchResult) (This)->lpVtbl->GetPreviousRow(This,hSearchResult)
#define IDirectorySearch_GetNextColumnName(This,hSearchHandle,ppszColumnName) (This)->lpVtbl->GetNextColumnName(This,hSearchHandle,ppszColumnName)
#define IDirectorySearch_GetColumn(This,hSearchResult,szColumnName,pSearchColumn) (This)->lpVtbl->GetColumn(This,hSearchResult,szColumnName,pSearchColumn)
#define IDirectorySearch_FreeColumn(This,pSearchColumn) (This)->lpVtbl->FreeColumn(This,pSearchColumn)
#define IDirectorySearch_CloseSearchHandle(This,hSearchResult) (This)->lpVtbl->CloseSearchHandle(This,hSearchResult)
#else
/*** IUnknown methods ***/
static inline HRESULT IDirectorySearch_QueryInterface(IDirectorySearch* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDirectorySearch_AddRef(IDirectorySearch* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDirectorySearch_Release(IDirectorySearch* This) {
    return This->lpVtbl->Release(This);
}
/*** IDirectorySearch methods ***/
static inline HRESULT IDirectorySearch_SetSearchPreference(IDirectorySearch* This,PADS_SEARCHPREF_INFO pSearchPrefs,DWORD dwNumPrefs) {
    return This->lpVtbl->SetSearchPreference(This,pSearchPrefs,dwNumPrefs);
}
static inline HRESULT IDirectorySearch_ExecuteSearch(IDirectorySearch* This,LPWSTR pszSearchFilter,LPWSTR *pAttributeNames,DWORD dwNumberAttributes,PADS_SEARCH_HANDLE phSearchResult) {
    return This->lpVtbl->ExecuteSearch(This,pszSearchFilter,pAttributeNames,dwNumberAttributes,phSearchResult);
}
static inline HRESULT IDirectorySearch_AbandonSearch(IDirectorySearch* This,ADS_SEARCH_HANDLE phSearchResult) {
    return This->lpVtbl->AbandonSearch(This,phSearchResult);
}
static inline HRESULT IDirectorySearch_GetFirstRow(IDirectorySearch* This,ADS_SEARCH_HANDLE hSearchResult) {
    return This->lpVtbl->GetFirstRow(This,hSearchResult);
}
static inline HRESULT IDirectorySearch_GetNextRow(IDirectorySearch* This,ADS_SEARCH_HANDLE hSearchResult) {
    return This->lpVtbl->GetNextRow(This,hSearchResult);
}
static inline HRESULT IDirectorySearch_GetPreviousRow(IDirectorySearch* This,ADS_SEARCH_HANDLE hSearchResult) {
    return This->lpVtbl->GetPreviousRow(This,hSearchResult);
}
static inline HRESULT IDirectorySearch_GetNextColumnName(IDirectorySearch* This,ADS_SEARCH_HANDLE hSearchHandle,LPWSTR *ppszColumnName) {
    return This->lpVtbl->GetNextColumnName(This,hSearchHandle,ppszColumnName);
}
static inline HRESULT IDirectorySearch_GetColumn(IDirectorySearch* This,ADS_SEARCH_HANDLE hSearchResult,LPWSTR szColumnName,PADS_SEARCH_COLUMN pSearchColumn) {
    return This->lpVtbl->GetColumn(This,hSearchResult,szColumnName,pSearchColumn);
}
static inline HRESULT IDirectorySearch_FreeColumn(IDirectorySearch* This,PADS_SEARCH_COLUMN pSearchColumn) {
    return This->lpVtbl->FreeColumn(This,pSearchColumn);
}
static inline HRESULT IDirectorySearch_CloseSearchHandle(IDirectorySearch* This,ADS_SEARCH_HANDLE hSearchResult) {
    return This->lpVtbl->CloseSearchHandle(This,hSearchResult);
}
#endif
#endif

#endif


#endif  /* __IDirectorySearch_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDirectoryObject interface
 */
#ifndef __IDirectoryObject_INTERFACE_DEFINED__
#define __IDirectoryObject_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDirectoryObject, 0xe798de2c, 0x22e4, 0x11d0, 0x84,0xfe, 0x00,0xc0,0x4f,0xd8,0xd5,0x03);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e798de2c-22e4-11d0-84fe-00c04fd8d503")
IDirectoryObject : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetObjectInformation(
        PADS_OBJECT_INFO *info) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetObjectAttributes(
        LPWSTR *names,
        DWORD count,
        PADS_ATTR_INFO *attrs,
        DWORD *count_returned) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetObjectAttributes(
        PADS_ATTR_INFO attrs,
        DWORD count,
        DWORD *count_set) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateDSObject(
        LPWSTR name,
        PADS_ATTR_INFO attrs,
        DWORD count,
        IDispatch **obj) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteDSObject(
        LPWSTR name) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDirectoryObject, 0xe798de2c, 0x22e4, 0x11d0, 0x84,0xfe, 0x00,0xc0,0x4f,0xd8,0xd5,0x03)
#endif
#else
typedef struct IDirectoryObjectVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDirectoryObject *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDirectoryObject *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDirectoryObject *This);

    /*** IDirectoryObject methods ***/
    HRESULT (STDMETHODCALLTYPE *GetObjectInformation)(
        IDirectoryObject *This,
        PADS_OBJECT_INFO *info);

    HRESULT (STDMETHODCALLTYPE *GetObjectAttributes)(
        IDirectoryObject *This,
        LPWSTR *names,
        DWORD count,
        PADS_ATTR_INFO *attrs,
        DWORD *count_returned);

    HRESULT (STDMETHODCALLTYPE *SetObjectAttributes)(
        IDirectoryObject *This,
        PADS_ATTR_INFO attrs,
        DWORD count,
        DWORD *count_set);

    HRESULT (STDMETHODCALLTYPE *CreateDSObject)(
        IDirectoryObject *This,
        LPWSTR name,
        PADS_ATTR_INFO attrs,
        DWORD count,
        IDispatch **obj);

    HRESULT (STDMETHODCALLTYPE *DeleteDSObject)(
        IDirectoryObject *This,
        LPWSTR name);

    END_INTERFACE
} IDirectoryObjectVtbl;

interface IDirectoryObject {
    CONST_VTBL IDirectoryObjectVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDirectoryObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDirectoryObject_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDirectoryObject_Release(This) (This)->lpVtbl->Release(This)
/*** IDirectoryObject methods ***/
#define IDirectoryObject_GetObjectInformation(This,info) (This)->lpVtbl->GetObjectInformation(This,info)
#define IDirectoryObject_GetObjectAttributes(This,names,count,attrs,count_returned) (This)->lpVtbl->GetObjectAttributes(This,names,count,attrs,count_returned)
#define IDirectoryObject_SetObjectAttributes(This,attrs,count,count_set) (This)->lpVtbl->SetObjectAttributes(This,attrs,count,count_set)
#define IDirectoryObject_CreateDSObject(This,name,attrs,count,obj) (This)->lpVtbl->CreateDSObject(This,name,attrs,count,obj)
#define IDirectoryObject_DeleteDSObject(This,name) (This)->lpVtbl->DeleteDSObject(This,name)
#else
/*** IUnknown methods ***/
static inline HRESULT IDirectoryObject_QueryInterface(IDirectoryObject* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDirectoryObject_AddRef(IDirectoryObject* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDirectoryObject_Release(IDirectoryObject* This) {
    return This->lpVtbl->Release(This);
}
/*** IDirectoryObject methods ***/
static inline HRESULT IDirectoryObject_GetObjectInformation(IDirectoryObject* This,PADS_OBJECT_INFO *info) {
    return This->lpVtbl->GetObjectInformation(This,info);
}
static inline HRESULT IDirectoryObject_GetObjectAttributes(IDirectoryObject* This,LPWSTR *names,DWORD count,PADS_ATTR_INFO *attrs,DWORD *count_returned) {
    return This->lpVtbl->GetObjectAttributes(This,names,count,attrs,count_returned);
}
static inline HRESULT IDirectoryObject_SetObjectAttributes(IDirectoryObject* This,PADS_ATTR_INFO attrs,DWORD count,DWORD *count_set) {
    return This->lpVtbl->SetObjectAttributes(This,attrs,count,count_set);
}
static inline HRESULT IDirectoryObject_CreateDSObject(IDirectoryObject* This,LPWSTR name,PADS_ATTR_INFO attrs,DWORD count,IDispatch **obj) {
    return This->lpVtbl->CreateDSObject(This,name,attrs,count,obj);
}
static inline HRESULT IDirectoryObject_DeleteDSObject(IDirectoryObject* This,LPWSTR name) {
    return This->lpVtbl->DeleteDSObject(This,name);
}
#endif
#endif

#endif


#endif  /* __IDirectoryObject_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IADsOpenDSObject interface
 */
#ifndef __IADsOpenDSObject_INTERFACE_DEFINED__
#define __IADsOpenDSObject_INTERFACE_DEFINED__

DEFINE_GUID(IID_IADsOpenDSObject, 0xddf2891e, 0x0f9c, 0x11d0, 0x8a,0xd4, 0x00,0xc0,0x4f,0xd8,0xd5,0x03);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ddf2891e-0f9c-11d0-8ad4-00c04fd8d503")
IADsOpenDSObject : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE OpenDSObject(
        BSTR path,
        BSTR user,
        BSTR password,
        LONG reserved,
        IDispatch **obj) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IADsOpenDSObject, 0xddf2891e, 0x0f9c, 0x11d0, 0x8a,0xd4, 0x00,0xc0,0x4f,0xd8,0xd5,0x03)
#endif
#else
typedef struct IADsOpenDSObjectVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IADsOpenDSObject *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IADsOpenDSObject *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IADsOpenDSObject *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IADsOpenDSObject *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IADsOpenDSObject *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IADsOpenDSObject *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IADsOpenDSObject *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IADsOpenDSObject methods ***/
    HRESULT (STDMETHODCALLTYPE *OpenDSObject)(
        IADsOpenDSObject *This,
        BSTR path,
        BSTR user,
        BSTR password,
        LONG reserved,
        IDispatch **obj);

    END_INTERFACE
} IADsOpenDSObjectVtbl;

interface IADsOpenDSObject {
    CONST_VTBL IADsOpenDSObjectVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IADsOpenDSObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IADsOpenDSObject_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IADsOpenDSObject_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IADsOpenDSObject_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IADsOpenDSObject_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IADsOpenDSObject_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IADsOpenDSObject_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IADsOpenDSObject methods ***/
#define IADsOpenDSObject_OpenDSObject(This,path,user,password,reserved,obj) (This)->lpVtbl->OpenDSObject(This,path,user,password,reserved,obj)
#else
/*** IUnknown methods ***/
static inline HRESULT IADsOpenDSObject_QueryInterface(IADsOpenDSObject* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IADsOpenDSObject_AddRef(IADsOpenDSObject* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IADsOpenDSObject_Release(IADsOpenDSObject* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IADsOpenDSObject_GetTypeInfoCount(IADsOpenDSObject* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IADsOpenDSObject_GetTypeInfo(IADsOpenDSObject* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IADsOpenDSObject_GetIDsOfNames(IADsOpenDSObject* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IADsOpenDSObject_Invoke(IADsOpenDSObject* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IADsOpenDSObject methods ***/
static inline HRESULT IADsOpenDSObject_OpenDSObject(IADsOpenDSObject* This,BSTR path,BSTR user,BSTR password,LONG reserved,IDispatch **obj) {
    return This->lpVtbl->OpenDSObject(This,path,user,password,reserved,obj);
}
#endif
#endif

#endif


#endif  /* __IADsOpenDSObject_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IADsPathname interface
 */
#ifndef __IADsPathname_INTERFACE_DEFINED__
#define __IADsPathname_INTERFACE_DEFINED__

DEFINE_GUID(IID_IADsPathname, 0xd592aed4, 0xf420, 0x11d0, 0xa3,0x6e, 0x00,0xc0,0x4f,0xb9,0x50,0xdc);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d592aed4-f420-11d0-a36e-00c04fb950dc")
IADsPathname : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE Set(
        BSTR path,
        LONG type) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDisplayType(
        LONG type) = 0;

    virtual HRESULT STDMETHODCALLTYPE Retrieve(
        LONG type,
        BSTR *path) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNumElements(
        LONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetElement(
        LONG index,
        BSTR *element) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddLeafElement(
        BSTR element) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveLeafElement(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE CopyPath(
        IDispatch **path) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEscapedElement(
        LONG reserved,
        BSTR element,
        BSTR *str) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_EscapedMode(
        LONG *mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_EscapedMode(
        LONG mode) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IADsPathname, 0xd592aed4, 0xf420, 0x11d0, 0xa3,0x6e, 0x00,0xc0,0x4f,0xb9,0x50,0xdc)
#endif
#else
typedef struct IADsPathnameVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IADsPathname *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IADsPathname *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IADsPathname *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IADsPathname *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IADsPathname *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IADsPathname *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IADsPathname *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IADsPathname methods ***/
    HRESULT (STDMETHODCALLTYPE *Set)(
        IADsPathname *This,
        BSTR path,
        LONG type);

    HRESULT (STDMETHODCALLTYPE *SetDisplayType)(
        IADsPathname *This,
        LONG type);

    HRESULT (STDMETHODCALLTYPE *Retrieve)(
        IADsPathname *This,
        LONG type,
        BSTR *path);

    HRESULT (STDMETHODCALLTYPE *GetNumElements)(
        IADsPathname *This,
        LONG *count);

    HRESULT (STDMETHODCALLTYPE *GetElement)(
        IADsPathname *This,
        LONG index,
        BSTR *element);

    HRESULT (STDMETHODCALLTYPE *AddLeafElement)(
        IADsPathname *This,
        BSTR element);

    HRESULT (STDMETHODCALLTYPE *RemoveLeafElement)(
        IADsPathname *This);

    HRESULT (STDMETHODCALLTYPE *CopyPath)(
        IADsPathname *This,
        IDispatch **path);

    HRESULT (STDMETHODCALLTYPE *GetEscapedElement)(
        IADsPathname *This,
        LONG reserved,
        BSTR element,
        BSTR *str);

    HRESULT (STDMETHODCALLTYPE *get_EscapedMode)(
        IADsPathname *This,
        LONG *mode);

    HRESULT (STDMETHODCALLTYPE *put_EscapedMode)(
        IADsPathname *This,
        LONG mode);

    END_INTERFACE
} IADsPathnameVtbl;

interface IADsPathname {
    CONST_VTBL IADsPathnameVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IADsPathname_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IADsPathname_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IADsPathname_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IADsPathname_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IADsPathname_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IADsPathname_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IADsPathname_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IADsPathname methods ***/
#define IADsPathname_Set(This,path,type) (This)->lpVtbl->Set(This,path,type)
#define IADsPathname_SetDisplayType(This,type) (This)->lpVtbl->SetDisplayType(This,type)
#define IADsPathname_Retrieve(This,type,path) (This)->lpVtbl->Retrieve(This,type,path)
#define IADsPathname_GetNumElements(This,count) (This)->lpVtbl->GetNumElements(This,count)
#define IADsPathname_GetElement(This,index,element) (This)->lpVtbl->GetElement(This,index,element)
#define IADsPathname_AddLeafElement(This,element) (This)->lpVtbl->AddLeafElement(This,element)
#define IADsPathname_RemoveLeafElement(This) (This)->lpVtbl->RemoveLeafElement(This)
#define IADsPathname_CopyPath(This,path) (This)->lpVtbl->CopyPath(This,path)
#define IADsPathname_GetEscapedElement(This,reserved,element,str) (This)->lpVtbl->GetEscapedElement(This,reserved,element,str)
#define IADsPathname_get_EscapedMode(This,mode) (This)->lpVtbl->get_EscapedMode(This,mode)
#define IADsPathname_put_EscapedMode(This,mode) (This)->lpVtbl->put_EscapedMode(This,mode)
#else
/*** IUnknown methods ***/
static inline HRESULT IADsPathname_QueryInterface(IADsPathname* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IADsPathname_AddRef(IADsPathname* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IADsPathname_Release(IADsPathname* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IADsPathname_GetTypeInfoCount(IADsPathname* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IADsPathname_GetTypeInfo(IADsPathname* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IADsPathname_GetIDsOfNames(IADsPathname* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IADsPathname_Invoke(IADsPathname* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IADsPathname methods ***/
static inline HRESULT IADsPathname_Set(IADsPathname* This,BSTR path,LONG type) {
    return This->lpVtbl->Set(This,path,type);
}
static inline HRESULT IADsPathname_SetDisplayType(IADsPathname* This,LONG type) {
    return This->lpVtbl->SetDisplayType(This,type);
}
static inline HRESULT IADsPathname_Retrieve(IADsPathname* This,LONG type,BSTR *path) {
    return This->lpVtbl->Retrieve(This,type,path);
}
static inline HRESULT IADsPathname_GetNumElements(IADsPathname* This,LONG *count) {
    return This->lpVtbl->GetNumElements(This,count);
}
static inline HRESULT IADsPathname_GetElement(IADsPathname* This,LONG index,BSTR *element) {
    return This->lpVtbl->GetElement(This,index,element);
}
static inline HRESULT IADsPathname_AddLeafElement(IADsPathname* This,BSTR element) {
    return This->lpVtbl->AddLeafElement(This,element);
}
static inline HRESULT IADsPathname_RemoveLeafElement(IADsPathname* This) {
    return This->lpVtbl->RemoveLeafElement(This);
}
static inline HRESULT IADsPathname_CopyPath(IADsPathname* This,IDispatch **path) {
    return This->lpVtbl->CopyPath(This,path);
}
static inline HRESULT IADsPathname_GetEscapedElement(IADsPathname* This,LONG reserved,BSTR element,BSTR *str) {
    return This->lpVtbl->GetEscapedElement(This,reserved,element,str);
}
static inline HRESULT IADsPathname_get_EscapedMode(IADsPathname* This,LONG *mode) {
    return This->lpVtbl->get_EscapedMode(This,mode);
}
static inline HRESULT IADsPathname_put_EscapedMode(IADsPathname* This,LONG mode) {
    return This->lpVtbl->put_EscapedMode(This,mode);
}
#endif
#endif

#endif


#endif  /* __IADsPathname_INTERFACE_DEFINED__ */

/*****************************************************************************
 * Pathname coclass
 */

DEFINE_GUID(CLSID_Pathname, 0x080d0d78, 0xf421, 0x11d0, 0xa3,0x6e, 0x00,0xc0,0x4f,0xb9,0x50,0xdc);

#ifdef __cplusplus
class DECLSPEC_UUID("080d0d78-f421-11d0-a36e-00c04fb950dc") Pathname;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(Pathname, 0x080d0d78, 0xf421, 0x11d0, 0xa3,0x6e, 0x00,0xc0,0x4f,0xb9,0x50,0xdc)
#endif
#endif

/*****************************************************************************
 * IADsADSystemInfo interface
 */
#ifndef __IADsADSystemInfo_INTERFACE_DEFINED__
#define __IADsADSystemInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IADsADSystemInfo, 0x5bb11929, 0xafd1, 0x11d2, 0x9c,0xb9, 0x00,0x00,0xf8,0x7a,0x36,0x9e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5bb11929-afd1-11d2-9cb9-0000f87a369e")
IADsADSystemInfo : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_UserName(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ComputerName(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SiteName(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DomainShortName(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DomainDNSName(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ForestDNSName(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_PDCRoleOwner(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SchemaRoleOwner(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsNativeMode(
        VARIANT_BOOL *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAnyDCName(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDCSiteName(
        BSTR server,
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE RefreshSchemaCache(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTrees(
        VARIANT *retval) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IADsADSystemInfo, 0x5bb11929, 0xafd1, 0x11d2, 0x9c,0xb9, 0x00,0x00,0xf8,0x7a,0x36,0x9e)
#endif
#else
typedef struct IADsADSystemInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IADsADSystemInfo *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IADsADSystemInfo *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IADsADSystemInfo *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IADsADSystemInfo *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IADsADSystemInfo *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IADsADSystemInfo *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IADsADSystemInfo *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IADsADSystemInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *get_UserName)(
        IADsADSystemInfo *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_ComputerName)(
        IADsADSystemInfo *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_SiteName)(
        IADsADSystemInfo *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_DomainShortName)(
        IADsADSystemInfo *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_DomainDNSName)(
        IADsADSystemInfo *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_ForestDNSName)(
        IADsADSystemInfo *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_PDCRoleOwner)(
        IADsADSystemInfo *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_SchemaRoleOwner)(
        IADsADSystemInfo *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *get_IsNativeMode)(
        IADsADSystemInfo *This,
        VARIANT_BOOL *retval);

    HRESULT (STDMETHODCALLTYPE *GetAnyDCName)(
        IADsADSystemInfo *This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *GetDCSiteName)(
        IADsADSystemInfo *This,
        BSTR server,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *RefreshSchemaCache)(
        IADsADSystemInfo *This);

    HRESULT (STDMETHODCALLTYPE *GetTrees)(
        IADsADSystemInfo *This,
        VARIANT *retval);

    END_INTERFACE
} IADsADSystemInfoVtbl;

interface IADsADSystemInfo {
    CONST_VTBL IADsADSystemInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IADsADSystemInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IADsADSystemInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IADsADSystemInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IADsADSystemInfo_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IADsADSystemInfo_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IADsADSystemInfo_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IADsADSystemInfo_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IADsADSystemInfo methods ***/
#define IADsADSystemInfo_get_UserName(This,retval) (This)->lpVtbl->get_UserName(This,retval)
#define IADsADSystemInfo_get_ComputerName(This,retval) (This)->lpVtbl->get_ComputerName(This,retval)
#define IADsADSystemInfo_get_SiteName(This,retval) (This)->lpVtbl->get_SiteName(This,retval)
#define IADsADSystemInfo_get_DomainShortName(This,retval) (This)->lpVtbl->get_DomainShortName(This,retval)
#define IADsADSystemInfo_get_DomainDNSName(This,retval) (This)->lpVtbl->get_DomainDNSName(This,retval)
#define IADsADSystemInfo_get_ForestDNSName(This,retval) (This)->lpVtbl->get_ForestDNSName(This,retval)
#define IADsADSystemInfo_get_PDCRoleOwner(This,retval) (This)->lpVtbl->get_PDCRoleOwner(This,retval)
#define IADsADSystemInfo_get_SchemaRoleOwner(This,retval) (This)->lpVtbl->get_SchemaRoleOwner(This,retval)
#define IADsADSystemInfo_get_IsNativeMode(This,retval) (This)->lpVtbl->get_IsNativeMode(This,retval)
#define IADsADSystemInfo_GetAnyDCName(This,retval) (This)->lpVtbl->GetAnyDCName(This,retval)
#define IADsADSystemInfo_GetDCSiteName(This,server,retval) (This)->lpVtbl->GetDCSiteName(This,server,retval)
#define IADsADSystemInfo_RefreshSchemaCache(This) (This)->lpVtbl->RefreshSchemaCache(This)
#define IADsADSystemInfo_GetTrees(This,retval) (This)->lpVtbl->GetTrees(This,retval)
#else
/*** IUnknown methods ***/
static inline HRESULT IADsADSystemInfo_QueryInterface(IADsADSystemInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IADsADSystemInfo_AddRef(IADsADSystemInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IADsADSystemInfo_Release(IADsADSystemInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IADsADSystemInfo_GetTypeInfoCount(IADsADSystemInfo* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IADsADSystemInfo_GetTypeInfo(IADsADSystemInfo* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IADsADSystemInfo_GetIDsOfNames(IADsADSystemInfo* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IADsADSystemInfo_Invoke(IADsADSystemInfo* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IADsADSystemInfo methods ***/
static inline HRESULT IADsADSystemInfo_get_UserName(IADsADSystemInfo* This,BSTR *retval) {
    return This->lpVtbl->get_UserName(This,retval);
}
static inline HRESULT IADsADSystemInfo_get_ComputerName(IADsADSystemInfo* This,BSTR *retval) {
    return This->lpVtbl->get_ComputerName(This,retval);
}
static inline HRESULT IADsADSystemInfo_get_SiteName(IADsADSystemInfo* This,BSTR *retval) {
    return This->lpVtbl->get_SiteName(This,retval);
}
static inline HRESULT IADsADSystemInfo_get_DomainShortName(IADsADSystemInfo* This,BSTR *retval) {
    return This->lpVtbl->get_DomainShortName(This,retval);
}
static inline HRESULT IADsADSystemInfo_get_DomainDNSName(IADsADSystemInfo* This,BSTR *retval) {
    return This->lpVtbl->get_DomainDNSName(This,retval);
}
static inline HRESULT IADsADSystemInfo_get_ForestDNSName(IADsADSystemInfo* This,BSTR *retval) {
    return This->lpVtbl->get_ForestDNSName(This,retval);
}
static inline HRESULT IADsADSystemInfo_get_PDCRoleOwner(IADsADSystemInfo* This,BSTR *retval) {
    return This->lpVtbl->get_PDCRoleOwner(This,retval);
}
static inline HRESULT IADsADSystemInfo_get_SchemaRoleOwner(IADsADSystemInfo* This,BSTR *retval) {
    return This->lpVtbl->get_SchemaRoleOwner(This,retval);
}
static inline HRESULT IADsADSystemInfo_get_IsNativeMode(IADsADSystemInfo* This,VARIANT_BOOL *retval) {
    return This->lpVtbl->get_IsNativeMode(This,retval);
}
static inline HRESULT IADsADSystemInfo_GetAnyDCName(IADsADSystemInfo* This,BSTR *retval) {
    return This->lpVtbl->GetAnyDCName(This,retval);
}
static inline HRESULT IADsADSystemInfo_GetDCSiteName(IADsADSystemInfo* This,BSTR server,BSTR *retval) {
    return This->lpVtbl->GetDCSiteName(This,server,retval);
}
static inline HRESULT IADsADSystemInfo_RefreshSchemaCache(IADsADSystemInfo* This) {
    return This->lpVtbl->RefreshSchemaCache(This);
}
static inline HRESULT IADsADSystemInfo_GetTrees(IADsADSystemInfo* This,VARIANT *retval) {
    return This->lpVtbl->GetTrees(This,retval);
}
#endif
#endif

#endif


#endif  /* __IADsADSystemInfo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ADSystemInfo coclass
 */

DEFINE_GUID(CLSID_ADSystemInfo, 0x50b6327f, 0xafd1, 0x11d2, 0x9c,0xb9, 0x00,0x00,0xf8,0x7a,0x36,0x9e);

#ifdef __cplusplus
class DECLSPEC_UUID("50b6327f-afd1-11d2-9cb9-0000f87a369e") ADSystemInfo;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ADSystemInfo, 0x50b6327f, 0xafd1, 0x11d2, 0x9c,0xb9, 0x00,0x00,0xf8,0x7a,0x36,0x9e)
#endif
#endif

/*****************************************************************************
 * IADsDNWithBinary interface
 */
#ifndef __IADsDNWithBinary_INTERFACE_DEFINED__
#define __IADsDNWithBinary_INTERFACE_DEFINED__

DEFINE_GUID(IID_IADsDNWithBinary, 0x7e99c0a2, 0xf935, 0x11d2, 0xba,0x96, 0x00,0xc0,0x4f,0xb6,0xd0,0xd1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7e99c0a2-f935-11d2-ba96-00c04fb6d0d1")
IADsDNWithBinary : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_BinaryValue(
        VARIANT *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_BinaryValue(
        VARIANT value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DNString(
        BSTR *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_DNString(
        BSTR value) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IADsDNWithBinary, 0x7e99c0a2, 0xf935, 0x11d2, 0xba,0x96, 0x00,0xc0,0x4f,0xb6,0xd0,0xd1)
#endif
#else
typedef struct IADsDNWithBinaryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IADsDNWithBinary *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IADsDNWithBinary *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IADsDNWithBinary *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IADsDNWithBinary *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IADsDNWithBinary *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IADsDNWithBinary *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IADsDNWithBinary *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IADsDNWithBinary methods ***/
    HRESULT (STDMETHODCALLTYPE *get_BinaryValue)(
        IADsDNWithBinary *This,
        VARIANT *value);

    HRESULT (STDMETHODCALLTYPE *put_BinaryValue)(
        IADsDNWithBinary *This,
        VARIANT value);

    HRESULT (STDMETHODCALLTYPE *get_DNString)(
        IADsDNWithBinary *This,
        BSTR *value);

    HRESULT (STDMETHODCALLTYPE *put_DNString)(
        IADsDNWithBinary *This,
        BSTR value);

    END_INTERFACE
} IADsDNWithBinaryVtbl;

interface IADsDNWithBinary {
    CONST_VTBL IADsDNWithBinaryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IADsDNWithBinary_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IADsDNWithBinary_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IADsDNWithBinary_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IADsDNWithBinary_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IADsDNWithBinary_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IADsDNWithBinary_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IADsDNWithBinary_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IADsDNWithBinary methods ***/
#define IADsDNWithBinary_get_BinaryValue(This,value) (This)->lpVtbl->get_BinaryValue(This,value)
#define IADsDNWithBinary_put_BinaryValue(This,value) (This)->lpVtbl->put_BinaryValue(This,value)
#define IADsDNWithBinary_get_DNString(This,value) (This)->lpVtbl->get_DNString(This,value)
#define IADsDNWithBinary_put_DNString(This,value) (This)->lpVtbl->put_DNString(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT IADsDNWithBinary_QueryInterface(IADsDNWithBinary* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IADsDNWithBinary_AddRef(IADsDNWithBinary* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IADsDNWithBinary_Release(IADsDNWithBinary* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IADsDNWithBinary_GetTypeInfoCount(IADsDNWithBinary* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IADsDNWithBinary_GetTypeInfo(IADsDNWithBinary* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IADsDNWithBinary_GetIDsOfNames(IADsDNWithBinary* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IADsDNWithBinary_Invoke(IADsDNWithBinary* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IADsDNWithBinary methods ***/
static inline HRESULT IADsDNWithBinary_get_BinaryValue(IADsDNWithBinary* This,VARIANT *value) {
    return This->lpVtbl->get_BinaryValue(This,value);
}
static inline HRESULT IADsDNWithBinary_put_BinaryValue(IADsDNWithBinary* This,VARIANT value) {
    return This->lpVtbl->put_BinaryValue(This,value);
}
static inline HRESULT IADsDNWithBinary_get_DNString(IADsDNWithBinary* This,BSTR *value) {
    return This->lpVtbl->get_DNString(This,value);
}
static inline HRESULT IADsDNWithBinary_put_DNString(IADsDNWithBinary* This,BSTR value) {
    return This->lpVtbl->put_DNString(This,value);
}
#endif
#endif

#endif


#endif  /* __IADsDNWithBinary_INTERFACE_DEFINED__ */

/*****************************************************************************
 * DNWithBinary coclass
 */

DEFINE_GUID(CLSID_DNWithBinary, 0x7e99c0a3, 0xf935, 0x11d2, 0xba,0x96, 0x00,0xc0,0x4f,0xb6,0xd0,0xd1);

#ifdef __cplusplus
class DECLSPEC_UUID("7e99c0a3-f935-11d2-ba96-00c04fb6d0d1") DNWithBinary;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(DNWithBinary, 0x7e99c0a3, 0xf935, 0x11d2, 0xba,0x96, 0x00,0xc0,0x4f,0xb6,0xd0,0xd1)
#endif
#endif

/*****************************************************************************
 * IADsDNWithString interface
 */
#ifndef __IADsDNWithString_INTERFACE_DEFINED__
#define __IADsDNWithString_INTERFACE_DEFINED__

DEFINE_GUID(IID_IADsDNWithString, 0x370df02e, 0xf934, 0x11d2, 0xba,0x96, 0x00,0xc0,0x4f,0xb6,0xd0,0xd1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("370df02e-f934-11d2-ba96-00c04fb6d0d1")
IADsDNWithString : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_StringValue(
        BSTR *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_StringValue(
        BSTR value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_DNString(
        BSTR *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_DNString(
        BSTR value) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IADsDNWithString, 0x370df02e, 0xf934, 0x11d2, 0xba,0x96, 0x00,0xc0,0x4f,0xb6,0xd0,0xd1)
#endif
#else
typedef struct IADsDNWithStringVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IADsDNWithString *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IADsDNWithString *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IADsDNWithString *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IADsDNWithString *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IADsDNWithString *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IADsDNWithString *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IADsDNWithString *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IADsDNWithString methods ***/
    HRESULT (STDMETHODCALLTYPE *get_StringValue)(
        IADsDNWithString *This,
        BSTR *value);

    HRESULT (STDMETHODCALLTYPE *put_StringValue)(
        IADsDNWithString *This,
        BSTR value);

    HRESULT (STDMETHODCALLTYPE *get_DNString)(
        IADsDNWithString *This,
        BSTR *value);

    HRESULT (STDMETHODCALLTYPE *put_DNString)(
        IADsDNWithString *This,
        BSTR value);

    END_INTERFACE
} IADsDNWithStringVtbl;

interface IADsDNWithString {
    CONST_VTBL IADsDNWithStringVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IADsDNWithString_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IADsDNWithString_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IADsDNWithString_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IADsDNWithString_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IADsDNWithString_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IADsDNWithString_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IADsDNWithString_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IADsDNWithString methods ***/
#define IADsDNWithString_get_StringValue(This,value) (This)->lpVtbl->get_StringValue(This,value)
#define IADsDNWithString_put_StringValue(This,value) (This)->lpVtbl->put_StringValue(This,value)
#define IADsDNWithString_get_DNString(This,value) (This)->lpVtbl->get_DNString(This,value)
#define IADsDNWithString_put_DNString(This,value) (This)->lpVtbl->put_DNString(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT IADsDNWithString_QueryInterface(IADsDNWithString* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IADsDNWithString_AddRef(IADsDNWithString* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IADsDNWithString_Release(IADsDNWithString* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IADsDNWithString_GetTypeInfoCount(IADsDNWithString* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IADsDNWithString_GetTypeInfo(IADsDNWithString* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IADsDNWithString_GetIDsOfNames(IADsDNWithString* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IADsDNWithString_Invoke(IADsDNWithString* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IADsDNWithString methods ***/
static inline HRESULT IADsDNWithString_get_StringValue(IADsDNWithString* This,BSTR *value) {
    return This->lpVtbl->get_StringValue(This,value);
}
static inline HRESULT IADsDNWithString_put_StringValue(IADsDNWithString* This,BSTR value) {
    return This->lpVtbl->put_StringValue(This,value);
}
static inline HRESULT IADsDNWithString_get_DNString(IADsDNWithString* This,BSTR *value) {
    return This->lpVtbl->get_DNString(This,value);
}
static inline HRESULT IADsDNWithString_put_DNString(IADsDNWithString* This,BSTR value) {
    return This->lpVtbl->put_DNString(This,value);
}
#endif
#endif

#endif


#endif  /* __IADsDNWithString_INTERFACE_DEFINED__ */

/*****************************************************************************
 * DNWithString coclass
 */

DEFINE_GUID(CLSID_DNWithString, 0x334857cc, 0xf934, 0x11d2, 0xba,0x96, 0x00,0xc0,0x4f,0xb6,0xd0,0xd1);

#ifdef __cplusplus
class DECLSPEC_UUID("334857cc-f934-11d2-ba96-00c04fb6d0d1") DNWithString;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(DNWithString, 0x334857cc, 0xf934, 0x11d2, 0xba,0x96, 0x00,0xc0,0x4f,0xb6,0xd0,0xd1)
#endif
#endif

#endif /* __ActiveDs_LIBRARY_DEFINED__ */
/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);
ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __iads_h__ */
