/*++ Microsoft Windows Copyright (C) Microsoft Corporation, 1998 - 2001 Module Name: netdom.h Abstract: Common includes and definitions to be used in netdom5 --*/ #ifndef __NETDOM_H__ #define __NETDOM_H__ #include extern HINSTANCE g_hInstance; #define FLAG_ON(flag,bits) ((flag) & (bits)) #define LOG_VERBOSE( __x__ ) { if ( Verbose ) { NetDompDisplayMessage __x__ ; } } #define ERROR_VERBOSE( __error__) { if ( Verbose && __error__ != ERROR_SUCCESS ) { \ NetDompDisplayErrorMessage( __error__); } } #if DBG == 1 #define DBG_VERBOSE( __x__ ) { if ( Verbose ) { printf __x__ ;} } #define CHECK_WIN32(err, cmd) \ if (ERROR_SUCCESS != err) \ { \ if (Verbose) \ { \ printf("Error %d at line %d in file %s\n", err, __LINE__, __FILE__); \ } \ cmd; \ } #else #define DBG_VERBOSE( __x__ ) #define CHECK_WIN32(err, cmd) \ if (ERROR_SUCCESS != err) \ { \ cmd; \ } #endif #define NETDOM_STR_LEN 64 extern BOOL Verbose; typedef struct _ND5_AUTH_INFO { PWSTR User; PWSTR Password; PWSTR pwzUserWoDomain; PWSTR pwzUsersDomain; } ND5_AUTH_INFO, *PND5_AUTH_INFO; #define NETDOM_TRUST_FLAG_DOMAIN_NOT_FOUND 1 #define NETDOM_TRUST_FLAG_PARENT 2 #define NETDOM_TRUST_FLAG_CHILD 4 #define NETDOM_TRUST_PDC_REQUIRED 8 #define NETDOM_TRUST_TYPE_MIT 10 #define NETDOM_TRUST_TYPE_INDIRECT 20 typedef struct _ND5_TRUST_INFO { PWSTR Server; PUNICODE_STRING DomainName; PUNICODE_STRING FlatName; PUNICODE_STRING ForestName; PSID Sid; LSA_HANDLE LsaHandle; // LSA Policy handle LSA_HANDLE TrustHandle; // TDO handle ULONG Flags; BOOL Uplevel; BOOL Connected; PVOID BlobToFree; BOOL fWasDownlevel; } ND5_TRUST_INFO, *PND5_TRUST_INFO; bool CmdFlagOn(ARG_RECORD * rgNetDomArgs, NETDOM_ARG_ENUM eArgIndex); DWORD NetDompGetTrustDirection( IN PND5_TRUST_INFO TrustingInfo, IN PND5_TRUST_INFO TrustedInfo, IN OUT PDWORD Direction ); // // From ndutil.cxx // DWORD NetDompValidateSecondaryArguments(ARG_RECORD * rgNetDomArgs, NETDOM_ARG_ENUM eFirstValidParam, ...); DWORD NetDompGetUserAndPasswordForOperation(ARG_RECORD * rgNetDomArgs, NETDOM_ARG_ENUM eUserType, PWSTR DefaultDomain, PND5_AUTH_INFO AuthIdent); VOID NetDompFreeAuthIdent( IN PND5_AUTH_INFO AuthIdent ); DWORD NetDompGetDomainForOperation(ARG_RECORD * rgNetDomArgs, PWSTR Server OPTIONAL, BOOL CanDefaultToCurrent, PWSTR *DomainName); DWORD NetDompGetArgumentString(ARG_RECORD * rgNetDomArgs, NETDOM_ARG_ENUM eArgToGet, PWSTR *ArgString); BOOL NetDompGetArgumentBoolean(ARG_RECORD * rgNetDomArgs, NETDOM_ARG_ENUM eArgToGet); DWORD NetDompControlService( IN PWSTR Server, IN PWSTR Service, IN DWORD ServiceOptions ); DWORD NetDompRestartAsRequired(ARG_RECORD * rgNetDomArgs, PWSTR Machine, PWSTR User, DWORD PreliminaryStatus, DWORD MsgID); DWORD NetDompCheckDomainMembership( IN PWSTR Server, IN PND5_AUTH_INFO AuthInfo, IN BOOL EstablishSessionIfRequried, IN OUT BOOL * DomainMember ); DWORD NetDompGenerateRandomPassword( IN PWSTR Buffer, IN ULONG Length ); BOOL NetDompGetUserConfirmation( IN DWORD PromptResId, IN PWSTR pwzName ); DWORD EnablePrivilege( PCWSTR PrivilegeName ); // // From netdom5.cxx // VOID DisplayExpertHelp(NETDOM_ARG_ENUM HelpOp); VOID DisplayHelp(NETDOM_ARG_ENUM HelpOp); VOID NetDompDisplayMessage( IN DWORD MessageId, ... ); VOID NetDompDisplayMessageAndError( IN DWORD MessageId, IN DWORD Error, IN PCWSTR String ); VOID NetDompDisplayUnexpectedParameter( IN PWSTR UnexpectedParameter ); VOID NetDompDisplayErrorMessage( IN DWORD Error ); // // From join.cxx // DWORD NetDompHandleAdd(ARG_RECORD * rgNetDomArgs); DWORD NetDompHandleRemove(ARG_RECORD * rgNetDomArgs); DWORD NetDompHandleJoin(ARG_RECORD * rgNetDomArgs, BOOL AllowMove); DWORD NetDompHandleMove(ARG_RECORD * rgNetDomArgs); DWORD NetDompHandleReset(ARG_RECORD * rgNetDomArgs); DWORD NetDompHandleResetPwd(ARG_RECORD * rgNetDomArgs); DWORD NetDompHandleVerify(ARG_RECORD * rgNetDomArgs); DWORD NetDompVerifyServerSC( IN PWSTR Domain, IN PWSTR Server, IN PND5_AUTH_INFO AuthInfo, IN ULONG OkMessageId, IN ULONG FailedMessageId ); DWORD NetDompResetServerSC( IN PWSTR Domain, IN PWSTR Server, IN PWSTR DomainController, OPTIONAL IN PND5_AUTH_INFO AuthInfo, IN ULONG OkMessageId, IN ULONG FailedMessageId ); // // From trust.cxx // DWORD NetDompHandleTrust(ARG_RECORD * rgNetDomArgs); DWORD NetDompTrustGetDomInfo( IN PWSTR Domain, IN PWSTR DomainController OPTIONAL, IN PND5_AUTH_INFO AuthInfo, IN OUT PND5_TRUST_INFO TrustInfo, IN BOOL ManageTrust, IN BOOL Force, IN BOOL fUseNullSession ); VOID NetDompFreeDomInfo( IN OUT PND5_TRUST_INFO TrustInfo ); DWORD NetDompVerifyTrust( IN PND5_TRUST_INFO TrustingInfo, IN PND5_TRUST_INFO TrustedInfo, BOOL fShowResults ); DWORD NetDompResetTrustPasswords( IN PWSTR TrustingDomain, IN PWSTR TrustedDomain, IN PND5_AUTH_INFO TrustingCreds, IN PND5_AUTH_INFO TrustedCreds ); DWORD NetDompSetMitTrustPW( IN PWSTR TrustingDomain, IN PWSTR TrustedDomain, IN PND5_AUTH_INFO TrustingCreds, IN PND5_AUTH_INFO TrustedCreds, IN PWSTR pwzNewTrustPW ); DWORD NetDompIsParentChild( IN PND5_TRUST_INFO pFirstDomainInfo, IN PND5_TRUST_INFO pSecondDomainName, OUT BOOL * pfParentChild ); // // From query.cxx // DWORD NetDompHandleQuery(ARG_RECORD * rgNetDomArgs); // // From time.cxx // DWORD NetDompHandleTime(ARG_RECORD * rgNetDomArgs); // // From rename.cxx // DWORD NetDompHandleMoveNT4BDC(ARG_RECORD * rgNetDomArgs); DWORD NetDompHandleRenameComputer(ARG_RECORD * rgNetDomArgs); // // From ldap.cxx // DWORD NetDompLdapBind( IN LPWSTR DC, IN LPWSTR Domain, IN LPWSTR User, IN LPWSTR Password, IN ULONG BindType, OUT PLDAP *Ldap ); DWORD NetDompLdapUnbind( IN PLDAP Ldap ); DWORD NetDompLdapReadOneAttribute( IN PLDAP Ldap, IN PWSTR ObjectPath, IN PWSTR Attribute, OUT PWSTR *ReadAttribute ); BOOL IsLocalMachine(PCWSTR pwzMachine); DWORD NetDompJoinDownlevel( IN PWSTR Server, IN PWSTR Account, IN PWSTR Password, IN PWSTR Dc, IN ULONG DcFlags, IN BOOL AllowMove ); DWORD NetDompManageGroupMembership( IN PWSTR Server, IN PSID DomainSid, IN BOOL Delete ); DWORD NetDompManageMachineSecret( IN LSA_HANDLE PolicyHandle, IN LPWSTR lpPassword, IN INT fControl ); #endif //ifndef __NETDOM_H__