windows-nt/Source/XPSP1/NT/ds/netapi/svcimgs/ntrepl/inc/frssup.h
2020-09-26 16:20:57 +08:00

158 lines
4.1 KiB
C

/*++
Copyright (c) 2001 Microsoft Corporation
Module Name:
frssup.h
Abstract:
Collection of functions used by ntfrsapi and other frs tools.
An attempt to reduce duplication of code.
Author:
Sudarshan Chitre 20-Mar-2001
Environment
User mode winnt
--*/
typedef struct _FRS_LDAP_SEARCH_CONTEXT {
ULONG EntriesInPage; // Number of entries in the current page.
ULONG CurrentEntry; // Location of the pointer into the page.
LDAPMessage * LdapMsg; // Returned from ldap_search_ext_s()
LDAPMessage * CurrentLdapMsg; // Current entry from current page.
PWCHAR Filter; // Filter to add to the DS query.
PWCHAR BaseDn; // Dn to start the query from.
DWORD Scope; // Scope of the search.
PWCHAR * Attrs; // Attributes requested by the search.
} FRS_LDAP_SEARCH_CONTEXT, *PFRS_LDAP_SEARCH_CONTEXT;
#define MK_ATTRS_1(_attr_, _a1) \
_attr_[0] = _a1; _attr_[1] = NULL;
#define MK_ATTRS_2(_attr_, _a1, _a2) \
_attr_[0] = _a1; _attr_[1] = _a2; _attr_[2] = NULL;
#define MK_ATTRS_3(_attr_, _a1, _a2, _a3) \
_attr_[0] = _a1; _attr_[1] = _a2; _attr_[2] = _a3; _attr_[3] = NULL;
#define MK_ATTRS_4(_attr_, _a1, _a2, _a3, _a4) \
_attr_[0] = _a1; _attr_[1] = _a2; _attr_[2] = _a3; _attr_[3] = _a4; \
_attr_[4] = NULL;
#define MK_ATTRS_5(_attr_, _a1, _a2, _a3, _a4, _a5) \
_attr_[0] = _a1; _attr_[1] = _a2; _attr_[2] = _a3; _attr_[3] = _a4; \
_attr_[4] = _a5; _attr_[5] = NULL;
#define MK_ATTRS_6(_attr_, _a1, _a2, _a3, _a4, _a5, _a6) \
_attr_[0] = _a1; _attr_[1] = _a2; _attr_[2] = _a3; _attr_[3] = _a4; \
_attr_[4] = _a5; _attr_[5] = _a6; _attr_[6] = NULL;
#define MK_ATTRS_7(_attr_, _a1, _a2, _a3, _a4, _a5, _a6, _a7) \
_attr_[0] = _a1; _attr_[1] = _a2; _attr_[2] = _a3; _attr_[3] = _a4; \
_attr_[4] = _a5; _attr_[5] = _a6; _attr_[6] = _a7; _attr_[7] = NULL;
#define MK_ATTRS_8(_attr_, _a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8) \
_attr_[0] = _a1; _attr_[1] = _a2; _attr_[2] = _a3; _attr_[3] = _a4; \
_attr_[4] = _a5; _attr_[5] = _a6; _attr_[6] = _a7; _attr_[7] = _a8; \
_attr_[8] = NULL;
#define FRS_SUP_FREE(_x_) { if (_x_) { free(_x_); (_x_) = NULL; } }
DWORD
FrsSupBindToDC (
IN PWCHAR pszDC,
IN PSEC_WINNT_AUTH_IDENTITY_W pCreds,
OUT PLDAP *ppLDAP
);
PVOID *
FrsSupFindValues(
IN PLDAP Ldap,
IN PLDAPMessage Entry,
IN PWCHAR DesiredAttr,
IN BOOL DoBerVals
);
PWCHAR
FrsSupWcsDup(
PWCHAR OldStr
);
PWCHAR
FrsSupFindValue(
IN PLDAP Ldap,
IN PLDAPMessage Entry,
IN PWCHAR DesiredAttr
);
BOOL
FrsSupLdapSearch(
IN PLDAP Ldap,
IN PWCHAR Base,
IN ULONG Scope,
IN PWCHAR Filter,
IN PWCHAR Attrs[],
IN ULONG AttrsOnly,
IN LDAPMessage **Msg
);
PWCHAR *
FrsSupGetValues(
IN PLDAP Ldap,
IN PWCHAR Base,
IN PWCHAR DesiredAttr
);
PWCHAR
FrsSupExtendDn(
IN PWCHAR Dn,
IN PWCHAR Cn
);
PWCHAR
FrsSupGetRootDn(
PLDAP Ldap,
PWCHAR NamingContext
);
BOOL
FrsSupLdapSearchInit(
PLDAP ldap,
PWCHAR Base,
ULONG Scope,
PWCHAR Filter,
PWCHAR Attrs[],
ULONG AttrsOnly,
PFRS_LDAP_SEARCH_CONTEXT FrsSearchContext
);
PLDAPMessage
FrsSupLdapSearchGetNextEntry(
PLDAP ldap,
PFRS_LDAP_SEARCH_CONTEXT FrsSearchContext
);
DWORD
FrsSupLdapSearchGetNextPage(
PLDAP ldap,
PFRS_LDAP_SEARCH_CONTEXT FrsSearchContext
);
PLDAPMessage
FrsSupLdapSearchNext(
PLDAP ldap,
PFRS_LDAP_SEARCH_CONTEXT FrsSearchContext
);
VOID
FrsSupLdapSearchClose(
PFRS_LDAP_SEARCH_CONTEXT FrsSearchContext
);