windows-nt/Source/XPSP1/NT/ds/security/tools/ksetup/everything.hxx
2020-09-26 16:20:57 +08:00

201 lines
5.1 KiB
C++

/*++
EVERYTHING.HXX
Copyright (C) 1999 Microsoft Corporation, all rights reserved.
DESCRIPTION: more headers than you can shake a stick at.
Created, May 21, 1999 by DavidCHR.
--*/
extern "C"
{
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <ntseapi.h>
#include <ntlsa.h>
#include <stdio.h>
#include <windef.h>
#include <winbase.h>
#include <winreg.h>
#include <winuser.h>
#include <string.h>
#include <stdlib.h>
#include <lmaccess.h>
#include <lmapibuf.h>
#include <lmerr.h>
#include <rpc.h>
#include <wincon.h>
#include <kerberos.h>
#include <kerbcon.h>
#include <winldap.h>
}
/*------------------------------------------------------------
Debugging.
------------------------------------------------------------*/
// debug levels
#define DEBUG_OPTIONS 0x1
#define DEBUG_DOMAIN 0x2
#define DEBUG_LAUNCH 0x4
#define DEBUG_REGISTRY 0x8
#if DBG // debugging.
extern ULONG GlobalDebugFlags; /* instantiated in misccmds.cxx */
/* Define a useful debugging macro that adds the file and line#
information to it. */
#define DEBUGPRINT( flags, list ) \
{ \
if ( GlobalDebugFlags & (flags) ) { \
printf( "%hs:%ld\t", \
strrchr( __FILE__, '\\' ) +1, \
__LINE__ ); \
printf list; \
} \
}
#else
#define DEBUGPRINT( flags, list ) // nothing
#endif
typedef NTSTATUS (TestFunc)( LPWSTR * Parameter);
typedef struct _Commands {
LPWSTR Name;
ULONG Parameter; // count
TestFunc *Function;
PSTR Arguments; // if null, omitted from help.
ULONG flags; // one or more of:
#define CAN_HAVE_FEWER_ARGUMENTS 0x1 /* fewer than "Parameter" arguments
can be passed. Function's on it's
own for parameter validation. */
#define DO_COMMAND_IMMEDIATELY 0x4 /* Perform the command immediately
when you hit it on the commandline.
Otherwise, do the command at the
end. */
#define CAN_HAVE_MORE_ARGUMENTS 0x8 /* go until you hit an argument
that starts with a forward slash
or run out of them. */
LPSTR ExtendedDescription;
LPSTR ConfirmationText; // something like "Needs a reboot."
} CommandPair, *PCommandPair;
#define MAX_COMMANDS 8
typedef struct _Action {
ULONG CommandNumber;
LPWSTR Parameter[MAX_COMMANDS ];
} Action, *PAction;
#ifndef EXTERN
#define EXTERN extern
#endif
EXTERN LPWSTR ServerName;
EXTERN WCHAR ServerBuffer[200];
EXTERN LSA_HANDLE LsaHandle;
extern ULONG cCommands;
extern LPWSTR GlobalClientName; // goes with GlobalClientName
extern LPWSTR GlobalDomainSetting; /* if nonnull, we're in a domain.
This is instantiated in domain.cxx */
extern PLDAP GlobalLdap; /* bound LDAP connection to the
default DC. */
#define KERB_KERBEROS_KEY TEXT("System\\CurrentControlSet\\Control\\Lsa\\Kerberos")
#define KERB_DOMAINS_SUBKEY TEXT("Domains")
#define KERB_DOMAINS_KEY KERB_KERBEROS_KEY TEXT("\\") KERB_DOMAINS_SUBKEY
#define KERB_DOMAIN_KDC_NAMES_VALUE TEXT("KdcNames")
#define KERB_DOMAIN_KPASSWD_NAMES_VALUE TEXT("KpasswdNames")
#define KERB_DOMAIN_ALT_NAMES_VALUE TEXT("AlternateDomainNames")
#define KERB_DOMAIN_REALM_FLAGS_VALUE TEXT("RealmFlags")
BOOL
ConnectedToDsa( VOID );
DWORD
OpenKerberosKey(
OUT PHKEY KerbHandle
); // support.cxx
NTSTATUS
OpenLocalLsa( OUT PLSA_HANDLE phLsa );
DWORD // support.cxx
OpenSubKey( IN LPWSTR * Parameters,
OUT PHKEY phKey );
/* These are the flags that ReadOptionallyStarredPassword takes. */
#define PROMPT_USING_POSSESSIVE_CASE 0x1
#define PROMPT_FOR_PASSWORD_TWICE 0x2
BOOL
ReadOptionallyStarredPassword( IN LPWSTR InPassword,
IN ULONG flags,
IN LPWSTR Description,
OUT LPWSTR *pPassword ); // support.cxx
NTSTATUS
CallAuthPackage( IN PVOID pvData,
IN ULONG ulInputSize,
OUT PVOID *ppvOutput,
OUT PULONG pulOutputSize ); // support.cxx
BOOL
CheckUppercase( IN LPWSTR wszRealmName );
class CMULTISTRING { // strings.cxx
public:
CMULTISTRING( VOID );
~CMULTISTRING( VOID );
BOOL
ReadFromRegistry( IN HKEY hKey,
IN LPWSTR ValueName );
BOOL
WriteToRegistry( IN HKEY hKey,
IN LPWSTR ValueName );
BOOL
AddString( IN LPWSTR String );
BOOL
RemoveString( IN LPWSTR String );
/* these are public to facilitate reading them,
but callers should not write these directly. */
ULONG cEntries;
ULONG TotalStringCount;
LPWSTR *pEntries;
};