windows-nt/Source/XPSP1/NT/net/tcpip/services/telnet/admin/admutils.h
2020-09-26 16:20:57 +08:00

228 lines
7 KiB
C

//---------------------------------------------------------
// 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 <wbemidl.h>
#include <stdio.h>
#include <winsock2.h>
#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