//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
#ifndef __LOCK_H__
#define __LOCK_H__

#include    <windef.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef struct TAG_LOCK
{
    HANDLE hEventStopRead;
    HANDLE hMutextStopWrite;

    unsigned int    nReaders;

} BLOCK, * PLOCK, * LPLOCK;

BOOL InitializeLock(LPLOCK);
BOOL DeleteLock(LPLOCK);

BOOL EnterReadLock(LPLOCK);
BOOL LeaveReadLock(LPLOCK);

BOOL EnterWriteLock(LPLOCK);
BOOL LeaveWriteLock(LPLOCK);

#ifdef __cplusplus
}
#endif

#endif
