windows-nt/Source/XPSP1/NT/inetsrv/iis/staxinc/actlcach.h
2020-09-26 16:20:57 +08:00

163 lines
3.9 KiB
C

//>-------------------------------------------------------------------------------<
//
// File: Actlcach.h
//
// Synopsis: UiGetAccountRights, UiGetValidationInfo
//
// History: KeithBi Created 09/29/95
// DanielLi Modified 04/26/96
//
// Copyright (C) 1994-1996 Microsoft Corporation
// All rights reserved
//
//>-------------------------------------------------------------------------------<
#if !defined(__ACTLCACH_H__)
#define __ACTLCACH_H__
#include <acsctl.h>
#if !defined(_ACTL_DLL_DEFINED)
#if defined(WIN32)
#if defined(_ACTLDLL)
#define ActlDLL DllExport __stdcall
#else
#define ActlDLL DllImport __stdcall
#endif
#else
#define ActlDLL
#endif
#define _ACTL_DLL_DEFINED
#endif
//--------------------------------------------------------------------------------
//
// Adjustable parameters
//
//--------------------------------------------------------------------------------
typedef struct _ACCESS_TUNING
{
//
// max number of user caches; default is: 100K
//
DWORD dwMaxUserCaches;
//
// the beginning instance size of CPool list, in the power of 2, so, the actual
// size is : 2^dwFirstCPool; default is: 7 (128 bytes)
//
DWORD dwFirstPoolSize;
//
// the number of CPool in the CPool list; default is: 5
//
DWORD dwPoolSteps;
} ACCESS_TUNING, *PACCESS_TUNING;
//--------------------------------------------------------------------------------
//
// Performance counters
//
//--------------------------------------------------------------------------------
typedef struct _ACCESS_STATISTICS
{
//
// number of times UiGetAccountRights got called
//
DWORD dwGetAccountRights;
//
// number of times UiGetAccountRights failed
//
DWORD dwGetAccountRightsFailures;
//
// number of times UiGetAccountRigts failed due to query timeout
//
DWORD dwGetAccountRightsTimeout;
DWORD dwGetValidationInfo;
DWORD dwGetValidationInfoFailures;
//
// number of times Security DB query (sp_get_tokens_and_groups) is issued to
// refresh the user cache
//
DWORD dwNumDBQueriesForCache;
//
// number of times the user cache is added into the cache pool
//
DWORD dwNumUserCacheAdded;
//
// number of times the user cache is released from the cache pool
//
DWORD dwNumUserCacheReleased;
//
// number of times CDBUserCache::operator new() got called
//
DWORD dwNewUserCache;
//
// number of times CDBUserCache::operator delete() got called
//
DWORD dwDeleteUserCache;
//
// number of times token-group cache allocated (one token-group cache per CDBUserCache)
//
DWORD dwAllocTokenGroupCache;
//
// number of token-group cache allocated (one token-group cache per CDBUserCache)
//
DWORD dwFreeTokenGroupCache;
//
// number of times the plan list is refreshed (GetPlans)
//
DWORD dwNumPlanListRefreshed;
//
// number of times GetPlanRightsOnToken is called
//
DWORD dwGetPlanRightsOnToken;
} ACCESS_STATISTICS, *PACCESS_STATISTICS;
#define INC_ACCESS_COUNTER(counter) (InterlockedIncrement((LPLONG)&g_statAccess.##counter))
#define DEC_ACCESS_COUNTER(counter) (InterlockedDecrement((LPLONG)&g_statAccess.##counter))
extern "C"
{
BOOL ActlDLL FInitAccessLib();
VOID ActlDLL TerminateAccessLib();
UINT ActlDLL UiResetAccessTuningBlock();
VOID ActlDLL GetDefaultAccessTuningParam(PACCESS_TUNING pTuning);
UINT ActlDLL UiSetAccessTuningBlock(PACCESS_TUNING pTuning);
UINT ActlDLL UiGetAccessPerfmonBlock(PACCESS_STATISTICS *ppStat);
UINT ActlDLL UiRegisterAccessDB(CHAR *szServerName, CHAR *szDBName, CHAR *szLogin, CHAR *szPassword);
UINT ActlDLL UiGetAccountRights(HACCT hAcct, TOKEN dwToken, AR *pRights);
UINT ActlDLL UiGetValidationInfo
(
CHAR *szLoginName,
CHAR *szDomain,
HACCT *phAcct,
WORD *pwAcctType,
CHAR *szPassword,
WORD *pwStatus
);
VOID ActlDLL ReleaseUserCache(HACCT hAcct);
VOID ActlDLL ReleaseGroupInCache(HGROUP hGroup);
} //----- end of extern "C" ------
#endif // #if !defined(__ACTLCACH_H__)