/*++ 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 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include } /*------------------------------------------------------------ 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; };