//*************************************************************************** // Copyright (c) Microsoft Corporation // // Module Name: // GETMAC.H // // Abstract: // Contains function prototypes and macros. // // Author: // Vasundhara .G // // Revision History: // Vasundhara .G 26-sep-2k : Created It. // Vasundhara .G 31-oct-2k : Modified. // Added macros and some #defines. //*************************************************************************** #ifndef __GETMAC_H #define __GETMAC_H // constants / defines / enumerations #define MAX_STRING 256 #define MAX_OPTIONS 7 #define MAX_COLUMNS 5 #define USAGE_END 37 //Command line parser index #define CMD_PARSE_SERVER 0 #define CMD_PARSE_USER 1 #define CMD_PARSE_PWD 2 #define CMD_PARSE_FMT 3 #define CMD_PARSE_USG 4 #define CMD_PARSE_HRD 5 #define CMD_PARSE_VER 6 //show results index #define SH_RES_HOST 0 #define SH_RES_CON 1 #define SH_RES_TYPE 2 #define SH_RES_MAC 3 #define SH_RES_TRAN 4 //wmi registry key value #define WMI_HKEY_CLASSES_ROOT 2147483648 #define WMI_HKEY_CURRENT_USER 2147483649 #define WMI_HKEY_LOCAL_MACHINE 2147483650 #define WMI_HKEY_USERS 2147483651 #define WMI_HKEY_CURRENT_CONFIG 2147482652 // Error constants #define ERROR_USER_WITH_NOSERVER GetResString( IDS_USER_NMACHINE ) #define ERROR_SERVER_WITH_NOPASSWORD GetResString( IDS_SERVER_NPASSWORD ) #define ERROR_NULL_SERVER GetResString( IDS_NULL_SERVER ) #define ERROR_NULL_USER GetResString( IDS_NULL_USER ) #define ERROR_INVALID_HEADER_OPTION GetResString( IDS_INVALID_OPTIONS ) #define ERROR_TYPE_REQUEST GetResString( IDS_TYPE_REQUEST ) #define ERROR_STRING GetResString( IDS_ERROR_STRING ) #define ERROR_VERSION_MISMATCH GetResString( IDS_ERROR_VERSION_MISMATCH ) #define ERROR_NOT_RESPONDING GetResString( IDS_NOT_RESPONDING ) #define ERROR_NO_MACHINE GetResString( IDS_NO_MACHINE ) #define ERROR_INVALID_MACHINE GetResString( IDS_INVALID_MACHINE ) #define ERROR_WKST_NOT_FOUND GetResString( IDS_WKST_NOT_FOUND ) //warning message #define IGNORE_LOCALCREDENTIALS GetResString( IDS_IGNORE_LOCALCREDENTIALS ) #define WARNING_STRING GetResString( IDS_WARNING_STRING ) //info message #define NO_NETWORK_ADAPTERS GetResString( IDS_NO_NETWORK_ADAPTERS ) #define NO_NETWOK_PROTOCOLS GetResString( IDS_NO_NETWOK_PROTOCOLS ) //show results column length #define HOST_NAME_WIDTH AsLong(GetResString( IDS_HOST_NAME_WIDTH ),10 ) #define CONN_NAME_WIDTH AsLong(GetResString( IDS_CONN_NAME_WIDTH ),10 ) #define ADAPT_TYPE_WIDTH AsLong(GetResString( IDS_ADAPT_TYPE_WIDTH ),10 ) #define MAC_ADDR_WIDTH AsLong(GetResString( IDS_MAC_ADDR_WIDTH ),10 ) #define TRANS_NAME_WIDTH AsLong(GetResString( IDS_TRANS_NAME_WIDTH ),10 ) //output headers strings #define RES_HOST_NAME GetResString( RES_HOST ) #define RES_CONNECTION_NAME GetResString( RES_CONNECTION ) #define RES_ADAPTER_TYPE GetResString( RES_ADAPTER ) #define RES_MAC_ADDRESS GetResString( RES_ADDRESS ) #define RES_TRANS_NAME GetResString( RES_TRANSNAME ) //general #define NOT_AVAILABLE GetResString( IDS_NOT_AVAILABLE ) #define DISABLED GetResString( IDS_DISABLED ) #define HYPHEN_STRING GetResString( IDS_HYPHEN_STRING ) #define COLON_STRING GetResString( IDS_COLON_STRING ) #define NEW_LINE GetResString( IDS_NEW_LINE ) #define FORMAT_TYPES GetResString( IDS_FORMAT_TYPES ) //registry key names #define DEFAULT_ADDRESS _T( "000000000000" ) #define CONNECTION_KEYPATH _T( "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\" ) #define TRANSPORT_KEYPATH _T( "SYSTEM\\CurrentControlSet\\Services\\" ) #define LINKAGE _T( "\\Linkage" ) #define ROUTE _T( "route" ) #define EXPORT _T( "Export" ) #define CONNECTION_STRING _T( "\\Connection" ) #define REG_NAME _T( "name" ) #define NETBIOS _T( "NetBIOS" ) //command line options #define CMDOPTION_SERVER _T( "s" ) #define CMDOPTION_USER _T( "u" ) #define CMDOPTION_PASSWORD _T( "p" ) #define CMDOPTION_FORMAT _T( "fo" ) #define CMDOPTION_USAGE _T( "?" ) #define CMDOPTION_HEADER _T( "nh" ) #define CMDOPTION_VERBOSE _T( "v" ) #define TOKEN_BACKSLASH2 _T( "\\\\" ) #define TOKEN_BACKSLASH3 _T( "\\\\\\" ) //wmi classes and property names #define HYPHEN_CHAR L'-' #define COLON_CHAR L':' #define BACK_SLASHS L"\\\\" #define BACK_SLASH L"\\" #define NETCONNECTION_STATUS L"NetConnectionStatus" #define ADAPTER_MACADDR L"MACAddress" #define NETCONNECTION_ID L"NetConnectionID" #define DEVICE_ID L"DeviceID" #define NAME L"Name" #define HOST_NAME L"SystemName" #define SETTING_ID L"SettingID" #define NETWORK_ADAPTER_CLASS L"Win32_NetworkAdapter" #define NETWORK_ADAPTER_CONFIG_CLASS L"Win32_NetworkAdapterConfiguration" #define NETWORK_PROTOCOL L"Win32_NetworkProtocol" #define CLASS_CIMV2_Win32_OperatingSystem L"Win32_OperatingSystem" #define QUERY_LANGUAGE L"WQL" #define ASSOCIATOR_QUERY _T( "ASSOCIATORS OF {Win32_NetworkAdapter.DeviceID=\"%s\"} WHERE ResultClass=Win32_NetworkAdapterConfiguration" ) #define SUCCESS 0 #define FAILURE 1 #define WMI_NAMESPACE_CIMV2 L"root\\cimv2" #define WMI_NAMESPACE_DEFAULT L"root\\default" #define WMI_CLAUSE_AND L"AND" #define WMI_CLAUSE_OR L"OR" #define WMI_CLAUSE_WHERE L"WHERE" #define WMI_REGISTRY L"StdRegProv" #define WMI_REGISTRY_M_STRINGVALUE L"GetStringValue" #define WMI_REGISTRY_M_MSTRINGVALUE L"GetMultiStringValue" #define WMI_REGISTRY_IN_HDEFKEY L"hDefKey" #define WMI_REGISTRY_IN_SUBKEY L"sSubKeyName" #define WMI_REGISTRY_IN_VALUENAME L"sValueName" #define WMI_REGISTRY_OUT_VALUE L"sValue" #define WMI_REGISTRY_OUT_RETURNVALUE L"ReturnValue" #define CAPTION L"Caption" //macro for freeing, deleting, releasing memory which has been allocated using calloc #define FREESTRING( pStr ) \ if ( pStr ) \ { \ free( pStr ); \ pStr = NULL; \ } #define DELETESTRING( pStr ) \ if ( pStr ) \ { \ delete[] pStr; \ pStr = NULL; \ } #define SAFERELEASE( pIObj ) \ if ( pIObj != NULL ) \ { \ pIObj->Release(); \ pIObj = NULL; \ } #define SAFEBSTRRELEASE( pIObj ) \ if ( pIObj != NULL ) \ { \ SysFreeString( pIObj ); \ pIObj = NULL; \ } #define ONFAILTHROWERROR(hResult) \ if (FAILED(hResult)) \ { \ _com_issue_error(hResult); \ } #define SAFE_RELEASE( interfacepointer ) \ if ( (interfacepointer) != NULL ) \ { \ (interfacepointer)->Release(); \ (interfacepointer) = NULL; \ } \ 1 #define SAFE_EXECUTE( statement ) \ hRes = statement; \ if ( FAILED( hRes ) ) \ { \ _com_issue_error( hRes ); \ } \ 1 //function prototype BOOL ConnectWmi( IWbemLocator *pLocator, IWbemServices **ppServices, LPCWSTR pwszServer, LPCWSTR pwszUser, LPCWSTR pwszPassword, COAUTHIDENTITY **ppAuthIdentity, BOOL bCheckWithNullPwd = FALSE, LPCWSTR pwszNamespace = WMI_NAMESPACE_CIMV2, HRESULT *phRes = NULL, BOOL *pbLocalSystem = NULL ); BOOL ConnectWmiEx( IWbemLocator *pLocator, IWbemServices **ppServices, LPCWSTR pwszServer, CHString &strUserName, CHString &strPassword, COAUTHIDENTITY **ppAuthIdentity, BOOL bNeedPassword = FALSE, LPCWSTR pszNamespace = WMI_NAMESPACE_CIMV2, BOOL *pbLocalSystem = NULL ); BOOL IsValidServerEx( LPCWSTR pwszServer, BOOL &bLocalSystem ); HRESULT SetInterfaceSecurity( IUnknown *pInterface, COAUTHIDENTITY *pAuthIdentity ); VOID WINAPI WbemFreeAuthIdentity( COAUTHIDENTITY **ppAuthIdentity ); VOID WMISaveError( HRESULT hResError ); DWORD GetTargetVersionEx( IWbemServices* pWbemServices, COAUTHIDENTITY* pAuthIdentity ); // inline functions inline VOID WMISaveError( _com_error &e ) { WMISaveError( e.Error() ); } #endif // __GETMAC_H