windows-nt/Source/XPSP1/NT/ds/security/base/lsa/server/lht.hxx
2020-09-26 16:20:57 +08:00

61 lines
1.7 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1997.
//
// File: lht.hxx
//
// Contents:
//
// Classes:
//
// Functions:
//
// History: 2-05-97 RichardW Created
//
//----------------------------------------------------------------------------
#ifndef __LHT_HXX__
#define __LHT_HXX__
#define HANDLE_TABLE_SIZE 16
#define HANDLE_TABLE_MASK (HANDLE_TABLE_SIZE - 1)
#define HANDLE_SPLIT_THRESHOLD (HANDLE_TABLE_SIZE * 2)
typedef struct _LHT_HANDLE_LIST {
LIST_ENTRY List ;
ULONG Length ;
ULONG Flags ;
} LHT_HANDLE_LIST, * PLHT_HANDLE_LIST ;
#define LHT_SUB_TABLE (SHT_MAX_FLAG << 1)
#define LHT_TAG 'XTHL'
typedef struct _LARGE_HANDLE_TABLE {
ULONG Tag ;
ULONG Flags ;
ULONG Depth ;
struct _LARGE_HANDLE_TABLE * Parent ;
ULONG IndexOfParent ;
ULONG Count ;
PHP_ENUM_CALLBACK_FN DeleteCallback ;
CRITICAL_SECTION Lock ;
SMALL_HANDLE_TABLE Lists[ HANDLE_TABLE_SIZE ];
} LARGE_HANDLE_TABLE, * PLARGE_HANDLE_TABLE ;
#define LHT_NO_SERIALIZE HANDLE_PACKAGE_NO_SERIALIZE // Serialization at client end
#define LHT_DELETE_CALLBACK HANDLE_PACKAGE_CALLBACK_ON_DELETE // Callback on delete
#define LHT_REQUIRE_UNIQUE HANDLE_PACKAGE_REQUIRE_UNIQUE
#define LHT_BASE_FLAG (HANDLE_PACKAGE_MAX_FLAG)
#define LHT_CHILD (LHT_BASE_FLAG) // This is a child
#define LHT_LIMIT_DEPTH (LHT_BASE_FLAG << 1)// Limit depth
#define LHT_DELETE_PENDING (LHT_BASE_FLAG << 2)// Delete pending, no adds/dels
#define LHT_NO_FREE (LHT_BASE_FLAG << 3)// Don't free on delete
#endif // __LHT_HXX__