68 lines
1.6 KiB
C
68 lines
1.6 KiB
C
/*==========================================================================
|
|
*
|
|
* Copyright (C) 1995 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: handles.h
|
|
* Content: Handle manager header file
|
|
*
|
|
* History:
|
|
* Date By Reason
|
|
* ==== == ======
|
|
* 08/19/99 mjn Created
|
|
* 03/23/00 mjn Revised to ensure 64-bit compliance
|
|
* 07/09/00 rmt Added signature bytes
|
|
*
|
|
***************************************************************************/
|
|
|
|
#ifndef __HANDLES_H__
|
|
#define __HANDLES_H__
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwSerial;
|
|
union
|
|
{
|
|
void *pvData;
|
|
DWORD dwIndex;
|
|
} Entry;
|
|
} HANDLEELEMENT;
|
|
|
|
#define DPLSIGNATURE_HANDLESTRUCT 'THLL'
|
|
#define DPLSIGNATURE_HANDLESTRUCT_FREE 'LHL_'
|
|
|
|
typedef struct _HANDLESTRUCT
|
|
{
|
|
DWORD dwSignature;
|
|
DWORD dwNumHandles;
|
|
DWORD dwFirstFreeHandle;
|
|
DWORD dwLastFreeHandle;
|
|
DWORD dwNumFreeHandles;
|
|
DWORD dwSerial;
|
|
DNCRITICAL_SECTION dncs;
|
|
HANDLEELEMENT *HandleArray;
|
|
} HANDLESTRUCT;
|
|
|
|
HRESULT H_Grow(HANDLESTRUCT *const phs,
|
|
const DWORD dwIncSize);
|
|
|
|
HRESULT H_Initialize(HANDLESTRUCT *const phs,
|
|
const DWORD dwInitialNum);
|
|
|
|
void H_Terminate(HANDLESTRUCT *const phs);
|
|
|
|
HRESULT H_Create(HANDLESTRUCT *const phs,
|
|
void *const pvData,
|
|
DWORD *const pHandle);
|
|
|
|
HRESULT H_Destroy(HANDLESTRUCT *const phs,
|
|
const DWORD handle);
|
|
|
|
HRESULT H_Retrieve(HANDLESTRUCT *const phs,
|
|
const DWORD handle,
|
|
void **const ppvData);
|
|
|
|
HRESULT H_Enum(HANDLESTRUCT *const phs,
|
|
DWORD *const pdwNumHandles,
|
|
DWORD *const rgHandles);
|
|
|
|
#endif // __HANDLES_H__
|