windows-nt/Source/XPSP1/NT/net/dhcp/server/dhcpds/store.h

410 lines
17 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
//========================================================================
// 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
//========================================================================