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

156 lines
3.7 KiB
C

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1997.
//
// File: handle.hxx
//
// Contents: Handle Package interface
//
// Classes:
//
// Functions:
//
// History: 2-03-97 RichardW Created
//
//----------------------------------------------------------------------------
#ifndef __HANDLE_HXX__
#define __HANDLE_HXX__
typedef
VOID (WINAPI HP_ENUM_CALLBACK_FN)(
PSecHandle Handle,
PVOID Context,
ULONG RefCount
);
typedef HP_ENUM_CALLBACK_FN * PHP_ENUM_CALLBACK_FN;
typedef struct _SEC_HANDLE_ENTRY {
LIST_ENTRY List ;
SecHandle Handle ;
PVOID Context ;
ULONG HandleCount ;
ULONG RefCount ;
ULONG HandleIssuedCount ; // same as HandleCount, but doesn't go down.
ULONG Flags ;
} SEC_HANDLE_ENTRY, * PSEC_HANDLE_ENTRY ;
#define SEC_HANDLE_FLAG_LOCKED 0x00000001
#define SEC_HANDLE_FLAG_DELETE_PENDING 0x00000002
#define SEC_HANDLE_FLAG_NO_CALLBACK 0x00000004
typedef
BOOL (WINAPI HP_INITIALIZE_FN)(
VOID
);
typedef
PVOID (WINAPI HP_CREATE_FN)(
IN ULONG Flags,
IN PVOID HandleTable OPTIONAL,
IN PHP_ENUM_CALLBACK_FN Callback OPTIONAL
);
#define HANDLE_PACKAGE_NO_SERIALIZE 0x00000001
#define HANDLE_PACKAGE_CALLBACK_ON_DELETE 0x00000002
#define HANDLE_PACKAGE_REQUIRE_UNIQUE 0x00000004
#define HANDLE_PACKAGE_MAX_FLAG 0x00000004
#define HANDLE_PACKAGE_GENERAL_FLAGS 0x00000007
typedef
BOOL (WINAPI HP_DELETE_FN)(
PVOID HandleTable,
PHP_ENUM_CALLBACK_FN Callback
);
typedef
BOOL (WINAPI HP_ADD_HANDLE_FN)(
PVOID HandleTable,
PSecHandle Handle,
PVOID Context,
ULONG Flags
);
typedef
BOOL (WINAPI HP_DELETE_HANDLE_FN)(
PVOID HandleTable,
PSecHandle Handle,
ULONG Options
);
#define DELHANDLE_FORCE 0x00000001
#define DELHANDLE_NO_CALLBACK 0x00000002
typedef
BOOL (WINAPI HP_VALIDATE_HANDLE_FN)(
PVOID HandleTable,
PSecHandle Handle,
BOOL Deref
);
typedef
PVOID (WINAPI HP_REF_HANDLE_FN)(
PVOID HandleTable,
PSecHandle Handle
);
typedef
VOID (WINAPI HP_DEREF_HANDLE_KEY_FN)(
PVOID HandleTable,
PVOID HandleKey
);
typedef
PVOID (WINAPI HP_GET_HANDLE_CONTEXT_FN)(
PVOID HandleTable,
PSecHandle Handle
);
typedef
BOOL (WINAPI HP_RELEASE_CONTEXT_FN)(
PVOID HandleTable,
PSecHandle Handle
);
typedef HP_INITIALIZE_FN * PHP_INITIALIZE_FN;
typedef HP_CREATE_FN * PHP_CREATE_FN ;
typedef HP_DELETE_FN * PHP_DELETE_FN ;
typedef HP_ADD_HANDLE_FN * PHP_ADD_HANDLE_FN ;
typedef HP_DELETE_HANDLE_FN * PHP_DELETE_HANDLE_FN ;
typedef HP_VALIDATE_HANDLE_FN * PHP_VALIDATE_HANDLE_FN ;
typedef HP_REF_HANDLE_FN * PHP_REF_HANDLE_FN ;
typedef HP_DEREF_HANDLE_KEY_FN * PHP_DEREF_HANDLE_KEY_FN ;
typedef HP_GET_HANDLE_CONTEXT_FN * PHP_GET_HANDLE_CONTEXT_FN ;
typedef HP_RELEASE_CONTEXT_FN * PHP_RELEASE_CONTEXT_FN ;
typedef struct _HANDLE_PACKAGE {
ULONG TableSize ;
PHP_INITIALIZE_FN Initialize ;
PHP_CREATE_FN Create ;
PHP_DELETE_FN Delete ;
PHP_ADD_HANDLE_FN AddHandle ;
PHP_DELETE_HANDLE_FN DeleteHandle ;
PHP_VALIDATE_HANDLE_FN ValidateHandle ;
PHP_REF_HANDLE_FN RefHandle ;
PHP_DEREF_HANDLE_KEY_FN DerefHandleKey ;
PHP_GET_HANDLE_CONTEXT_FN GetHandleContext ;
PHP_RELEASE_CONTEXT_FN ReleaseContext ;
} HANDLE_PACKAGE, * PHANDLE_PACKAGE ;
PVOID
LhtConvertSmallToLarge(
PVOID Small
);
extern HANDLE_PACKAGE LargeHandlePackage ;
extern HANDLE_PACKAGE SmallHandlePackage ;
#endif // __HANDLE_HXX__