windows-nt/Source/XPSP1/NT/ds/security/ntmarta/newinc/lucache.h

156 lines
3.8 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
//+-------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997 - 1997.
//
// File: lucache.h
//
// Contents: Name/Sid and Name/Property mapping and cache
// functions and declarations
//
// History: 2-Feb-97 MacM Created
//
//--------------------------------------------------------------------
#ifndef __LUCACHE_H__
#define __LUCACHE_H__
#include <winldap.h>
#include <accctrl.h>
typedef struct _ACTRL_NAME_CACHE
{
PWSTR pwszName;
PSID pSid;
SID_NAME_USE SidUse;
struct _ACTRL_NAME_CACHE *pNextName;
struct _ACTRL_NAME_CACHE *pNextSid;
} ACTRL_NAME_CACHE, *PACTRL_NAME_CACHE;
#define ACTRL_NAME_TABLE_SIZE 15
//
// Comment this out to use the LSA routines directly for every lookup
//
#define USE_NAME_CACHE
#define ACTRL_OBJ_ID_TABLE_SIZE 100
#ifndef PGUID
typedef GUID *PGUID;
#endif
typedef struct _ACTRL_OBJ_ID_CACHE
{
PWSTR pwszName;
GUID Guid;
struct _ACTRL_OBJ_ID_CACHE *pNextName;
struct _ACTRL_OBJ_ID_CACHE *pNextGuid;
} ACTRL_OBJ_ID_CACHE, *PACTRL_OBJ_ID_CACHE;
//
// This supports the control rights cache.
typedef struct _ACTRL_RIGHTS_CACHE
{
GUID ObjectClassGuid;
ULONG cRights;
PWSTR *RightsList;
struct _ACTRL_RIGHTS_CACHE *pNext;
}
ACTRL_RIGHTS_CACHE, *PACTRL_RIGHTS_CACHE;
//
// Information on the last access to the DS
//
typedef struct _ACTRL_ID_SCHEMA_INFO
{
LDAP LDAP;
BOOL fLDAP;
PWSTR pwszPath;
DWORD LastReadTime;
} ACTRL_ID_SCHEMA_INFO, *PACTRL_ID_SCHEMA_INFO;
//
// Keep the name and sid caches in synch.
// Nodes are only inserted into the name cache, and are merely referenced
// by the sid cache.
extern PACTRL_NAME_CACHE grgNameCache[ACTRL_NAME_TABLE_SIZE];
extern PACTRL_NAME_CACHE grgSidCache[ACTRL_NAME_TABLE_SIZE];
extern PACTRL_OBJ_ID_CACHE grgIdNameCache[ACTRL_OBJ_ID_TABLE_SIZE];
extern PACTRL_OBJ_ID_CACHE grgIdGuidCache[ACTRL_OBJ_ID_TABLE_SIZE];
extern PACTRL_RIGHTS_CACHE grgRightsNameCache[ACTRL_OBJ_ID_TABLE_SIZE];
INT
ActrlHashName(PWSTR pwszName);
INT
ActrlHashSid(PSID pSid);
DWORD
AccctrlInitializeSidNameCache(VOID);
VOID
AccctrlFreeSidNameCache(VOID);
DWORD
AccctrlLookupName(IN PWSTR pwszServer,
IN PSID pSid,
IN BOOL fAllocateReturn,
OUT PWSTR *ppwszName,
OUT PSID_NAME_USE pSidNameUse);
DWORD
AccctrlLookupSid(IN PWSTR pwszServer,
IN PWSTR pwszName,
IN BOOL fAllocateReturn,
OUT PSID *ppSid,
OUT PSID_NAME_USE pSidNameUse);
INT
ActrlHashIdName(PWSTR pwszName);
INT
ActrlHashGuid(PGUID pGuid);
DWORD
AccctrlInitializeIdNameCache(VOID);
VOID
AccctrlFreeIdNameCache(VOID);
DWORD
AccctrlLookupIdName(IN PLDAP pLDAP,
IN PWSTR pwszDsPath,
IN PGUID pGuid,
IN BOOL fAllocateReturn,
IN BOOL fFailUnknownGuid,
OUT PWSTR *ppwszIdName);
DWORD
AccctrlLookupGuid(IN PLDAP pLDAP,
IN PWSTR pwszDsPath,
IN PWSTR pwszName,
IN BOOL fAllocateReturn,
OUT PGUID *ppGuid);
//
// Control rights lookup
//
DWORD
AccctrlInitializeRightsCache(VOID);
VOID
AccctrlFreeRightsCache(VOID);
DWORD
AccctrlLookupRightsByName(IN PLDAP pLDAP,
IN PWSTR pwszDsPath,
IN PWSTR pwszName,
OUT PULONG pCount,
OUT PACTRL_CONTROL_INFOW *ControlInfo);
#endif