/*** Autogenerated by WIDL 1.7.7 from ../../wine/include/iads.idl - Do not edit ***/

#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif

#include <rpc.h>
#include <rpcndr.h>

#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;
#endif

#ifndef __IADs_FWD_DEFINED__
#define __IADs_FWD_DEFINED__
typedef interface IADs IADs;
#endif

#ifndef __IADsMembers_FWD_DEFINED__
#define __IADsMembers_FWD_DEFINED__
typedef interface IADsMembers IADsMembers;
#endif

#ifndef __IADsGroup_FWD_DEFINED__
#define __IADsGroup_FWD_DEFINED__
typedef interface IADsGroup IADsGroup;
#endif

#ifndef __IADsUser_FWD_DEFINED__
#define __IADsUser_FWD_DEFINED__
typedef interface IADsUser IADsUser;
#endif

#ifndef __IDirectorySearch_FWD_DEFINED__
#define __IDirectorySearch_FWD_DEFINED__
typedef interface IDirectorySearch IDirectorySearch;
#endif

/* Headers for imported files */

#include <oaidl.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef enum __WIDL_iads_generated_name_00000002 {
    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_00000003 {
    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_00000004 {
    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 ADS_SEARCHPREF_ENUM *PADS_SEARCHPREF_INFO;
typedef enum __WIDL_iads_generated_name_00000005 {
    ADS_STATUS_S_OK = 0,
    ADS_STATUS_INVALID_SEARCHPREF = 1,
    ADS_STATUS_INVALID_SEARCHPREFVALUE = 2
} ADS_STATUSENUM;
typedef enum __WIDL_iads_generated_name_00000006 {
    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_00000007 {
    ADS_PASSWORD_ENCODE_REQUIRE_SSL = 0,
    ADS_PASSWORD_ENCODE_CLEAR = 1
} ADS_PASSWORD_ENCODING_ENUM;
typedef struct _ADS_CASEIGNORE_LIST {
    struct _ADS_CASEIGNORE_LIST *Next;
    LPWSTR String;
} ADS_CASEIGNORE_LIST;
typedef struct _ADS_OCTET_LIST {
    struct _ADS_OCTET_LIST *Next;
    DWORD Length;
    BYTE *Data;
} ADS_OCTET_LIST;
typedef struct __WIDL_iads_generated_name_00000008 {
    DWORD Type;
    LPWSTR VolumeName;
    LPWSTR Path;
} ADS_PATH;
typedef struct __WIDL_iads_generated_name_00000008 *PADS_PATH;
typedef struct __WIDL_iads_generated_name_00000009 {
    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_0000000A {
    DWORD dwLength;
    BYTE *lpValue;
} ADS_OCTET_STRING;
typedef struct __WIDL_iads_generated_name_0000000B {
    DWORD dwLength;
    BYTE *lpValue;
} ADS_PROV_SPECIFIC;
typedef struct __WIDL_iads_generated_name_0000000C {
    LPWSTR PostalAddress[6];
} ADS_POSTALADDRESS;
typedef struct __WIDL_iads_generated_name_0000000C *PADS_POSTALADDRESS;
typedef struct __WIDL_iads_generated_name_0000000D {
    LPWSTR ObjectName;
    DWORD Level;
    DWORD Interval;
} ADS_TYPEDNAME;
typedef struct __WIDL_iads_generated_name_0000000D *PADS_TYPEDNAME;
typedef struct __WIDL_iads_generated_name_0000000E {
    DWORD RemoteID;
    LPWSTR ObjectName;
} ADS_BACKLINK;
typedef struct __WIDL_iads_generated_name_0000000F {
    LPWSTR ObjectName;
    DWORD Amount;
} ADS_HOLD;
typedef struct __WIDL_iads_generated_name_00000010 {
    DWORD AddressType;
    DWORD AddressLength;
    BYTE *Address;
} ADS_NETADDRESS;
typedef struct __WIDL_iads_generated_name_00000010 *PADS_NETADDRESS;
typedef struct __WIDL_iads_generated_name_00000011 {
    LPWSTR ServerName;
    DWORD ReplicaType;
    DWORD ReplicaNumber;
    DWORD Count;
    PADS_NETADDRESS ReplicaAddressHints;
} ADS_REPLICAPOINTER;
typedef struct __WIDL_iads_generated_name_00000011 *PADS_REPLICAPOINTER;
typedef struct __WIDL_iads_generated_name_00000012 {
    LPWSTR TelephoneNumber;
    DWORD NumberOfBits;
    BYTE *Parameters;
} ADS_FAXNUMBER;
typedef struct __WIDL_iads_generated_name_00000012 *PADS_FAXNUMBER;
typedef struct __WIDL_iads_generated_name_00000013 {
    LPWSTR Address;
    DWORD Type;
} ADS_EMAIL;
typedef struct __WIDL_iads_generated_name_00000013 *PADS_EMAIL;
typedef struct __WIDL_iads_generated_name_00000014 {
    DWORD dwLength;
    BYTE *lpValue;
} ADS_NT_SECURITY_DESCRIPTOR;
typedef struct __WIDL_iads_generated_name_00000015 {
    DWORD dwLength;
    BYTE *lpBinaryValue;
    LPWSTR pszDNString;
} ADS_DN_WITH_BINARY;
typedef struct __WIDL_iads_generated_name_00000015 *PADS_DN_WITH_BINARY;
typedef struct __WIDL_iads_generated_name_00000016 {
    LPWSTR pszStringValue;
    LPWSTR pszDNString;
} ADS_DN_WITH_STRING;
typedef struct __WIDL_iads_generated_name_00000016 *PADS_DN_WITH_STRING;
typedef struct _adsvalue {
    ADSTYPE dwType;
    __C89_NAMELESS 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;
    } __C89_NAMELESSUNIONNAME;
} ADSVALUE;
typedef struct _adsvalue *PADSVALUE;
typedef struct ads_searchpref_info {
    ADS_SEARCHPREF dwSearchPref;
    ADSVALUE vValue;
    ADS_STATUS dwStatus;
} ADS_SEARCHPREF_INFO;
typedef struct ads_search_column {
    LPWSTR pszAttrName;
    ADSTYPE dwADsType;
    PADSVALUE pADsValues;
    DWORD dwNumValues;
    HANDLE hReserved;
} ADS_SEARCH_COLUMN;
typedef struct ads_search_column *PADS_SEARCH_COLUMN;
/*****************************************************************************
 * 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 FORCEINLINE HRESULT IADsContainer_QueryInterface(IADsContainer* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IADsContainer_AddRef(IADsContainer* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IADsContainer_Release(IADsContainer* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IADsContainer_GetTypeInfoCount(IADsContainer* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IADsContainer_GetTypeInfo(IADsContainer* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE 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 FORCEINLINE 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 FORCEINLINE HRESULT IADsContainer_get_Count(IADsContainer* This,LONG *retval) {
    return This->lpVtbl->get_Count(This,retval);
}
static FORCEINLINE HRESULT IADsContainer_get__NewEnum(IADsContainer* This,IUnknown **retval) {
    return This->lpVtbl->get__NewEnum(This,retval);
}
static FORCEINLINE HRESULT IADsContainer_get_Filter(IADsContainer* This,VARIANT *pvFilter) {
    return This->lpVtbl->get_Filter(This,pvFilter);
}
static FORCEINLINE HRESULT IADsContainer_put_Filter(IADsContainer* This,VARIANT vFilter) {
    return This->lpVtbl->put_Filter(This,vFilter);
}
static FORCEINLINE HRESULT IADsContainer_get_Hints(IADsContainer* This,VARIANT *pvHints) {
    return This->lpVtbl->get_Hints(This,pvHints);
}
static FORCEINLINE HRESULT IADsContainer_put_Hints(IADsContainer* This,VARIANT vHints) {
    return This->lpVtbl->put_Hints(This,vHints);
}
static FORCEINLINE HRESULT IADsContainer_GetObject(IADsContainer* This,BSTR bstrClassName,BSTR bstrRelativeName,IDispatch **ppObject) {
    return This->lpVtbl->GetObject(This,bstrClassName,bstrRelativeName,ppObject);
}
static FORCEINLINE HRESULT IADsContainer_Create(IADsContainer* This,BSTR bstrClassName,BSTR bstrRelativeName,IDispatch **ppObject) {
    return This->lpVtbl->Create(This,bstrClassName,bstrRelativeName,ppObject);
}
static FORCEINLINE HRESULT IADsContainer_Delete(IADsContainer* This,BSTR bstrClassName,BSTR bstrRelativeName) {
    return This->lpVtbl->Delete(This,bstrClassName,bstrRelativeName);
}
static FORCEINLINE HRESULT IADsContainer_CopyHere(IADsContainer* This,BSTR bstrSourceName,BSTR bstrNewName,IDispatch **ppObject) {
    return This->lpVtbl->CopyHere(This,bstrSourceName,bstrNewName,ppObject);
}
static FORCEINLINE HRESULT IADsContainer_MoveHere(IADsContainer* This,BSTR bstrSourceName,BSTR bstrNewName,IDispatch **ppObject) {
    return This->lpVtbl->MoveHere(This,bstrSourceName,bstrNewName,ppObject);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IADsContainer_get_Count_Proxy(
    IADsContainer* This,
    LONG *retval);
void __RPC_STUB IADsContainer_get_Count_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsContainer_get__NewEnum_Proxy(
    IADsContainer* This,
    IUnknown **retval);
void __RPC_STUB IADsContainer_get__NewEnum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsContainer_get_Filter_Proxy(
    IADsContainer* This,
    VARIANT *pvFilter);
void __RPC_STUB IADsContainer_get_Filter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsContainer_put_Filter_Proxy(
    IADsContainer* This,
    VARIANT vFilter);
void __RPC_STUB IADsContainer_put_Filter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsContainer_get_Hints_Proxy(
    IADsContainer* This,
    VARIANT *pvHints);
void __RPC_STUB IADsContainer_get_Hints_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsContainer_put_Hints_Proxy(
    IADsContainer* This,
    VARIANT vHints);
void __RPC_STUB IADsContainer_put_Hints_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsContainer_GetObject_Proxy(
    IADsContainer* This,
    BSTR bstrClassName,
    BSTR bstrRelativeName,
    IDispatch **ppObject);
void __RPC_STUB IADsContainer_GetObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsContainer_Create_Proxy(
    IADsContainer* This,
    BSTR bstrClassName,
    BSTR bstrRelativeName,
    IDispatch **ppObject);
void __RPC_STUB IADsContainer_Create_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsContainer_Delete_Proxy(
    IADsContainer* This,
    BSTR bstrClassName,
    BSTR bstrRelativeName);
void __RPC_STUB IADsContainer_Delete_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsContainer_CopyHere_Proxy(
    IADsContainer* This,
    BSTR bstrSourceName,
    BSTR bstrNewName,
    IDispatch **ppObject);
void __RPC_STUB IADsContainer_CopyHere_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsContainer_MoveHere_Proxy(
    IADsContainer* This,
    BSTR bstrSourceName,
    BSTR bstrNewName,
    IDispatch **ppObject);
void __RPC_STUB IADsContainer_MoveHere_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#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 FORCEINLINE HRESULT IADs_QueryInterface(IADs* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IADs_AddRef(IADs* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IADs_Release(IADs* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IADs_GetTypeInfoCount(IADs* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IADs_GetTypeInfo(IADs* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE 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 FORCEINLINE 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 FORCEINLINE HRESULT IADs_get_Name(IADs* This,BSTR *retval) {
    return This->lpVtbl->get_Name(This,retval);
}
static FORCEINLINE HRESULT IADs_get_Class(IADs* This,BSTR *retval) {
    return This->lpVtbl->get_Class(This,retval);
}
static FORCEINLINE HRESULT IADs_get_GUID(IADs* This,BSTR *retval) {
    return This->lpVtbl->get_GUID(This,retval);
}
static FORCEINLINE HRESULT IADs_get_ADsPath(IADs* This,BSTR *retval) {
    return This->lpVtbl->get_ADsPath(This,retval);
}
static FORCEINLINE HRESULT IADs_get_Parent(IADs* This,BSTR *retval) {
    return This->lpVtbl->get_Parent(This,retval);
}
static FORCEINLINE HRESULT IADs_get_Schema(IADs* This,BSTR *retval) {
    return This->lpVtbl->get_Schema(This,retval);
}
static FORCEINLINE HRESULT IADs_GetInfo(IADs* This) {
    return This->lpVtbl->GetInfo(This);
}
static FORCEINLINE HRESULT IADs_SetInfo(IADs* This) {
    return This->lpVtbl->SetInfo(This);
}
static FORCEINLINE HRESULT IADs_Get(IADs* This,BSTR bstrName,VARIANT *pvProp) {
    return This->lpVtbl->Get(This,bstrName,pvProp);
}
static FORCEINLINE HRESULT IADs_Put(IADs* This,BSTR bstrName,VARIANT vProp) {
    return This->lpVtbl->Put(This,bstrName,vProp);
}
static FORCEINLINE HRESULT IADs_GetEx(IADs* This,BSTR bstrName,VARIANT *pvProp) {
    return This->lpVtbl->GetEx(This,bstrName,pvProp);
}
static FORCEINLINE HRESULT IADs_PutEx(IADs* This,LONG lnControlCode,BSTR bstrName,VARIANT vProp) {
    return This->lpVtbl->PutEx(This,lnControlCode,bstrName,vProp);
}
static FORCEINLINE HRESULT IADs_GetInfoEx(IADs* This,VARIANT vProperties,LONG lnReserved) {
    return This->lpVtbl->GetInfoEx(This,vProperties,lnReserved);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IADs_get_Name_Proxy(
    IADs* This,
    BSTR *retval);
void __RPC_STUB IADs_get_Name_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADs_get_Class_Proxy(
    IADs* This,
    BSTR *retval);
void __RPC_STUB IADs_get_Class_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADs_get_GUID_Proxy(
    IADs* This,
    BSTR *retval);
void __RPC_STUB IADs_get_GUID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADs_get_ADsPath_Proxy(
    IADs* This,
    BSTR *retval);
void __RPC_STUB IADs_get_ADsPath_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADs_get_Parent_Proxy(
    IADs* This,
    BSTR *retval);
void __RPC_STUB IADs_get_Parent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADs_get_Schema_Proxy(
    IADs* This,
    BSTR *retval);
void __RPC_STUB IADs_get_Schema_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADs_GetInfo_Proxy(
    IADs* This);
void __RPC_STUB IADs_GetInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADs_SetInfo_Proxy(
    IADs* This);
void __RPC_STUB IADs_SetInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADs_Get_Proxy(
    IADs* This,
    BSTR bstrName,
    VARIANT *pvProp);
void __RPC_STUB IADs_Get_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADs_Put_Proxy(
    IADs* This,
    BSTR bstrName,
    VARIANT vProp);
void __RPC_STUB IADs_Put_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADs_GetEx_Proxy(
    IADs* This,
    BSTR bstrName,
    VARIANT *pvProp);
void __RPC_STUB IADs_GetEx_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADs_PutEx_Proxy(
    IADs* This,
    LONG lnControlCode,
    BSTR bstrName,
    VARIANT vProp);
void __RPC_STUB IADs_PutEx_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADs_GetInfoEx_Proxy(
    IADs* This,
    VARIANT vProperties,
    LONG lnReserved);
void __RPC_STUB IADs_GetInfoEx_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IADs_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 FORCEINLINE HRESULT IADsMembers_QueryInterface(IADsMembers* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IADsMembers_AddRef(IADsMembers* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IADsMembers_Release(IADsMembers* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IADsMembers_GetTypeInfoCount(IADsMembers* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IADsMembers_GetTypeInfo(IADsMembers* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE 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 FORCEINLINE 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 FORCEINLINE HRESULT IADsMembers_get_Count(IADsMembers* This,LONG *plCount) {
    return This->lpVtbl->get_Count(This,plCount);
}
static FORCEINLINE HRESULT IADsMembers_get__NewEnum(IADsMembers* This,IUnknown **ppEnumerator) {
    return This->lpVtbl->get__NewEnum(This,ppEnumerator);
}
static FORCEINLINE HRESULT IADsMembers_get_Filter(IADsMembers* This,VARIANT *pvFilter) {
    return This->lpVtbl->get_Filter(This,pvFilter);
}
static FORCEINLINE HRESULT IADsMembers_put_Filter(IADsMembers* This,VARIANT pvFilter) {
    return This->lpVtbl->put_Filter(This,pvFilter);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IADsMembers_get_Count_Proxy(
    IADsMembers* This,
    LONG *plCount);
void __RPC_STUB IADsMembers_get_Count_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsMembers_get__NewEnum_Proxy(
    IADsMembers* This,
    IUnknown **ppEnumerator);
void __RPC_STUB IADsMembers_get__NewEnum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsMembers_get_Filter_Proxy(
    IADsMembers* This,
    VARIANT *pvFilter);
void __RPC_STUB IADsMembers_get_Filter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsMembers_put_Filter_Proxy(
    IADsMembers* This,
    VARIANT pvFilter);
void __RPC_STUB IADsMembers_put_Filter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#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 FORCEINLINE HRESULT IADsGroup_QueryInterface(IADsGroup* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IADsGroup_AddRef(IADsGroup* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IADsGroup_Release(IADsGroup* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IADsGroup_GetTypeInfoCount(IADsGroup* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IADsGroup_GetTypeInfo(IADsGroup* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE 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 FORCEINLINE 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 FORCEINLINE HRESULT IADsGroup_get_Name(IADsGroup* This,BSTR *retval) {
    return This->lpVtbl->get_Name(This,retval);
}
static FORCEINLINE HRESULT IADsGroup_get_Class(IADsGroup* This,BSTR *retval) {
    return This->lpVtbl->get_Class(This,retval);
}
static FORCEINLINE HRESULT IADsGroup_get_GUID(IADsGroup* This,BSTR *retval) {
    return This->lpVtbl->get_GUID(This,retval);
}
static FORCEINLINE HRESULT IADsGroup_get_ADsPath(IADsGroup* This,BSTR *retval) {
    return This->lpVtbl->get_ADsPath(This,retval);
}
static FORCEINLINE HRESULT IADsGroup_get_Parent(IADsGroup* This,BSTR *retval) {
    return This->lpVtbl->get_Parent(This,retval);
}
static FORCEINLINE HRESULT IADsGroup_get_Schema(IADsGroup* This,BSTR *retval) {
    return This->lpVtbl->get_Schema(This,retval);
}
static FORCEINLINE HRESULT IADsGroup_GetInfo(IADsGroup* This) {
    return This->lpVtbl->GetInfo(This);
}
static FORCEINLINE HRESULT IADsGroup_SetInfo(IADsGroup* This) {
    return This->lpVtbl->SetInfo(This);
}
static FORCEINLINE HRESULT IADsGroup_Get(IADsGroup* This,BSTR bstrName,VARIANT *pvProp) {
    return This->lpVtbl->Get(This,bstrName,pvProp);
}
static FORCEINLINE HRESULT IADsGroup_Put(IADsGroup* This,BSTR bstrName,VARIANT vProp) {
    return This->lpVtbl->Put(This,bstrName,vProp);
}
static FORCEINLINE HRESULT IADsGroup_GetEx(IADsGroup* This,BSTR bstrName,VARIANT *pvProp) {
    return This->lpVtbl->GetEx(This,bstrName,pvProp);
}
static FORCEINLINE HRESULT IADsGroup_PutEx(IADsGroup* This,LONG lnControlCode,BSTR bstrName,VARIANT vProp) {
    return This->lpVtbl->PutEx(This,lnControlCode,bstrName,vProp);
}
static FORCEINLINE HRESULT IADsGroup_GetInfoEx(IADsGroup* This,VARIANT vProperties,LONG lnReserved) {
    return This->lpVtbl->GetInfoEx(This,vProperties,lnReserved);
}
/*** IADsGroup methods ***/
static FORCEINLINE HRESULT IADsGroup_get_Description(IADsGroup* This,BSTR *retval) {
    return This->lpVtbl->get_Description(This,retval);
}
static FORCEINLINE HRESULT IADsGroup_put_Description(IADsGroup* This,BSTR retval) {
    return This->lpVtbl->put_Description(This,retval);
}
static FORCEINLINE HRESULT IADsGroup_Members(IADsGroup* This,IADsMembers **ppMembers) {
    return This->lpVtbl->Members(This,ppMembers);
}
static FORCEINLINE HRESULT IADsGroup_IsMember(IADsGroup* This,BSTR bstrMember,VARIANT_BOOL *bMember) {
    return This->lpVtbl->IsMember(This,bstrMember,bMember);
}
static FORCEINLINE HRESULT IADsGroup_Add(IADsGroup* This,BSTR bstrNewItem) {
    return This->lpVtbl->Add(This,bstrNewItem);
}
static FORCEINLINE HRESULT IADsGroup_Remove(IADsGroup* This,BSTR bstrItemToBeRemoved) {
    return This->lpVtbl->Remove(This,bstrItemToBeRemoved);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IADsGroup_get_Description_Proxy(
    IADsGroup* This,
    BSTR *retval);
void __RPC_STUB IADsGroup_get_Description_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsGroup_put_Description_Proxy(
    IADsGroup* This,
    BSTR retval);
void __RPC_STUB IADsGroup_put_Description_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsGroup_Members_Proxy(
    IADsGroup* This,
    IADsMembers **ppMembers);
void __RPC_STUB IADsGroup_Members_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsGroup_IsMember_Proxy(
    IADsGroup* This,
    BSTR bstrMember,
    VARIANT_BOOL *bMember);
void __RPC_STUB IADsGroup_IsMember_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsGroup_Add_Proxy(
    IADsGroup* This,
    BSTR bstrNewItem);
void __RPC_STUB IADsGroup_Add_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsGroup_Remove_Proxy(
    IADsGroup* This,
    BSTR bstrItemToBeRemoved);
void __RPC_STUB IADsGroup_Remove_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

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

#endif

HRESULT STDMETHODCALLTYPE IADsUser_get_BadLoginAddress_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_BadLoginAddress_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_BadLoginCount_Proxy(
    IADsUser* This,
    LONG *retval);
void __RPC_STUB IADsUser_get_BadLoginCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_LastLogin_Proxy(
    IADsUser* This,
    DATE *retval);
void __RPC_STUB IADsUser_get_LastLogin_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_LastLogoff_Proxy(
    IADsUser* This,
    DATE *retval);
void __RPC_STUB IADsUser_get_LastLogoff_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_LastFailedLogin_Proxy(
    IADsUser* This,
    DATE *retval);
void __RPC_STUB IADsUser_get_LastFailedLogin_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_PasswordLastChanged_Proxy(
    IADsUser* This,
    DATE *retval);
void __RPC_STUB IADsUser_get_PasswordLastChanged_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_Description_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_Description_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_Description_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_Description_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_Division_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_Division_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_Division_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_Division_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_Department_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_Department_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_Department_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_Department_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_EmployeeID_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_EmployeeID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_EmployeeID_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_EmployeeID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_FullName_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_FullName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_FullName_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_FullName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_FirstName_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_FirstName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_FirstName_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_FirstName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_LastName_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_LastName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_LastName_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_LastName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_OtherName_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_OtherName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_OtherName_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_OtherName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_NamePrefix_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_NamePrefix_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_NamePrefix_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_NamePrefix_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_NameSuffix_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_NameSuffix_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_NameSuffix_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_NameSuffix_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_Title_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_Title_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_Title_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_Title_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_Manager_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_Manager_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_Manager_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_Manager_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_TelephoneHome_Proxy(
    IADsUser* This,
    VARIANT *retval);
void __RPC_STUB IADsUser_get_TelephoneHome_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_TelephoneHome_Proxy(
    IADsUser* This,
    VARIANT retval);
void __RPC_STUB IADsUser_put_TelephoneHome_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_TelephoneMobile_Proxy(
    IADsUser* This,
    VARIANT *retval);
void __RPC_STUB IADsUser_get_TelephoneMobile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_TelephoneMobile_Proxy(
    IADsUser* This,
    VARIANT retval);
void __RPC_STUB IADsUser_put_TelephoneMobile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_TelephoneNumber_Proxy(
    IADsUser* This,
    VARIANT *retval);
void __RPC_STUB IADsUser_get_TelephoneNumber_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_TelephoneNumber_Proxy(
    IADsUser* This,
    VARIANT retval);
void __RPC_STUB IADsUser_put_TelephoneNumber_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_TelephonePager_Proxy(
    IADsUser* This,
    VARIANT *retval);
void __RPC_STUB IADsUser_get_TelephonePager_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_TelephonePager_Proxy(
    IADsUser* This,
    VARIANT retval);
void __RPC_STUB IADsUser_put_TelephonePager_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_FaxNumber_Proxy(
    IADsUser* This,
    VARIANT *retval);
void __RPC_STUB IADsUser_get_FaxNumber_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_FaxNumber_Proxy(
    IADsUser* This,
    VARIANT retval);
void __RPC_STUB IADsUser_put_FaxNumber_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_OfficeLocations_Proxy(
    IADsUser* This,
    VARIANT *retval);
void __RPC_STUB IADsUser_get_OfficeLocations_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_OfficeLocations_Proxy(
    IADsUser* This,
    VARIANT retval);
void __RPC_STUB IADsUser_put_OfficeLocations_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_PostalAddresses_Proxy(
    IADsUser* This,
    VARIANT *retval);
void __RPC_STUB IADsUser_get_PostalAddresses_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_PostalAddresses_Proxy(
    IADsUser* This,
    VARIANT retval);
void __RPC_STUB IADsUser_put_PostalAddresses_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_PostalCodes_Proxy(
    IADsUser* This,
    VARIANT *retval);
void __RPC_STUB IADsUser_get_PostalCodes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_PostalCodes_Proxy(
    IADsUser* This,
    VARIANT retval);
void __RPC_STUB IADsUser_put_PostalCodes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_SeeAlso_Proxy(
    IADsUser* This,
    VARIANT *retval);
void __RPC_STUB IADsUser_get_SeeAlso_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_SeeAlso_Proxy(
    IADsUser* This,
    VARIANT retval);
void __RPC_STUB IADsUser_put_SeeAlso_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_AccountDisabled_Proxy(
    IADsUser* This,
    VARIANT_BOOL *retval);
void __RPC_STUB IADsUser_get_AccountDisabled_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_AccountDisabled_Proxy(
    IADsUser* This,
    VARIANT_BOOL retval);
void __RPC_STUB IADsUser_put_AccountDisabled_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_AccountExpirationDate_Proxy(
    IADsUser* This,
    DATE *retval);
void __RPC_STUB IADsUser_get_AccountExpirationDate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_AccountExpirationDate_Proxy(
    IADsUser* This,
    DATE retval);
void __RPC_STUB IADsUser_put_AccountExpirationDate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_GraceLoginsAllowed_Proxy(
    IADsUser* This,
    LONG *retval);
void __RPC_STUB IADsUser_get_GraceLoginsAllowed_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_GraceLoginsAllowed_Proxy(
    IADsUser* This,
    LONG retval);
void __RPC_STUB IADsUser_put_GraceLoginsAllowed_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_GraceLoginsRemaining_Proxy(
    IADsUser* This,
    LONG *retval);
void __RPC_STUB IADsUser_get_GraceLoginsRemaining_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_GraceLoginsRemaining_Proxy(
    IADsUser* This,
    LONG retval);
void __RPC_STUB IADsUser_put_GraceLoginsRemaining_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_IsAccountLocked_Proxy(
    IADsUser* This,
    VARIANT_BOOL *retval);
void __RPC_STUB IADsUser_get_IsAccountLocked_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_IsAccountLocked_Proxy(
    IADsUser* This,
    VARIANT_BOOL retval);
void __RPC_STUB IADsUser_put_IsAccountLocked_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_LoginHours_Proxy(
    IADsUser* This,
    VARIANT *retval);
void __RPC_STUB IADsUser_get_LoginHours_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_LoginHours_Proxy(
    IADsUser* This,
    VARIANT retval);
void __RPC_STUB IADsUser_put_LoginHours_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_LoginWorkstations_Proxy(
    IADsUser* This,
    VARIANT *retval);
void __RPC_STUB IADsUser_get_LoginWorkstations_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_LoginWorkstations_Proxy(
    IADsUser* This,
    VARIANT retval);
void __RPC_STUB IADsUser_put_LoginWorkstations_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_MaxLogins_Proxy(
    IADsUser* This,
    LONG *retval);
void __RPC_STUB IADsUser_get_MaxLogins_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_MaxLogins_Proxy(
    IADsUser* This,
    LONG retval);
void __RPC_STUB IADsUser_put_MaxLogins_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_MaxStorage_Proxy(
    IADsUser* This,
    LONG *retval);
void __RPC_STUB IADsUser_get_MaxStorage_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_MaxStorage_Proxy(
    IADsUser* This,
    LONG retval);
void __RPC_STUB IADsUser_put_MaxStorage_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_PasswordExpirationDate_Proxy(
    IADsUser* This,
    DATE *retval);
void __RPC_STUB IADsUser_get_PasswordExpirationDate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_PasswordExpirationDate_Proxy(
    IADsUser* This,
    DATE retval);
void __RPC_STUB IADsUser_put_PasswordExpirationDate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_PasswordMinimumLength_Proxy(
    IADsUser* This,
    LONG *retval);
void __RPC_STUB IADsUser_get_PasswordMinimumLength_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_PasswordMinimumLength_Proxy(
    IADsUser* This,
    LONG retval);
void __RPC_STUB IADsUser_put_PasswordMinimumLength_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_PasswordRequired_Proxy(
    IADsUser* This,
    VARIANT_BOOL *retval);
void __RPC_STUB IADsUser_get_PasswordRequired_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_PasswordRequired_Proxy(
    IADsUser* This,
    VARIANT_BOOL retval);
void __RPC_STUB IADsUser_put_PasswordRequired_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_RequireUniquePassword_Proxy(
    IADsUser* This,
    VARIANT_BOOL *retval);
void __RPC_STUB IADsUser_get_RequireUniquePassword_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_RequireUniquePassword_Proxy(
    IADsUser* This,
    VARIANT_BOOL retval);
void __RPC_STUB IADsUser_put_RequireUniquePassword_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_EmailAddress_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_EmailAddress_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_EmailAddress_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_EmailAddress_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_HomeDirectory_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_HomeDirectory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_HomeDirectory_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_HomeDirectory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_Languages_Proxy(
    IADsUser* This,
    VARIANT *retval);
void __RPC_STUB IADsUser_get_Languages_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_Languages_Proxy(
    IADsUser* This,
    VARIANT retval);
void __RPC_STUB IADsUser_put_Languages_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_Profile_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_Profile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_Profile_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_Profile_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_LoginScript_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_LoginScript_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_LoginScript_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_LoginScript_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_Picture_Proxy(
    IADsUser* This,
    VARIANT *retval);
void __RPC_STUB IADsUser_get_Picture_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_Picture_Proxy(
    IADsUser* This,
    VARIANT retval);
void __RPC_STUB IADsUser_put_Picture_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_get_HomePage_Proxy(
    IADsUser* This,
    BSTR *retval);
void __RPC_STUB IADsUser_get_HomePage_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_put_HomePage_Proxy(
    IADsUser* This,
    BSTR retval);
void __RPC_STUB IADsUser_put_HomePage_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_Groups_Proxy(
    IADsUser* This,
    IADsMembers **ppGroups);
void __RPC_STUB IADsUser_Groups_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_SetPassword_Proxy(
    IADsUser* This,
    BSTR NewPassword);
void __RPC_STUB IADsUser_SetPassword_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IADsUser_ChangePassword_Proxy(
    IADsUser* This,
    BSTR bstrOldPassword,
    BSTR bstrNewPassword);
void __RPC_STUB IADsUser_ChangePassword_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#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 FORCEINLINE HRESULT IDirectorySearch_QueryInterface(IDirectorySearch* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDirectorySearch_AddRef(IDirectorySearch* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDirectorySearch_Release(IDirectorySearch* This) {
    return This->lpVtbl->Release(This);
}
/*** IDirectorySearch methods ***/
static FORCEINLINE HRESULT IDirectorySearch_SetSearchPreference(IDirectorySearch* This,PADS_SEARCHPREF_INFO pSearchPrefs,DWORD dwNumPrefs) {
    return This->lpVtbl->SetSearchPreference(This,pSearchPrefs,dwNumPrefs);
}
static FORCEINLINE 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 FORCEINLINE HRESULT IDirectorySearch_AbandonSearch(IDirectorySearch* This,ADS_SEARCH_HANDLE phSearchResult) {
    return This->lpVtbl->AbandonSearch(This,phSearchResult);
}
static FORCEINLINE HRESULT IDirectorySearch_GetFirstRow(IDirectorySearch* This,ADS_SEARCH_HANDLE hSearchResult) {
    return This->lpVtbl->GetFirstRow(This,hSearchResult);
}
static FORCEINLINE HRESULT IDirectorySearch_GetNextRow(IDirectorySearch* This,ADS_SEARCH_HANDLE hSearchResult) {
    return This->lpVtbl->GetNextRow(This,hSearchResult);
}
static FORCEINLINE HRESULT IDirectorySearch_GetPreviousRow(IDirectorySearch* This,ADS_SEARCH_HANDLE hSearchResult) {
    return This->lpVtbl->GetPreviousRow(This,hSearchResult);
}
static FORCEINLINE HRESULT IDirectorySearch_GetNextColumnName(IDirectorySearch* This,ADS_SEARCH_HANDLE hSearchHandle,LPWSTR *ppszColumnName) {
    return This->lpVtbl->GetNextColumnName(This,hSearchHandle,ppszColumnName);
}
static FORCEINLINE HRESULT IDirectorySearch_GetColumn(IDirectorySearch* This,ADS_SEARCH_HANDLE hSearchResult,LPWSTR szColumnName,PADS_SEARCH_COLUMN pSearchColumn) {
    return This->lpVtbl->GetColumn(This,hSearchResult,szColumnName,pSearchColumn);
}
static FORCEINLINE HRESULT IDirectorySearch_FreeColumn(IDirectorySearch* This,PADS_SEARCH_COLUMN pSearchColumn) {
    return This->lpVtbl->FreeColumn(This,pSearchColumn);
}
static FORCEINLINE HRESULT IDirectorySearch_CloseSearchHandle(IDirectorySearch* This,ADS_SEARCH_HANDLE hSearchResult) {
    return This->lpVtbl->CloseSearchHandle(This,hSearchResult);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IDirectorySearch_SetSearchPreference_Proxy(
    IDirectorySearch* This,
    PADS_SEARCHPREF_INFO pSearchPrefs,
    DWORD dwNumPrefs);
void __RPC_STUB IDirectorySearch_SetSearchPreference_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDirectorySearch_ExecuteSearch_Proxy(
    IDirectorySearch* This,
    LPWSTR pszSearchFilter,
    LPWSTR *pAttributeNames,
    DWORD dwNumberAttributes,
    PADS_SEARCH_HANDLE phSearchResult);
void __RPC_STUB IDirectorySearch_ExecuteSearch_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDirectorySearch_AbandonSearch_Proxy(
    IDirectorySearch* This,
    ADS_SEARCH_HANDLE phSearchResult);
void __RPC_STUB IDirectorySearch_AbandonSearch_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDirectorySearch_GetFirstRow_Proxy(
    IDirectorySearch* This,
    ADS_SEARCH_HANDLE hSearchResult);
void __RPC_STUB IDirectorySearch_GetFirstRow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDirectorySearch_GetNextRow_Proxy(
    IDirectorySearch* This,
    ADS_SEARCH_HANDLE hSearchResult);
void __RPC_STUB IDirectorySearch_GetNextRow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDirectorySearch_GetPreviousRow_Proxy(
    IDirectorySearch* This,
    ADS_SEARCH_HANDLE hSearchResult);
void __RPC_STUB IDirectorySearch_GetPreviousRow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDirectorySearch_GetNextColumnName_Proxy(
    IDirectorySearch* This,
    ADS_SEARCH_HANDLE hSearchHandle,
    LPWSTR *ppszColumnName);
void __RPC_STUB IDirectorySearch_GetNextColumnName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDirectorySearch_GetColumn_Proxy(
    IDirectorySearch* This,
    ADS_SEARCH_HANDLE hSearchResult,
    LPWSTR szColumnName,
    PADS_SEARCH_COLUMN pSearchColumn);
void __RPC_STUB IDirectorySearch_GetColumn_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDirectorySearch_FreeColumn_Proxy(
    IDirectorySearch* This,
    PADS_SEARCH_COLUMN pSearchColumn);
void __RPC_STUB IDirectorySearch_FreeColumn_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDirectorySearch_CloseSearchHandle_Proxy(
    IDirectorySearch* This,
    ADS_SEARCH_HANDLE hSearchResult);
void __RPC_STUB IDirectorySearch_CloseSearchHandle_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IDirectorySearch_INTERFACE_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__ */
