61 lines
1.7 KiB
C++
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__
|