Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

87 lines
2.3 KiB

///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1998, Microsoft Corp. All rights reserved.
//
// FILE
//
// lockkey.h
//
// SYNOPSIS
//
// Declares the class LockoutKey.
//
// MODIFICATION HISTORY
//
// 10/21/1998 Original version.
// 01/14/1999 Removed destructor.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef _LOCKKEY_H_
#define _LOCKKEY_H_
#if _MSC_VER >= 1000
#pragma once
#endif
///////////////////////////////////////////////////////////////////////////////
//
// CLASS
//
// LockoutKey
//
// DESCRIPTION
//
// Provides a wrapper around the AccountLockout registry key.
//
///////////////////////////////////////////////////////////////////////////////
class LockoutKey
{
public:
LockoutKey() throw ();
void initialize() throw ();
void finalize() throw ();
// Returns the max. number of denials until a user is locked out.
// If zero, then account lockout is disabled.
DWORD getMaxDenials() const throw ()
{ return maxDenials; }
// Create and return a new sub-key.
HKEY createEntry(PCWSTR subKeyName) throw ();
// Open and return an existing sub-key.
HKEY openEntry(PCWSTR subKeyName) throw ();
// Delete a sub-key.
void deleteEntry(PCWSTR subKeyName) throw ()
{ RegDeleteKey(hLockout, subKeyName); }
protected:
// Deletes all sub-keys.
void clear() throw ();
// Deletes all expired sub-keys if the collection interval has passed.
void collectGarbage() throw ();
// Read the key's values.
void readValues() throw ();
private:
DWORD maxDenials; // Max. number of denials.
DWORD refCount; // Initialization ref. count.
HKEY hLockout; // Registry key.
HANDLE hChangeEvent; // Change notification event.
HANDLE hRegisterWait; // RTL event registration.
ULONGLONG ttl; // Time-To-Live for sub-keys.
ULONGLONG lastCollection; // Last time we collected garbage.
// Key change notification routine.
static VOID NTAPI onChange(PVOID context, BOOLEAN flag) throw ();
// Not implemented.
LockoutKey(const LockoutKey&);
LockoutKey& operator=(const LockoutKey&);
};
#endif // _LOCKKEY_H_