410 lines
17 KiB
C
410 lines
17 KiB
C
//========================================================================
|
|
// Copyright (C) 1997 Microsoft Corporation
|
|
// Author: RameshV
|
|
// Description: This file has been generated. Pl look at the .c file
|
|
//========================================================================
|
|
|
|
typedef struct _STORE_HANDLE { // this is what is used almost always
|
|
DWORD MustBeZero; // for future use
|
|
LPWSTR Location; // where does this refer to?
|
|
LPWSTR UserName; // who is the user?
|
|
LPWSTR Password; // what is the password?
|
|
DWORD AuthFlags; // what permission was this opened with?
|
|
HANDLE ADSIHandle; // handle to within ADSI
|
|
ADS_SEARCH_HANDLE SearchHandle; // any searches going on?
|
|
LPVOID Memory; // memory allocated for this call..
|
|
DWORD MemSize; // how much was really allocated?
|
|
BOOL SearchStarted; // Did we start the search?
|
|
} STORE_HANDLE, *LPSTORE_HANDLE, *PSTORE_HANDLE;
|
|
|
|
|
|
DWORD
|
|
StoreInitHandle( // initialize a handle
|
|
IN OUT STORE_HANDLE *hStore, // will be filled in with stuff..
|
|
IN DWORD Reserved, // must be zero -- for future use
|
|
IN LPWSTR Domain, // OPTIONAL NULL==>default Domain
|
|
IN LPWSTR UserName, // OPTIONAL NULL==>default credentials
|
|
IN LPWSTR Password, // OPTIONAL used only if UserName given
|
|
IN DWORD AuthFlags // OPTIONAL 0 ==> default??????
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
StoreCleanupHandle( // cleanup the handle
|
|
IN OUT LPSTORE_HANDLE hStore,
|
|
IN DWORD Reserved
|
|
) ;
|
|
|
|
|
|
enum {
|
|
StoreGetChildType,
|
|
StoreGetAbsoluteSameServerType,
|
|
StoreGetAbsoluteOtherServerType
|
|
} _StoreGetType;
|
|
|
|
|
|
DWORD
|
|
StoreGetHandle( // get handle to child object, absolute object..
|
|
IN OUT LPSTORE_HANDLE hStore, // this gets modified..
|
|
IN DWORD Reserved,
|
|
IN DWORD StoreGetType, // same server? just a simple child?
|
|
IN LPWSTR Path,
|
|
IN OUT STORE_HANDLE *hStoreOut // new handle created..
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
StoreSetSearchOneLevel( // search will return everything one level below
|
|
IN OUT LPSTORE_HANDLE hStore,
|
|
IN DWORD Reserved
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
StoreSetSearchSubTree( // search will return the subtree below in ANY order
|
|
IN OUT LPSTORE_HANDLE hStore,
|
|
IN DWORD Reserved
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
StoreBeginSearch(
|
|
IN OUT LPSTORE_HANDLE hStore,
|
|
IN DWORD Reserved,
|
|
IN LPWSTR SearchFilter
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
StoreEndSearch(
|
|
IN OUT LPSTORE_HANDLE hStore,
|
|
IN DWORD Reserved
|
|
) ;
|
|
|
|
|
|
DWORD // ERROR_NO_MORE_ITEMS if exhausted
|
|
StoreSearchGetNext(
|
|
IN OUT LPSTORE_HANDLE hStore,
|
|
IN DWORD Reserved,
|
|
OUT LPSTORE_HANDLE hStoreOut
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
StoreCreateObjectVA( // create a new object - var-args ending with ADSTYPE_INVALID
|
|
IN OUT LPSTORE_HANDLE hStore,
|
|
IN DWORD Reserved,
|
|
IN LPWSTR NewObjName, // name of the new object -- must be "CN=name" types
|
|
... // fmt is AttrType, AttrName, AttrValue [AttrValueLen]
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
StoreCreateObjectL( // create the object as an array
|
|
IN OUT LPSTORE_HANDLE hStore,
|
|
IN DWORD Reserved,
|
|
IN LPWSTR NewObjName, // must be "CN=XXX" types
|
|
IN PADS_ATTR_INFO Attributes, // the required attributes
|
|
IN DWORD nAttributes // size of above array
|
|
) ;
|
|
|
|
|
|
#define StoreCreateObject StoreCreateObjectVA
|
|
|
|
|
|
DWORD
|
|
StoreDeleteObject(
|
|
IN OUT LPSTORE_HANDLE hStore,
|
|
IN DWORD Reserved,
|
|
IN LPWSTR ObjectName
|
|
) ;
|
|
|
|
|
|
//DOC StoreDeleteThisObject deletes the object defined by hStore,StoreGetType and ADsPath.
|
|
//DOC The refer to the object just the same way as for StoreGetHandle.
|
|
DWORD
|
|
StoreDeleteThisObject( // delete an object
|
|
IN LPSTORE_HANDLE hStore, // point of anchor frm which reference is done
|
|
IN DWORD Reserved, // must be zero, reserved for future use
|
|
IN DWORD StoreGetType, // path is relative, absolute or diff server?
|
|
IN LPWSTR Path // ADsPath to the object or relative path
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
StoreSetAttributesVA( // set the attributes, var_args interface (nearly similar to CreateVA)
|
|
IN OUT LPSTORE_HANDLE hStore,
|
|
IN DWORD Reserved,
|
|
IN OUT DWORD* nAttributesModified,
|
|
... // fmt is {ADSTYPE, CtrlCode, AttribName, Value}* ending in ADSTYPE_INVALID
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
StoreSetAttributesL( // PADS_ATTR_INFO array equiv for SetAttributesVA
|
|
IN OUT LPSTORE_HANDLE hStore,
|
|
IN DWORD Reserved,
|
|
IN OUT DWORD* nAttributesModified,
|
|
IN PADS_ATTR_INFO AttribArray,
|
|
IN DWORD nAttributes
|
|
) ;
|
|
|
|
|
|
typedef struct _EATTRIB { // encapsulated attribute
|
|
unsigned int Address1_present : 1;
|
|
unsigned int Address2_present : 1;
|
|
unsigned int Address3_present : 1;
|
|
unsigned int ADsPath_present : 1;
|
|
unsigned int StoreGetType_present : 1;
|
|
unsigned int Flags1_present : 1;
|
|
unsigned int Flags2_present : 1;
|
|
unsigned int Dword1_present : 1;
|
|
unsigned int Dword2_present : 1;
|
|
unsigned int String1_present : 1;
|
|
unsigned int String2_present : 1;
|
|
unsigned int String3_present : 1;
|
|
unsigned int String4_present : 1;
|
|
unsigned int Binary1_present : 1;
|
|
unsigned int Binary2_present : 1;
|
|
|
|
DWORD Address1; // character "i"
|
|
DWORD Address2; // character "j"
|
|
DWORD Address3; // character "k"
|
|
LPWSTR ADsPath; // character "p" "r" "l"
|
|
DWORD StoreGetType; // "p,r,l" ==> sameserver, child, otherserver
|
|
DWORD Flags1; // character "f"
|
|
DWORD Flags2; // character "g"
|
|
DWORD Dword1; // character "d"
|
|
DWORD Dword2; // character "e"
|
|
LPWSTR String1; // character "s"
|
|
LPWSTR String2; // character "t"
|
|
LPWSTR String3; // character "u"
|
|
LPWSTR String4; // character "v"
|
|
LPBYTE Binary1; // character "b"
|
|
DWORD BinLen1; // # of bytes of above
|
|
LPBYTE Binary2; // character "d"
|
|
DWORD BinLen2; // # of bytes of above
|
|
} EATTRIB, *PEATTRIB, *LPEATTRIB;
|
|
|
|
|
|
#define IS_ADDRESS1_PRESENT(pEA) ((pEA)->Address1_present)
|
|
#define IS_ADDRESS1_ABSENT(pEA) (!IS_ADDRESS1_PRESENT(pEA))
|
|
#define ADDRESS1_PRESENT(pEA) ((pEA)->Address1_present = 1 )
|
|
#define ADDRESS1_ABSENT(pEA) ((pEA)->Address1_present = 0 )
|
|
|
|
#define IS_ADDRESS2_PRESENT(pEA) ((pEA)->Address2_present)
|
|
#define IS_ADDRESS2_ABSENT(pEA) (!IS_ADDRESS2_PRESENT(pEA))
|
|
#define ADDRESS2_PRESENT(pEA) ((pEA)->Address2_present = 1 )
|
|
#define ADDRESS2_ABSENT(pEA) ((pEA)->Address2_present = 0 )
|
|
|
|
#define IS_ADDRESS3_PRESENT(pEA) ((pEA)->Address3_present)
|
|
#define IS_ADDRESS3_ABSENT(pEA) (!IS_ADDRESS3_PRESENT(pEA))
|
|
#define ADDRESS3_PRESENT(pEA) ((pEA)->Address3_present = 1 )
|
|
#define ADDRESS3_ABSENT(pEA) ((pEA)->Address3_present = 0 )
|
|
|
|
#define IS_ADSPATH_PRESENT(pEA) ((pEA)->ADsPath_present)
|
|
#define IS_ADSPATH_ABSENT(pEA) (!IS_ADSPATH_PRESENT(pEA))
|
|
#define ADSPATH_PRESENT(pEA) ((pEA)->ADsPath_present = 1)
|
|
#define ADSPATH_ABSENT(pEA) ((pEA)->ADsPath_present = 0)
|
|
|
|
#define IS_STOREGETTYPE_PRESENT(pEA) ((pEA)->StoreGetType_present)
|
|
#define IS_STOREGETTYPE_ABSENT(pEA) (!((pEA)->StoreGetType_present))
|
|
#define STOREGETTYPE_PRESENT(pEA) ((pEA)->StoreGetType_present = 1)
|
|
#define STOREGETTYPE_ABSENT(pEA) ((pEA)->StoreGetType_present = 0)
|
|
|
|
#define IS_FLAGS1_PRESENT(pEA) ((pEA)->Flags1_present)
|
|
#define IS_FLAGS1_ABSENT(pEA) (!((pEA)->Flags1_present))
|
|
#define FLAGS1_PRESENT(pEA) ((pEA)->Flags1_present = 1)
|
|
#define FLAGS1_ABSENT(pEA) ((pEA)->Flags1_present = 0)
|
|
|
|
#define IS_FLAGS2_PRESENT(pEA) ((pEA)->Flags2_present)
|
|
#define IS_FLAGS2_ABSENT(pEA) (!((pEA)->Flags2_present))
|
|
#define FLAGS2_PRESENT(pEA) ((pEA)->Flags2_present = 1)
|
|
#define FLAGS2_ABSENT(pEA) ((pEA)->Flags2_present = 0)
|
|
|
|
#define IS_DWORD1_PRESENT(pEA) ((pEA)->Dword1_present)
|
|
#define IS_DWORD1_ABSENT(pEA) (!((pEA)->Dword1_present))
|
|
#define DWORD1_PRESENT(pEA) ((pEA)->Dword1_present = 1)
|
|
#define DWORD1_ABSENT(pEA) ((pEA)->Dword1_present = 0)
|
|
|
|
#define IS_DWORD2_PRESENT(pEA) ((pEA)->Dword2_present)
|
|
#define IS_DWORD2_ABSENT(pEA) (!((pEA)->Dword2_present))
|
|
#define DWORD2_PRESENT(pEA) ((pEA)->Dword2_present = 1)
|
|
#define DWORD2_ABSENT(pEA) ((pEA)->Dword2_present = 0)
|
|
|
|
#define IS_STRING1_PRESENT(pEA) ((pEA)->String1_present)
|
|
#define IS_STRING1_ABSENT(pEA) (!((pEA)->String1_present))
|
|
#define STRING1_PRESENT(pEA) ((pEA)->String1_present = 1)
|
|
#define STRING1_ABSENT(pEA) ((pEA)->String1_present = 0)
|
|
|
|
#define IS_STRING2_PRESENT(pEA) ((pEA)->String2_present)
|
|
#define IS_STRING2_ABSENT(pEA) (!((pEA)->String2_present))
|
|
#define STRING2_PRESENT(pEA) ((pEA)->String2_present = 1)
|
|
#define STRING2_ABSENT(pEA) ((pEA)->String2_present = 0)
|
|
|
|
#define IS_STRING3_PRESENT(pEA) ((pEA)->String3_present)
|
|
#define IS_STRING3_ABSENT(pEA) (!((pEA)->String3_present))
|
|
#define STRING3_PRESENT(pEA) ((pEA)->String3_present = 1)
|
|
#define STRING3_ABSENT(pEA) ((pEA)->String3_present = 0)
|
|
|
|
#define IS_STRING4_PRESENT(pEA) ((pEA)->String4_present)
|
|
#define IS_STRING4_ABSENT(pEA) (!((pEA)->String4_present))
|
|
#define STRING4_PRESENT(pEA) ((pEA)->String4_present = 1)
|
|
#define STRING4_ABSENT(pEA) ((pEA)->String4_present = 0)
|
|
|
|
#define IS_BINARY1_PRESENT(pEA) ((pEA)->Binary1_present)
|
|
#define IS_BINARY1_ABSENT(pEA) (!((pEA)->Binary1_present))
|
|
#define BINARY1_PRESENT(pEA) ((pEA)->Binary1_present = 1)
|
|
#define BINARY1_ABSENT(pEA) ((pEA)->Binary1_present = 0)
|
|
|
|
#define IS_BINARY2_PRESENT(pEA) ((pEA)->Binary2_present)
|
|
#define IS_BINARY2_ABSENT(pEA) (!((pEA)->Binary2_present))
|
|
#define BINARY2_PRESENT(pEA) ((pEA)->Binary2_present = 1)
|
|
#define BINARY2_ABSENT(pEA) ((pEA)->Binary2_present = 0)
|
|
|
|
|
|
BOOL _inline
|
|
IsAnythingPresent(
|
|
IN PEATTRIB pEA
|
|
)
|
|
{
|
|
return IS_ADDRESS1_PRESENT(pEA)
|
|
|| IS_ADDRESS2_PRESENT(pEA)
|
|
|| IS_ADDRESS3_PRESENT(pEA)
|
|
|| IS_ADSPATH_PRESENT(pEA)
|
|
|| IS_STOREGETTYPE_PRESENT(pEA)
|
|
|| IS_FLAGS1_PRESENT(pEA)
|
|
|| IS_FLAGS2_PRESENT(pEA)
|
|
|| IS_DWORD1_PRESENT(pEA)
|
|
|| IS_DWORD2_PRESENT(pEA)
|
|
|| IS_STRING1_PRESENT(pEA)
|
|
|| IS_STRING2_PRESENT(pEA)
|
|
|| IS_STRING3_PRESENT(pEA)
|
|
|| IS_STRING4_PRESENT(pEA)
|
|
|| IS_BINARY1_PRESENT(pEA)
|
|
|| IS_BINARY2_PRESENT(pEA)
|
|
;
|
|
}
|
|
|
|
|
|
BOOL _inline
|
|
IsEverythingPresent(
|
|
IN PEATTRIB pEA
|
|
)
|
|
{
|
|
return IS_ADDRESS1_PRESENT(pEA)
|
|
&& IS_ADDRESS2_PRESENT(pEA)
|
|
&& IS_ADDRESS3_PRESENT(pEA)
|
|
&& IS_ADSPATH_PRESENT(pEA)
|
|
&& IS_STOREGETTYPE_PRESENT(pEA)
|
|
&& IS_FLAGS1_PRESENT(pEA)
|
|
&& IS_FLAGS2_PRESENT(pEA)
|
|
&& IS_DWORD1_PRESENT(pEA)
|
|
&& IS_DWORD2_PRESENT(pEA)
|
|
&& IS_STRING1_PRESENT(pEA)
|
|
&& IS_STRING2_PRESENT(pEA)
|
|
&& IS_STRING3_PRESENT(pEA)
|
|
&& IS_STRING4_PRESENT(pEA)
|
|
&& IS_BINARY1_PRESENT(pEA)
|
|
&& IS_BINARY2_PRESENT(pEA)
|
|
;
|
|
}
|
|
|
|
|
|
VOID _inline
|
|
EverythingPresent(
|
|
IN PEATTRIB pEA
|
|
)
|
|
{
|
|
ADDRESS1_PRESENT(pEA);
|
|
ADDRESS2_PRESENT(pEA);
|
|
ADDRESS3_PRESENT(pEA);
|
|
ADSPATH_PRESENT(pEA);
|
|
STOREGETTYPE_ABSENT(pEA);
|
|
FLAGS1_PRESENT(pEA);
|
|
FLAGS2_PRESENT(pEA);
|
|
DWORD1_PRESENT(pEA);
|
|
DWORD2_PRESENT(pEA);
|
|
STRING1_PRESENT(pEA);
|
|
STRING2_PRESENT(pEA);
|
|
STRING3_PRESENT(pEA);
|
|
STRING4_PRESENT(pEA);
|
|
BINARY1_PRESENT(pEA);
|
|
BINARY2_PRESENT(pEA);
|
|
}
|
|
|
|
|
|
VOID _inline
|
|
NothingPresent(
|
|
IN PEATTRIB pEA
|
|
)
|
|
{
|
|
ADDRESS1_ABSENT(pEA);
|
|
ADDRESS2_ABSENT(pEA);
|
|
ADDRESS3_ABSENT(pEA);
|
|
ADSPATH_ABSENT(pEA);
|
|
STOREGETTYPE_ABSENT(pEA);
|
|
FLAGS1_ABSENT(pEA);
|
|
FLAGS2_ABSENT(pEA);
|
|
DWORD1_ABSENT(pEA);
|
|
DWORD2_ABSENT(pEA);
|
|
STRING1_ABSENT(pEA);
|
|
STRING2_ABSENT(pEA);
|
|
STRING3_ABSENT(pEA);
|
|
STRING4_ABSENT(pEA);
|
|
BINARY1_ABSENT(pEA);
|
|
BINARY2_ABSENT(pEA);
|
|
}
|
|
|
|
|
|
DWORD
|
|
StoreCollectAttributes(
|
|
IN OUT PSTORE_HANDLE hStore,
|
|
IN DWORD Reserved,
|
|
IN LPWSTR AttribName, // this attrib must be some kind of a text string
|
|
IN OUT PARRAY ArrayToAddTo, // array of PEATTRIBs
|
|
IN DWORD RecursionDepth // 0 ==> no recursion
|
|
) ;
|
|
|
|
|
|
DWORD
|
|
StoreCollectBinaryAttributes(
|
|
IN OUT PSTORE_HANDLE hStore,
|
|
IN DWORD Reserved,
|
|
IN LPWSTR AttribName, // accept only attrib type OCTET_STRING
|
|
IN OUT PARRAY ArrayToAddTo, // array of PEATTRIBs
|
|
IN DWORD RecursionDepth // 0 ==> no recursion
|
|
) ;
|
|
|
|
|
|
//DOC StoreUpdateAttributes is sort of the converse of StoreCollectAttributes.
|
|
//DOC This function takes an array of type EATTRIB elements and updates the DS
|
|
//DOC with this array. This function does not work when the attrib is of type
|
|
//DOC OCTET_STRING etc. It works only with types that can be derived from
|
|
//DOC PrintableString.
|
|
DWORD
|
|
StoreUpdateAttributes( // update a list of attributes
|
|
IN OUT LPSTORE_HANDLE hStore, // handle to obj to update
|
|
IN DWORD Reserved, // for future use, must be zero
|
|
IN LPWSTR AttribName, // name of attrib, must be string type
|
|
IN PARRAY Array // list of attribs
|
|
) ;
|
|
|
|
|
|
//DOC StoreUpdateBinaryAttributes is sort of the converse of StoreCollectBinaryAttributes
|
|
//DOC This function takes an array of type EATTRIB elements and updates the DS
|
|
//DOC with this array. This function works only when the attrib is of type
|
|
//DOC OCTET_STRING etc. It doesnt work with types that can be derived from
|
|
//DOC PrintableString!!!.
|
|
DWORD
|
|
StoreUpdateBinaryAttributes( // update a list of attributes
|
|
IN OUT LPSTORE_HANDLE hStore, // handle to obj to update
|
|
IN DWORD Reserved, // for future use, must be zero
|
|
IN LPWSTR AttribName, // name of attrib, must be OCTET_STRING type
|
|
IN PARRAY Array // list of attribs
|
|
) ;
|
|
|
|
//========================================================================
|
|
// end of file
|
|
//========================================================================
|