INTF.H
/*++s  
 
Copyright (c) 1996 Microsoft Corporation 
 
Module Name: 
 
    IntF.cpp 
 
Abstract: 
 
    Interface for ADS 
 
Author: 
 
Environment: 
 
    User mode 
 
Revision History : 
 
--*/ 
#ifndef _INTF_H_ 
#define _INTF_H_ 
 
#define DECLARE_IUnknown_METHODS \ 
        STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) ; 
 
#define DECLARE_IDispatch_METHODS \ 
        STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) ; \ 
        \ 
        STDMETHOD(GetTypeInfo)(\ 
        THIS_ \ 
        UINT itinfo,\ 
        LCID lcid,\ 
        ITypeInfo FAR* FAR* pptinfo) ;\ 
        \ 
        STDMETHOD(GetIDsOfNames)( \ 
        THIS_ \ 
        REFIID riid,\ 
        OLECHAR FAR* FAR* rgszNames,\ 
        UINT cNames,\ 
        LCID lcid, \ 
        DISPID FAR* rgdispid) ;\ 
        \ 
        STDMETHOD(Invoke)(\ 
        THIS_\ 
        DISPID dispidMember,\ 
        REFIID riid,\ 
        LCID lcid,\ 
        WORD wFlags,\ 
        DISPPARAMS FAR* pdispparams,\ 
        VARIANT FAR* pvarResult,\ 
        EXCEPINFO FAR* pexcepinfo,\ 
        UINT FAR* puArgErr) ; 
 
#define DECLARE_IADs_METHODS  \ 
        STDMETHOD(get_Name)(THIS_ BSTR FAR* retval) ;        \ 
        STDMETHOD(get_ADsPath)(THIS_ BSTR FAR* retval); \ 
        STDMETHOD(get_GUID)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(get_Class)(THIS_ BSTR FAR* retval);\ 
        STDMETHOD(get_Parent)(THIS_ BSTR FAR* retval);\ 
        STDMETHOD(get_Schema)(THIS_ BSTR FAR* retval);\ 
        STDMETHOD(SetInfo)(THIS) ;                           \ 
        STDMETHOD(GetInfo)(THIS) ; \ 
        STDMETHOD(Get)(THIS_ BSTR bstrName, VARIANT FAR* pvProp) ; \ 
        STDMETHOD(Put)(THIS_ BSTR bstrName, VARIANT vProp) ;        \ 
        STDMETHOD(GetEx)(THIS_ BSTR bstrName, VARIANT FAR* pvProp) ; \ 
        STDMETHOD(PutEx)(THIS_ long lnControlCode, BSTR bstrName, VARIANT vProp) ; \ 
        STDMETHOD(GetInfoEx)(THIS_ VARIANT vProperties, long lnReserved); 
 
 
#define DECLARE_IADsStatus_METHODS\ 
    STDMETHOD(get_Code)(THIS_ long FAR* plStatusCode);\ 
    STDMETHOD(get_String)(THIS_ BSTR FAR* pbstrStatusString); 
 
 
#define DECLARE_IADsContainer_METHODS \ 
        STDMETHOD(get_Count)(THIS_ long FAR* retval) ;      \ 
        STDMETHOD(get_Filter)(THIS_ VARIANT FAR* pVar) ;    \ 
        STDMETHOD(put_Filter)(THIS_ VARIANT Var) ;          \ 
        STDMETHOD(get_Hints)(THIS_ VARIANT FAR* pvFilter);  \ 
        STDMETHOD(put_Hints)(THIS_ VARIANT vHints)       ;  \ 
        STDMETHOD(GetObject)(THIS_ BSTR ClassName, BSTR RelativeName, IDispatch * FAR* ppObject) ;\ 
        STDMETHOD(get__NewEnum)(THIS_ IUnknown * FAR* retval) ; \ 
        STDMETHOD(Create)(THIS_ BSTR ClassName, BSTR RelativeName, IDispatch * FAR* ppObject) ;\ 
        STDMETHOD(Delete)(THIS_ BSTR bstrClassName, BSTR bstrRelativeName) ;\ 
        STDMETHOD(CopyHere)(THIS_ BSTR SourceName, BSTR NewName, IDispatch * FAR* ppObject) ;\ 
        STDMETHOD(MoveHere)(THIS_ BSTR SourceName, BSTR NewName, IDispatch * FAR* ppObject) ; 
 
#define DECLARE_IADsNamespaces_METHODS \ 
    STDMETHOD(get_DefaultContainer)(THIS_ BSTR FAR* retval);\ 
    STDMETHOD(put_DefaultContainer)(THIS_ BSTR bstrDefaultContainer); 
 
/* IADsUser methods */ 
#define DECLARE_IADsUser_METHODS      \ 
   STDMETHOD(get_BadLoginAddress)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(get_BadLoginCount)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(get_LastLogin)(THIS_ DATE FAR* retval) ;\ 
    STDMETHOD(get_LastLogoff)(THIS_ DATE FAR* retval) ;\ 
    STDMETHOD(get_LastFailedLogin)(THIS_ DATE FAR* retval) ;\ 
    STDMETHOD(get_PasswordLastChanged)(THIS_ DATE FAR* retval) ;\ 
    STDMETHOD(get_Description)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_Description)(THIS_ BSTR bstrDescription) ;\ 
    STDMETHOD(get_Division)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_Division)(THIS_ BSTR bstrDivision) ;\ 
    STDMETHOD(get_Department)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_Department)(THIS_ BSTR bstrDepartment) ;\ 
    STDMETHOD(get_EmployeeID)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_EmployeeID)(THIS_ BSTR bstrEmployeeID) ;\ 
    STDMETHOD(get_FullName)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_FullName)(THIS_ BSTR bstrFullName) ;\ 
    STDMETHOD(get_FirstName)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_FirstName)(THIS_ BSTR bstrFirstName) ;\ 
    STDMETHOD(get_LastName)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_LastName)(THIS_ BSTR bstrLastName) ;\ 
    STDMETHOD(get_OtherName)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_OtherName)(THIS_ BSTR bstrOtherName) ;\ 
    STDMETHOD(get_NamePrefix)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_NamePrefix)(THIS_ BSTR bstrNamePrefix) ;\ 
    STDMETHOD(get_NameSuffix)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_NameSuffix)(THIS_ BSTR bstrNameSuffix) ;\ 
    STDMETHOD(get_Title)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_Title)(THIS_ BSTR bstrTitle) ;\ 
    STDMETHOD(get_Manager)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_Manager)(THIS_ BSTR bstrManager) ;\ 
    STDMETHOD(get_TelephoneNumber)(THIS_ VARIANT FAR* retval) ;\ 
    STDMETHOD(put_TelephoneNumber)(THIS_ VARIANT vTelephoneNumber) ;\ 
    STDMETHOD(get_TelephoneHome)(THIS_ VARIANT FAR* retval) ;\ 
    STDMETHOD(put_TelephoneHome)(THIS_ VARIANT vTelephoneHome );\ 
    STDMETHOD(get_TelephoneMobile)(THIS_ VARIANT FAR* retval) ;\ 
    STDMETHOD(put_TelephoneMobile)(THIS_ VARIANT vTelephoneMobile) ;\ 
    STDMETHOD(get_TelephonePager)(THIS_ VARIANT FAR* retval) ;\ 
    STDMETHOD(put_TelephonePager)(THIS_ VARIANT vTelephonePager) ;\ 
    STDMETHOD(get_FaxNumber)(THIS_ VARIANT FAR* retval) ;\ 
    STDMETHOD(put_FaxNumber)(THIS_ VARIANT vFaxNumber) ;\ 
    STDMETHOD(get_OfficeLocations)(THIS_ VARIANT FAR* retval) ;\ 
    STDMETHOD(put_OfficeLocations)(THIS_ VARIANT vOfficeLocation) ;\ 
    STDMETHOD(get_PostalAddresses)(THIS_ VARIANT FAR* retval) ;\ 
    STDMETHOD(put_PostalAddresses)(THIS_ VARIANT vPostalAddresses) ;\ 
    STDMETHOD(get_PostalCodes)(THIS_ VARIANT FAR* retval) ;\ 
    STDMETHOD(put_PostalCodes)(THIS_ VARIANT vPostalCodes) ;\ 
    STDMETHOD(get_SeeAlso)(THIS_ VARIANT FAR* retval) ;\ 
    STDMETHOD(put_SeeAlso)(THIS_ VARIANT vSeeAlso) ;\ 
    STDMETHOD(get_AccountDisabled)(THIS_ VARIANT_BOOL FAR* retval) ;\ 
    STDMETHOD(put_AccountDisabled)(THIS_ VARIANT_BOOL fAccountDisabled) ;\ 
    STDMETHOD(get_AccountExpirationDate)(THIS_ DATE FAR* retval) ;\ 
    STDMETHOD(put_AccountExpirationDate)(THIS_ DATE daAccountExpirationDate) ;\ 
    STDMETHOD(get_GraceLoginsAllowed)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(put_GraceLoginsAllowed)(THIS_ long lnGraceLoginsAllowed) ;\ 
    STDMETHOD(get_GraceLoginsRemaining)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(put_GraceLoginsRemaining)(THIS_ long lnGraceLoginsRemaining) ;\ 
    STDMETHOD(get_IsAccountLocked)(THIS_ VARIANT_BOOL FAR* retval) ;\ 
    STDMETHOD(put_IsAccountLocked)(THIS_ VARIANT_BOOL fIsAccountLocked) ;\ 
    STDMETHOD(get_LoginHours)(THIS_ VARIANT FAR* retval) ;\ 
    STDMETHOD(put_LoginHours)(THIS_ VARIANT vLoginHours) ;\ 
    STDMETHOD(get_LoginWorkstations)(THIS_ VARIANT FAR* retval) ;\ 
    STDMETHOD(put_LoginWorkstations)(THIS_ VARIANT vLoginWorkstations) ;\ 
    STDMETHOD(get_MaxLogins)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(put_MaxLogins)(THIS_ long lnMaxLogins) ;\ 
    STDMETHOD(get_MaxStorage)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(put_MaxStorage)(THIS_ long lnMaxStorage) ;\ 
    STDMETHOD(get_PasswordExpirationDate)(THIS_ DATE FAR* retval) ;\ 
    STDMETHOD(put_PasswordExpirationDate)(THIS_ DATE daPasswordExpirationDate) ;\ 
    STDMETHOD(get_PasswordMinimumLength)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(put_PasswordMinimumLength)(THIS_ long lnPasswordMinimumLength) ;\ 
    STDMETHOD(get_PasswordRequired)(THIS_ VARIANT_BOOL FAR* retval) ;\ 
    STDMETHOD(put_PasswordRequired)(THIS_ VARIANT_BOOL fPasswordRequired) ;\ 
    STDMETHOD(get_RequireUniquePassword)(THIS_ VARIANT_BOOL FAR* retval) ;\ 
    STDMETHOD(put_RequireUniquePassword)(THIS_ VARIANT_BOOL fRequireUniquePassword) ;\ 
    STDMETHOD(get_EmailAddress)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_EmailAddress)(THIS_ BSTR bstrEmailAddress) ;\ 
    STDMETHOD(get_HomeDirectory)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_HomeDirectory)(THIS_ BSTR bstrHomeDirectory) ;\ 
    STDMETHOD(get_Languages)(THIS_ VARIANT FAR* retval) ;\ 
    STDMETHOD(put_Languages)(THIS_ VARIANT vLanguages) ;\ 
    STDMETHOD(get_Profile)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_Profile)(THIS_ BSTR bstrProfile) ;\ 
    STDMETHOD(get_LoginScript)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_LoginScript)(THIS_ BSTR bstrLoginScript) ;\ 
    STDMETHOD(get_Picture)(THIS_ VARIANT FAR* retval) ;\ 
    STDMETHOD(put_Picture)(THIS_ VARIANT vPicture) ;\ 
    STDMETHOD(get_HomePage)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_HomePage)(THIS_ BSTR bstrHomePage) ;\ 
    STDMETHOD(Groups)(THIS_ IADsMembers FAR* FAR* ppGroups) ;\ 
    STDMETHOD(SetPassword)(THIS_ BSTR NewPassword) ;\ 
    STDMETHOD(ChangePassword)(THIS_ BSTR bstrOldPassword, BSTR bstrNewPassword) ;\ 
 
 
/* IADsDomain methods */ 
#define DECLARE_IADsDomain_METHODS \ 
        STDMETHOD(get_MinPasswordLength)(THIS_ long FAR* retval) ;\ 
        STDMETHOD(put_MinPasswordLength)(THIS_ long lnMinPasswordLength) ;\ 
        STDMETHOD(get_MinPasswordAge)(THIS_ long FAR* retval) ;\ 
        STDMETHOD(put_MinPasswordAge)(THIS_ long lnMinPasswordAge) ;\ 
        STDMETHOD(get_MaxPasswordAge)(THIS_ long FAR* retval) ;\ 
        STDMETHOD(put_MaxPasswordAge)(THIS_ long lnMaxPasswordAge) ;\ 
        STDMETHOD(get_MaxBadPasswordsAllowed)(THIS_ long FAR* retval) ;\ 
        STDMETHOD(put_MaxBadPasswordsAllowed)(THIS_ long lnMaxBadPasswordsAllowed) ;\ 
        STDMETHOD(get_PasswordHistoryLength)(THIS_ long FAR* retval) ;\ 
        STDMETHOD(put_PasswordHistoryLength)(THIS_ long lnPasswordHistoryLength) ;\ 
        STDMETHOD(get_PasswordAttributes)(THIS_ long FAR* retval) ;\ 
        STDMETHOD(put_PasswordAttributes)(THIS_ long lnPasswordAttributes) ;\ 
        STDMETHOD(get_AutoUnlockInterval)(THIS_ long FAR* retval) ;\ 
        STDMETHOD(put_AutoUnlockInterval)(THIS_ long lnAutoUnlockInterval) ;\ 
        STDMETHOD(get_LockoutObservationInterval)(THIS_ long FAR* retval) ;\ 
        STDMETHOD(put_LockoutObservationInterval)(THIS_ long lnLockoutObservationInterval) ;\ 
        STDMETHOD(get_IsWorkgroup)(THIS_ VARIANT_BOOL FAR* retval); 
 
 
/* IADsComputer methods */ 
#define DECLARE_IADsComputer_METHODS \ 
        STDMETHOD(get_ComputerID)(THIS_ BSTR FAR* retval) ; \ 
        STDMETHOD(get_Site)(THIS_ BSTR FAR* retval) ; \ 
        STDMETHOD(get_Description)(THIS_ BSTR FAR* retval) ; \ 
        STDMETHOD(put_Description)(THIS_ BSTR bstrDescription) ; \ 
        STDMETHOD(get_Location)(THIS_ BSTR FAR* retval) ; \ 
        STDMETHOD(put_Location)(THIS_ BSTR bstrLocation) ; \ 
        STDMETHOD(get_PrimaryUser)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(put_PrimaryUser)(THIS_ BSTR bstrPrimaryUser) ;\ 
        STDMETHOD(get_Owner)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(put_Owner)(THIS_ BSTR bstrOwner) ;\ 
        STDMETHOD(get_Division)(THIS_ BSTR FAR* retval) ; \ 
        STDMETHOD(put_Division)(THIS_ BSTR bstrDivision) ; \ 
        STDMETHOD(get_Department)(THIS_ BSTR FAR* retval) ; \ 
        STDMETHOD(put_Department)(THIS_ BSTR bstrDepartment) ; \ 
        STDMETHOD(get_Role)(THIS_ BSTR FAR* retval) ; \ 
        STDMETHOD(put_Role)(THIS_ BSTR bstrRole) ; \ 
        STDMETHOD(get_OperatingSystem)(THIS_ BSTR FAR* retval); \ 
        STDMETHOD(put_OperatingSystem)(THIS_ BSTR bstrOperatingSystem); \ 
        STDMETHOD(get_OperatingSystemVersion)(THIS_ BSTR FAR* retval); \ 
        STDMETHOD(put_OperatingSystemVersion)(THIS_ BSTR bstrOperatingSystemVersion); \ 
        STDMETHOD(get_Model)(THIS_ BSTR FAR* retval) ; \ 
        STDMETHOD(put_Model)(THIS_ BSTR bstrModel) ; \ 
        STDMETHOD(get_Processor)(THIS_ BSTR FAR* retval) ; \ 
        STDMETHOD(put_Processor)(THIS_ BSTR bstrProcessor) ; \ 
        STDMETHOD(get_ProcessorCount)(THIS_ BSTR FAR* retval) ; \ 
        STDMETHOD(put_ProcessorCount)(THIS_ BSTR bstrProcessorCount) ; \ 
        STDMETHOD(get_MemorySize)(THIS_ BSTR FAR* retval) ; \ 
        STDMETHOD(put_MemorySize)(THIS_ BSTR bstrMemorySize) ; \ 
        STDMETHOD(get_StorageCapacity)(THIS_ BSTR FAR* retval) ; \ 
        STDMETHOD(put_StorageCapacity)(THIS_ BSTR bstrStorageCapacity); \ 
        STDMETHOD(get_NetAddresses)(THIS_ VARIANT FAR* retval); \ 
        STDMETHOD(put_NetAddresses)(THIS_ VARIANT vNetAddresses); 
 
 
#define DECLARE_IADsComputerOperations_METHODS \ 
        STDMETHOD(Status)(THIS_ IDispatch * FAR* ppObject) ; \ 
        STDMETHOD(Shutdown)(THIS_ VARIANT_BOOL bReboot) ; 
 
 
#define DECLARE_IADsGroup_METHODS \ 
        STDMETHOD(get_Description)(THIS_ BSTR FAR* retval) ; \ 
        STDMETHOD(put_Description)(THIS_ BSTR bstrDescription) ; \ 
        STDMETHOD(Members)(THIS_ IADsMembers FAR* FAR* ppMembers) ; \ 
        STDMETHOD(IsMember)(THIS_ BSTR bstrMember, VARIANT_BOOL FAR* bMember) ;\ 
        STDMETHOD(Add)(THIS_ BSTR bstrNewItem) ;\ 
        STDMETHOD(Remove)(THIS_ BSTR bstrItemToBeRemoved) ; 
 
#define DECLARE_IADsMembers_METHODS \ 
        STDMETHOD(get_Count)(THIS_ long FAR* plCount) ;\ 
        STDMETHOD(get__NewEnum)(THIS_ IUnknown * FAR* ppEnumerator) ;\ 
        STDMETHOD(get_Filter)(THIS_ VARIANT FAR* pvFilter) ;\ 
        STDMETHOD(put_Filter)(THIS_ VARIANT pvFilter) ;\ 
 
 
 
#define DECLARE_IADsPrintQueue_METHODS \ 
    STDMETHOD(get_Model)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_Model)(THIS_ BSTR bstrModel) ;\ 
    STDMETHOD(get_Datatype)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_Datatype)(THIS_ BSTR bstrDatatype) ;\ 
    STDMETHOD(get_Description)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_Description)(THIS_ BSTR bstrDescription) ;\ 
    STDMETHOD(get_Location)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_Location)(THIS_ BSTR bstrLocation) ;\ 
    STDMETHOD(get_Priority)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(put_Priority)(THIS_ long lnPriority) ;\ 
    STDMETHOD(get_StartTime)(THIS_ DATE FAR* retval) ;\ 
    STDMETHOD(put_StartTime)(THIS_ DATE daStartTime) ;\ 
    STDMETHOD(get_UntilTime)(THIS_ DATE FAR* retval) ;\ 
    STDMETHOD(put_UntilTime)(THIS_ DATE daUntilTime) ;\ 
    STDMETHOD(get_DefaultJobPriority)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(put_DefaultJobPriority)(THIS_ long lnDefaultJobPriority) ;\ 
    STDMETHOD(get_BannerPage)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_BannerPage)(THIS_ BSTR bstrBannerPage) ;\ 
    STDMETHOD(get_PrinterPath)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_PrinterPath)(THIS_ BSTR bstrHostComputer) ;\ 
    STDMETHOD(get_PrintProcessor)(THIS_ BSTR FAR* retval);\ 
    STDMETHOD(put_PrintProcessor)(THIS_ BSTR bstrPrintProcessor);\ 
    STDMETHOD(get_PrintDevices)(THIS_ VARIANT FAR* retval);\ 
    STDMETHOD(put_PrintDevices)(THIS_ VARIANT vPorts);\ 
    STDMETHOD(get_NetAddresses)(THIS_ VARIANT FAR* retval);\ 
    STDMETHOD(put_NetAddresses)(THIS_ VARIANT vNetAddresses);\ 
 
#define DECLARE_IADsPrintQueueOperations_METHODS \ 
    STDMETHOD(get_Status)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(PrintJobs)(THIS_ IADsCollection * FAR* ppObject) ;\ 
    STDMETHOD(Pause)(THIS) ;\ 
    STDMETHOD(Resume)(THIS) ;\ 
    STDMETHOD(Purge)(THIS) ; 
 
 
#define DECLARE_IADsPrintJob_METHODS \ 
    STDMETHOD(get_HostPrintQueue)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(get_User)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(get_UserPath)(THIS_ BSTR FAR* retval);\ 
    STDMETHOD(get_Size)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(get_TimeSubmitted)(THIS_ DATE FAR* retval) ;\ 
    STDMETHOD(get_TotalPages)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(get_Description)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_Description)(THIS_ BSTR bstrDescription) ;\ 
    STDMETHOD(get_Priority)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(put_Priority)(THIS_ long lnPriority) ;\ 
    STDMETHOD(get_StartTime)(THIS_ DATE FAR* retval) ;\ 
    STDMETHOD(put_StartTime)(THIS_ DATE daStartTime) ;\ 
    STDMETHOD(get_UntilTime)(THIS_ DATE FAR* retval) ;\ 
    STDMETHOD(put_UntilTime)(THIS_ DATE daUntilTime) ;\ 
    STDMETHOD(get_Notify)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_Notify)(THIS_ BSTR bstrNotify) ;\ 
    STDMETHOD(get_NotifyPath)(THIS_ BSTR FAR* retval);\ 
    STDMETHOD(put_NotifyPath)(THIS_ BSTR bstrNotifyPath);\ 
 
#define DECLARE_IADsPrintJobOperations_METHODS \ 
    STDMETHOD(get_Position)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(put_Position)(THIS_ long lnPosition) ;\ 
    STDMETHOD(get_TimeElapsed)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(get_PagesPrinted)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(get_Status)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(Pause)(THIS) ;\ 
    STDMETHOD(Resume)(THIS) ;\ 
    STDMETHOD(Remove)(THIS) ; 
 
#define DECLARE_IADsCollection_METHODS \ 
    STDMETHOD(get__NewEnum)(THIS_ IUnknown * FAR* ppEnumerator) ;\ 
    STDMETHOD(GetObject)(THIS_ BSTR bstrName, VARIANT FAR* pvItem);\ 
    STDMETHOD(Add)(THIS_ BSTR bstrName, VARIANT vItem);\ 
    STDMETHOD(Remove)(THIS_ BSTR bstrItemToBeRemoved); 
 
 
#define DECLARE_IEnumVARIANT_METHODS \ 
    STDMETHOD(Next)(ULONG cElements, \ 
                    VARIANT FAR* pvar,\ 
                    ULONG FAR* pcElementFetched);\ 
    STDMETHOD(Skip)(ULONG cElements);\ 
    STDMETHOD(Reset)();\ 
    STDMETHOD(Clone)(IEnumVARIANT FAR* FAR* ppenum); 
 
 
#define DECLARE_IADsService_METHODS \ 
    STDMETHOD(get_HostComputer)(THIS_ BSTR FAR* pbstrHostComputer) ;\ 
    STDMETHOD(put_HostComputer)(THIS_ BSTR bstrHostComputer) ;\ 
    STDMETHOD(get_DisplayName)(THIS_ BSTR FAR* pbstrDisplayName) ;\ 
    STDMETHOD(put_DisplayName)(THIS_ BSTR bstrDisplayName) ;\ 
    STDMETHOD(get_Version)(THIS_ BSTR FAR* pbstrVersion) ;\ 
    STDMETHOD(put_Version)(THIS_ BSTR bstrVersion) ;\ 
    STDMETHOD(get_ServiceType)(THIS_ long FAR* plServiceType) ;\ 
    STDMETHOD(put_ServiceType)(THIS_ long lServiceType) ;\ 
    STDMETHOD(get_StartType)(THIS_ long FAR* plStartType) ;\ 
    STDMETHOD(put_StartType)(THIS_ long lStartType) ;\ 
    STDMETHOD(get_Path)(THIS_ BSTR FAR* pbstrPath) ;\ 
    STDMETHOD(put_Path)(THIS_ BSTR bstrPath) ;\ 
    STDMETHOD(get_StartupParameters)(THIS_ BSTR FAR* pbstrStartupParameters) ;\ 
    STDMETHOD(put_StartupParameters)(THIS_ BSTR bstrStartupParameters) ;\ 
    STDMETHOD(get_ErrorControl)(THIS_ long FAR* plErrorControl) ;\ 
    STDMETHOD(put_ErrorControl)(THIS_ long lErrorControl) ;\ 
    STDMETHOD(get_LoadOrderGroup)(THIS_ BSTR FAR* pbstrLoadOrderGroup) ;\ 
    STDMETHOD(put_LoadOrderGroup)(THIS_ BSTR bstrLoadOrderGroup) ;\ 
    STDMETHOD(get_ServiceAccountName)(THIS_ BSTR FAR* pbstrServiceAccountName) ;\ 
    STDMETHOD(put_ServiceAccountName)(THIS_ BSTR bstrServiceAccountName) ;\ 
    STDMETHOD(get_ServiceAccountPath)(THIS_ BSTR FAR* retval);\ 
    STDMETHOD(put_ServiceAccountPath)(THIS_ BSTR bstrServiceAccountPath);\ 
    STDMETHOD(get_Dependencies)(THIS_ VARIANT FAR* pv);\ 
    STDMETHOD(put_Dependencies)(THIS_ VARIANT v); \ 
 
 
#define  DECLARE_IADsServiceOperations_METHODS \ 
    STDMETHOD(get_Status)(THIS_ long FAR* retval) ;\ 
    STDMETHOD(SetPassword)(THIS_ BSTR bstrNewPassword) ;\ 
    STDMETHOD(Start)(THIS) ;\ 
    STDMETHOD(Stop)(THIS) ;\ 
    STDMETHOD(Pause)(THIS) ;\ 
    STDMETHOD(Continue)(THIS) ; 
 
#define  DECLARE_IADsFileService_METHODS \ 
    STDMETHOD(get_Description)(THIS_ BSTR FAR* pbstrDescription) ;\ 
    STDMETHOD(put_Description)(THIS_ BSTR bstrDescription) ;\ 
    STDMETHOD(get_MaxUserCount)(THIS_ long FAR* plMaxUserCount) ;\ 
    STDMETHOD(put_MaxUserCount)(THIS_ long lMaxUserCount) ; 
 
#define  DECLARE_IADsFileServiceOperations_METHODS \ 
    STDMETHOD(Sessions)(THIS_ IADsCollection FAR* FAR* ppSessions) ;\ 
    STDMETHOD(Resources)(THIS_ IADsCollection FAR* FAR* ppResources) ; 
 
 
#define  DECLARE_IADsSession_METHODS \ 
    STDMETHOD(get_User)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(get_UserPath)(THIS_ BSTR FAR* retval);\ 
    STDMETHOD(get_Computer)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(get_ComputerPath)(THIS_ BSTR FAR* retval);\ 
    STDMETHOD(get_ConnectTime)(THIS_ LONG FAR* retval) ;\ 
    STDMETHOD(get_IdleTime)(THIS_ LONG FAR* retval) ; 
 
 
#define  DECLARE_IADsFileShare_METHODS \ 
    STDMETHOD(get_CurrentUserCount)(THIS_ LONG FAR* retval) ;\ 
    STDMETHOD(get_Description)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_Description)(THIS_ BSTR bstrDescription) ;\ 
    STDMETHOD(get_HostComputer)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_HostComputer)(THIS_ BSTR bstrHostComputer) ;\ 
    STDMETHOD(get_Path)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(put_Path)(THIS_ BSTR bstrPath) ;\ 
    STDMETHOD(get_MaxUserCount)(THIS_ LONG FAR* retval) ;\ 
    STDMETHOD(put_MaxUserCount)(THIS_ LONG  lMaxUserCount) ; 
 
#define DECLARE_IADsResource_METHODS \ 
    STDMETHOD(get_User)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(get_UserPath)(THIS_ BSTR FAR* retval);\ 
    STDMETHOD(get_Path)(THIS_ BSTR FAR* retval) ;\ 
    STDMETHOD(get_LockCount)(THIS_ long FAR* retval) ; 
 
 
#define DECLARE_IADsClass_METHODS \ 
        STDMETHOD(get_PrimaryInterface)(THIS_ BSTR FAR* pbstrGUID) ;\ 
        STDMETHOD(get_CLSID)(THIS_ BSTR FAR* pbstrCLSID) ;\ 
        STDMETHOD(put_CLSID)(THIS_ BSTR bstrCLSID) ;\ 
        STDMETHOD(get_OID)(THIS_ BSTR FAR* pbstrOID) ;\ 
        STDMETHOD(put_OID)(THIS_ BSTR bstrOID) ;\ 
        STDMETHOD(get_Abstract)(THIS_ VARIANT_BOOL FAR* pfAbstract) ;\ 
        STDMETHOD(put_Abstract)(THIS_ VARIANT_BOOL fAbstract) ;\ 
        STDMETHOD(get_Auxiliary)(THIS_ VARIANT_BOOL FAR* pfAuxiliary) ;\ 
        STDMETHOD(put_Auxiliary)(THIS_ VARIANT_BOOL fAuxiliary) ;\ 
        STDMETHOD(get_MandatoryProperties)(THIS_ VARIANT FAR* pvMandatoryProperties) ;\ 
        STDMETHOD(put_MandatoryProperties)(THIS_ VARIANT vMandatoryProperties) ;\ 
        STDMETHOD(get_OptionalProperties)(THIS_ VARIANT FAR* pvOptionalProperties) ;\ 
        STDMETHOD(put_OptionalProperties)(THIS_ VARIANT vOptionalProperties) ;\ 
        STDMETHOD(get_NamingProperties)(THIS_ VARIANT FAR* pvNamingProperties);\ 
        STDMETHOD(put_NamingProperties)(THIS_ VARIANT vNamingProperties) ;\ 
        STDMETHOD(get_DerivedFrom)(THIS_ VARIANT FAR* pvDerivedFrom) ;\ 
        STDMETHOD(put_DerivedFrom)(THIS_ VARIANT vDerivedFrom) ;\ 
        STDMETHOD(get_AuxDerivedFrom)(THIS_ VARIANT FAR* pvAuxDerivedFrom) ;\ 
        STDMETHOD(put_AuxDerivedFrom)(THIS_ VARIANT vAuxDerivedFrom) ;\ 
        STDMETHOD(get_PossibleSuperiors)(THIS_ VARIANT FAR* pvPossSuperiors);\ 
        STDMETHOD(put_PossibleSuperiors)(THIS_ VARIANT vPossSuperiors) ;\ 
        STDMETHOD(get_Containment)(THIS_ VARIANT FAR* pvContainment);\ 
        STDMETHOD(put_Containment)(THIS_ VARIANT vContainment) ;\ 
        STDMETHOD(get_Container)(THIS_ VARIANT_BOOL FAR* pfContainer);\ 
        STDMETHOD(put_Container)(THIS_ VARIANT_BOOL fContainer) ;\ 
        STDMETHOD(get_HelpFileName)(THIS_ BSTR FAR* pbstrHelpfile) ;\ 
        STDMETHOD(put_HelpFileName)(THIS_ BSTR bstrHelpfile) ;\ 
        STDMETHOD(get_HelpFileContext)(THIS_ long FAR* plHelpContext) ;\ 
        STDMETHOD(put_HelpFileContext)(THIS_ long lHelpContext) ; \ 
        STDMETHOD(Qualifiers)(THIS_ IADsCollection FAR* FAR* ppQualifiers) ; 
 
 
#define DECLARE_IADsProperty_METHODS \ 
        STDMETHOD(get_OID)(THIS_ BSTR FAR* pbstrOID) ;\ 
        STDMETHOD(put_OID)(THIS_ BSTR bstrOID) ;\ 
        STDMETHOD(get_Syntax)(THIS_ BSTR FAR* pbstrSyntax) ;\ 
        STDMETHOD(put_Syntax)(THIS_ BSTR bstrSyntax) ;\ 
        STDMETHOD(get_MaxRange)(THIS_ long FAR* plMaxRange) ;\ 
        STDMETHOD(put_MaxRange)(THIS_ long lMaxRange) ;\ 
        STDMETHOD(get_MinRange)(THIS_ long FAR* plMinRange) ;\ 
        STDMETHOD(put_MinRange)(THIS_ long lMinRange) ;\ 
        STDMETHOD(get_MultiValued)(THIS_ VARIANT_BOOL FAR* pfMultiValued) ;\ 
        STDMETHOD(put_MultiValued)(THIS_ VARIANT_BOOL fMultiValued) ;\ 
        STDMETHOD(Qualifiers)(THIS_ IADsCollection FAR* FAR* ppQualifiers) ; 
 
#define DECLARE_IADsSyntax_METHODS \ 
        STDMETHOD(get_OleAutoDataType)(THIS_ long FAR* plOleAutoDataType) ;\ 
        STDMETHOD(put_OleAutoDataType)(THIS_ long lOleAutoDataType) ; 
 
#define DECLARE_IADsLocality_METHODS \ 
        STDMETHOD(get_Description)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(put_Description)(THIS_ BSTR bstrDescription) ;\ 
        STDMETHOD(get_LocalityName)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(put_LocalityName)(THIS_ BSTR bstrLocalityName) ;\ 
        STDMETHOD(get_PostalAddress)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(put_PostalAddress)(THIS_ BSTR bstrPostalAddress) ;\ 
        STDMETHOD(get_SeeAlso)(THIS_ VARIANT FAR* retval) ;\ 
        STDMETHOD(put_SeeAlso)(THIS_ VARIANT vSeeAlso) ; 
 
 
#define DECLARE_IADsO_METHODS \ 
        STDMETHOD(get_Description)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(put_Description)(THIS_ BSTR bstrDescription) ;\ 
        STDMETHOD(get_LocalityName)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(put_LocalityName)(THIS_ BSTR bstrLocalityName) ;\ 
        STDMETHOD(get_PostalAddress)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(put_PostalAddress)(THIS_ BSTR bstrPostalAddress) ;\ 
        STDMETHOD(get_TelephoneNumber)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(put_TelephoneNumber)(THIS_ BSTR bstrTelephoneNumber) ;\ 
        STDMETHOD(get_FaxNumber)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(put_FaxNumber)(THIS_ BSTR bstrFaxNumber) ;\ 
        STDMETHOD(get_SeeAlso)(THIS_ VARIANT FAR* retval) ;\ 
        STDMETHOD(put_SeeAlso)(THIS_ VARIANT vSeeAlso) ; 
 
#define DECLARE_IADsOU_METHODS \ 
        STDMETHOD(get_Description)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(put_Description)(THIS_ BSTR bstrDescription) ;\ 
        STDMETHOD(get_LocalityName)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(put_LocalityName)(THIS_ BSTR bstrLocalityName) ;\ 
        STDMETHOD(get_PostalAddress)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(put_PostalAddress)(THIS_ BSTR bstrPostalAddress) ;\ 
        STDMETHOD(get_TelephoneNumber)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(put_TelephoneNumber)(THIS_ BSTR bstrTelephoneNumber) ;\ 
        STDMETHOD(get_FaxNumber)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(put_FaxNumber)(THIS_ BSTR bstrFaxNumber) ;\ 
        STDMETHOD(get_SeeAlso)(THIS_ VARIANT FAR* retval) ;\ 
        STDMETHOD(put_SeeAlso)(THIS_ VARIANT vSeeAlso) ;\ 
        STDMETHOD(get_BusinessCategory)(THIS_ BSTR FAR* retval) ;\ 
        STDMETHOD(put_BusinessCategory)(THIS_ BSTR bstrBusinessCategory) ; 
 
#define DECLARE_IDSNamespace_METHODS \ 
        STDMETHOD(OpenDSObject)(     \ 
            THIS_ LPWSTR lpszDNName, \ 
            LPWSTR lpszUserName,     \ 
            LPWSTR lpszPassword,     \ 
            REFIID riid,             \ 
            void * * ppADsObj      \ 
            ); 
 
#endif