|
|
/*++
Copyright (c) 1999, Microsoft Corporation
Module Name:
sample\utils.h
Abstract:
The file contains the header for utils.c. --*/
// definitions...
#define is ==
#define isnot !=
#define or ||
#define and &&
#define ever ;;
#define GetGlobalConfiguration IpmontrGetInfoBlockFromGlobalInfo
#define SetGlobalConfiguration IpmontrSetInfoBlockInGlobalInfo
#define DeleteGlobalConfiguration IpmontrDeleteInfoBlockFromGlobalInfo
#define GetInterfaceConfiguration IpmontrGetInfoBlockFromInterfaceInfo
#define SetInterfaceConfiguration IpmontrSetInfoBlockInInterfaceInfo
#define DeleteInterfaceConfiguration IpmontrDeleteInfoBlockFromInterfaceInfo
#define InterfaceNameFromGuid IpmontrGetFriendlyNameFromIfName
#define InterfaceGuidFromName IpmontrGetIfNameFromFriendlyName
#define InterfaceNameFromIndex IpmontrGetFriendlyNameFromIfIndex
#define InterfaceIndexFromName IpmontrGetIfIndexFromFriendlyName
#define DeleteProtocol IpmontrDeleteProtocol
// typedefs...
typedef enum { GET_EXACT, GET_FIRST, GET_NEXT } MODE;
typedef enum { FORMAT_TABLE, FORMAT_VERBOSE, FORMAT_DUMP } FORMAT;
typedef DWORD (*PGET_INDEX_FUNCTION) ( IN HANDLE hMibServer, IN PWCHAR pwszArgument, OUT PDWORD pdwIfIndex );
typedef VOID (*PPRINT_FUNCTION)( IN HANDLE hConsole, IN HANDLE hMibServer, IN PVOID pvOutput, IN FORMAT fFormat );
typedef struct _MIB_OBJECT_ENTRY { PWCHAR pwszObjectName; DWORD dwObjectId; PGET_INDEX_FUNCTION pfnGetIndex; DWORD dwHeaderMessageId; PPRINT_FUNCTION pfnPrint; } MIB_OBJECT_ENTRY, *PMIB_OBJECT_ENTRY;
// macros...
#define VerifyInstalled(dwProtocolId, dwNameId) \
{ \ if (!IsProtocolInstalled(dwProtocolId, dwNameId, TRUE)) \ return ERROR_SUPPRESS_OUTPUT; \ }
#define ProcessError() \
{ \ if (dwErr is ERROR_INVALID_PARAMETER) \ { \ DisplayError(g_hModule, \ EMSG_BAD_OPTION_VALUE, \ ppwcArguments[dwCurrentIndex + i], \ pttTags[pdwTagType[i]].pwszTag); \ dwErr = ERROR_SHOW_USAGE; \ } \ }
#define UnicodeIpAddress(pwszUnicodeIpAddress, pszAsciiIpAddress) \
MultiByteToWideChar(GetConsoleOutputCP(), \ 0, \ (pszAsciiIpAddress), \ -1, \ (pwszUnicodeIpAddress), \ ADDR_LENGTH + 1)
#define INET_NTOA(x) (inet_ntoa(*(struct in_addr*)&(x)))
#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, x)
#define FREE(x) HeapFree(GetProcessHeap(), 0, x)
// inline functions...
BOOL __inline IsInterfaceInstalled( IN PWCHAR pwszInterfaceGuid, IN DWORD dwProtocolId ) { DWORD dwErr = NO_ERROR; PBYTE pbBuffer = NULL;
dwErr = GetInterfaceConfiguration(pwszInterfaceGuid, dwProtocolId, &pbBuffer, NULL, NULL, NULL); if (pbBuffer) FREE(pbBuffer); return (dwErr is NO_ERROR); }
DWORD __inline QuotedInterfaceNameFromGuid ( IN PWCHAR pwszInterfaceGuid, OUT PWCHAR *ppwszQuotedInterfaceName ) { DWORD dwErr = NO_ERROR; DWORD dwSize = MAX_INTERFACE_NAME_LEN + 1; WCHAR pwszInterfaceName[MAX_INTERFACE_NAME_LEN + 1] = L"\0";
dwErr = InterfaceNameFromGuid(pwszInterfaceGuid, pwszInterfaceName, &dwSize); if (dwErr is NO_ERROR) { *ppwszQuotedInterfaceName = MakeQuotedString(pwszInterfaceName); if (*ppwszQuotedInterfaceName is NULL) dwErr = ERROR_NOT_ENOUGH_MEMORY; }
return dwErr; }
// functions...
BOOL IsProtocolInstalled( IN DWORD dwProtocolId, IN DWORD dwNameId, IN DWORD dwLogUninstalled );
DWORD GetIfIndex( IN HANDLE hMibServer, IN PWCHAR pwszArgument, OUT PDWORD pdwIfIndex );
DWORD MibGet( IN HANDLE hMibServer, IN MODE mMode, IN PVOID pvIn, IN DWORD dwInSize, OUT PVOID *ppvOut );
DWORD GetString( IN HANDLE hModule, IN FORMAT fFormat, IN DWORD dwValue, IN PVALUE_TOKEN vtTable, IN PVALUE_STRING vsTable, IN DWORD dwNumArgs, OUT PTCHAR *pptszString );
|