/****************************** Module Header ******************************\
* Module Name: lockout.h
*
* Copyright (c) 1991, Microsoft Corporation
*
* Define apis and data types used to implement account lockout
*
* History:
* 05-27-92 Davidc       Created.
\***************************************************************************/


#ifdef DATA_TYPES_ONLY

//
// Lockout specific types
//


//
// FailedLogonTimes is an array holding the time of the previous
// consecutive failed logons.
// FailedLogonIndex points into the array at the last bad logon time.
//
// The following values in the array are valid at any particular time
//
// FailedLogonTime[FailedLogonIndex] // Most recent failed logon
// FailedLogonTime[FailedLogonIndex - 1]
// ...
// FailedLogonTime[FailedLogonIndex - ConsecutiveFailedLogons + 1]
//
// No values in the array are valid if ConsecutiveFailedLogons == 0
//

typedef struct _LOCKOUT_DATA {
    ULONG   ConsecutiveFailedLogons;
    ULONG   FailedLogonIndex;
    TIME    FailedLogonTimes[LOCKOUT_BAD_LOGON_COUNT];
} LOCKOUT_DATA;
typedef LOCKOUT_DATA *PLOCKOUT_DATA;




#else // DATA_TYPES_ONLY


//
// Exported function prototypes
//

BOOL
LockoutInitialize(
    PGLOBALS pGlobals
    );

BOOL
LockoutHandleFailedLogon(
    PGLOBALS pGlobals
    );

BOOL
LockoutHandleSuccessfulLogon(
    PGLOBALS pGlobals
    );

#endif