//--------------------------------------------------------- // Copyright (c) 1999-2000 Microsoft Corporation // // admutils.h // // vikram K.R.C. (vikram_krc@bigfoot.com) // // The header file for the command line admin tools. // (May-2000) //--------------------------------------------------------- #ifndef _ADMIN_FUNCTIONS_HEADER_ #define _ADMIN_FUNCTIONS_HEADER_ #include #include #include #ifndef WHISTLER_BUILD #include "allutils.h" #else // the other definition is in commfunc.h typedef struct _StrList { TCHAR *Str; struct _StrList *next; }StrList; #endif #ifdef __cplusplus extern "C" { #endif // Arraysize(buf) returns the no. of chars in the buffer // Please do not use it for dynamic arrays. This will // work only for static buffers. #ifndef ARRAYSIZE #define ARRAYSIZE(buf) (sizeof(buf) / sizeof((buf)[0])) #endif typedef struct _STRING_LIST { DWORD count; LPTSTR *strings; } STRING_LIST, *PSTRING_LIST; #define TEXT_MAX_INTEGER_VALUE L"2147483647" #define MAX_LEN_FOR_CODEPAGE 6 #define SZLOCALMACHINE L"localhost" #define MAX_COMMAND_LINE 500 #define MAX_BUFFER_SIZE 4096 //FOR XPSP1. If the variables are not defined, that means they are not present in .rc //and .h files. Hardcode the values that fall in the range obtained for Telnet resources //in xpsp1res.h #ifndef IDR_NEW_TELNET_USAGE #define IDR_NEW_TELNET_USAGE 20001 #endif #ifndef IDR_YES #define IDR_YES 20002 #endif #ifndef IDR_NO #define IDR_NO 20003 #endif #ifndef IDR_TIME_HOURS #define IDR_TIME_HOURS 20004 #endif #ifndef IDR_TIME_MINUTES #define IDR_TIME_MINUTES 20005 #endif #ifndef IDR_TIME_SECONDS #define IDR_TIME_SECONDS 20006 #endif #ifndef IDR_MAPPING_NOT_ON #define IDR_MAPPING_NOT_ON 20007 #endif #ifndef IDR_STATUS_STOPPED #define IDR_STATUS_STOPPED 20008 #endif #ifndef IDR_STATUS_RUNNING #define IDR_STATUS_RUNNING 20009 #endif #ifndef IDR_STATUS_PAUSED #define IDR_STATUS_PAUSED 20010 #endif #ifndef IDR_STATUS_START_PENDING #define IDR_STATUS_START_PENDING 20011 #endif #ifndef IDR_STATUS_STOP_PENDING #define IDR_STATUS_STOP_PENDING 20012 #endif #ifndef IDR_STATUS_CONTINUE_PENDING #define IDR_STATUS_CONTINUE_PENDING 20013 #endif #ifndef IDR_STATUS_PAUSE_PENDING #define IDR_STATUS_PAUSE_PENDING 20014 #endif #ifndef IDR_ALREADY_STARTED #define IDR_ALREADY_STARTED 20015 #endif #ifndef IDS_SERVICE_STARTED #define IDS_SERVICE_STARTED 20016 #endif #ifndef IDS_E_SERVICE_NOT_STARTED #define IDS_E_SERVICE_NOT_STARTED 20017 #endif #ifndef IDR_SERVICE_PAUSED #define IDR_SERVICE_PAUSED 20018 #endif #ifndef IDR_SERVICE_CONTINUED #define IDR_SERVICE_CONTINUED 20019 #endif #ifndef IDR_SERVICE_NOT_PAUSED #define IDR_SERVICE_NOT_PAUSED 20020 #endif #ifndef IDR_SERVICE_NOT_CONTINUED #define IDR_SERVICE_NOT_CONTINUED 20021 #endif #ifndef IDS_E_INVALIDARG #define IDS_E_INVALIDARG 20022 #endif #define SLASH_SLASH L"\\\\" #define _p_CNAME_ 0 #define _p_USER_ 1 #define _p_PASSWD_ 2 int GetTrustedDomainList(LPTSTR szMachine, LPTSTR * list, LPTSTR * primary); void HelperFreeStringList(PSTRING_LIST pList); HRESULT LoadNTDomainList(LPTSTR szMachine); extern BOOL g_fCoInitSuccess; //Structure defn to store all the information typedef struct { int classname; wchar_t* propname; VARIANT var; int fDontput; }ConfigProperty; // Some defines used to access the name of the computer from the registry #define REG_SUBKEY_COMPUTER_NAME L"SYSTEM\\CurrentControlSet\\Control\\ComputerName\\ActiveComputerName" #define REG_ENTRY_COMPUTER_NAME L"ComputerName" // If at all if needed to increase the no. of mapping servers names that // can be configurable thru sfuadmin.exe, just change the #define here #define MAX_NO_OF_MAPPING_SERVERS 1 //common functions for all the sfu-admins. #define GetClass(x, y) GetClassEx((x), (y), TRUE, KEY_ALL_ACCESS) #define SAFE_FREE(x) {if ((x)) {free((x));(x)=NULL;}} //authenticate to the remote computer HRESULT DoNetUseAdd(WCHAR*wzLoginname, WCHAR* wzPassword,WCHAR* wzCname); HRESULT DoNetUseDel(WCHAR* wzCname); // to connect to the registry on the specified computer HRESULT GetConnection(WCHAR* wzCname); //to get a handle to a specfic class(hive) HRESULT GetClassEx(int, int, BOOL bPrintErrorMessages, REGSAM samDesired); //close all the open hives. HRESULT PutClasses(); //read the value of the property HRESULT GetProperty(int , int , VARIANT* ); //set the value of the property HRESULT PutProperty(int , int , VARIANT* ); //to get handle to the service and do start/stop/etc. HRESULT GetSerHandle(LPCTSTR lpServiceName,DWORD dwScmDesiredAccess, DWORD dwRegDesiredAccess,BOOL fSuppressMsg); HRESULT CloseHandles(void); HRESULT StartSfuService(LPCTSTR lpServiceName); HRESULT ControlSfuService(LPCTSTR lpServiceName,DWORD dwControl); HRESULT QuerySfuService(LPCTSTR lpServiceName); //for printing out any message by loading from strings dll. HRESULT PrintMessage(HANDLE fp, int); //for printing out any message by loading the string from correct resource and //display english message if everything else fails. HRESULT PrintMessageEx(HANDLE fp, int, LPCTSTR); //for printing out error messages by loading from strings dll. int ShowError(int); int ShowErrorEx(int nError,WCHAR *wzFormatString); int ShowErrorFallback(int, LPCTSTR); BOOL FileIsConsole( HANDLE fp ); void MyWriteConsole( HANDLE fp, LPWSTR lpBuffer, DWORD cchBuffer); //get and set bit(in pos given by second arg) in int( the first arg) int GetBit(int , int ); int SetBit(int , int ); //returns a WCHAR string . wchar_t* DupWStr(char *str); //returns Char string from wchar String char* DupCStr(wchar_t *wzStr); //Is it a valid machine??? HRESULT IsValidMachine(wchar_t*, int*); BOOL Get_Inet_Address(struct sockaddr_in *addr, char *host); HRESULT getHostNameFromIP(char *szCname, WCHAR** wzCname); //To determine if the specified domain a valid domain. HRESULT IsValidDomain(wchar_t *wsDomainName, int *fValid); //Check for Password; If only user name specified, get password. If the other way round, report error HRESULT CheckForPassword(void); void ConvertintoSeconds(int nProperty,int * nSeconds); void PrintFormattedErrorMessage(LONG ErrorCode); HRESULT GetDomainHostedByThisMc( LPWSTR szDomain ); BOOL CheckForInt(int nProperty); HRESULT CheckForMaxInt(WCHAR *wzValue,DWORD ErrorCode); DWORD PreAnalyzer(int argc,WCHAR *argv[],int nProperty,WCHAR *wzOption, int nCurrentOp,int *nNextOp, BOOL *fSuccess,BOOL IsSpaceAllowed); DWORD PrintMissingRegValueMsg(int nProperty, int nNumofprop); int TnLoadString(int msg_id, LPTSTR string, int max_size_of_buffer, LPCTSTR english_string); #ifdef __cplusplus } #endif #endif