NT4/private/windows/rover/filesync/core/serial.h
2020-09-30 17:12:29 +02:00

84 lines
1.5 KiB
C

/*
* serial.h - Access serialization routines description.
*/
/* Types
********/
typedef struct _serialcontrol
{
BOOL (*AttachProcess)(HMODULE);
BOOL (*DetachProcess)(HMODULE);
BOOL (*AttachThread)(HMODULE);
BOOL (*DetachThread)(HMODULE);
}
SERIALCONTROL;
DECLARE_STANDARD_TYPES(SERIALCONTROL);
typedef struct _nonreentrantcriticalsection
{
CRITICAL_SECTION critsec;
#ifdef DEBUG
DWORD dwOwnerThread;
#endif /* DEBUG */
BOOL bEntered;
}
NONREENTRANTCRITICALSECTION;
DECLARE_STANDARD_TYPES(NONREENTRANTCRITICALSECTION);
/* Prototypes
*************/
/* serial.c */
#ifdef DEBUG
extern BOOL SetSerialModuleIniSwitches(void);
#endif /* DEBUG */
extern void ReinitializeNonReentrantCriticalSection(PNONREENTRANTCRITICALSECTION);
extern BOOL EnterNonReentrantCriticalSection(PNONREENTRANTCRITICALSECTION);
extern void LeaveNonReentrantCriticalSection(PNONREENTRANTCRITICALSECTION);
#ifdef DEBUG
extern BOOL NonReentrantCriticalSectionIsOwned(PCNONREENTRANTCRITICALSECTION);
#endif
extern BOOL BeginExclusiveAccess(void);
extern void EndExclusiveAccess(void);
#ifdef DEBUG
extern BOOL AccessIsExclusive(void);
#endif /* DEBUG */
extern HMODULE GetThisModulesHandle(void);
/* functions to be provided by client */
extern BOOL InitializeDLL(void);
extern BOOL TerminateDLL(void);
#ifdef DEBUG
extern BOOL SetAllIniSwitches(void);
#endif
/* Global Variables
*******************/
/* serialization control structure */
extern CSERIALCONTROL g_cserctrl;