682 lines
19 KiB
C
682 lines
19 KiB
C
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 1998 - 1999
|
|
//
|
|
// File: results.h
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#ifndef HEADER_RESULTS
|
|
#define HEADER_RESULTS
|
|
|
|
#ifdef _DEBUG
|
|
#define DebugMessage(str) printf(str)
|
|
#define DebugMessage2(format, arg) printf(format, arg)
|
|
#define DebugMessage3(format, arg1, arg2) printf(format, arg1, arg2)
|
|
#else
|
|
#define DebugMessage(str)
|
|
#define DebugMessage2(format, arg)
|
|
#define DebugMessage3(format, arg1, arg2)
|
|
#endif
|
|
|
|
#ifdef _SHOW_GURU
|
|
#define PrintGuru(status, guru) _PrintGuru(status, guru)
|
|
#define PrintGuruMessage printf
|
|
#define PrintGuruMessage2 printf
|
|
#define PrintGuruMessage3 printf
|
|
#else
|
|
#define PrintGuru(status, guru)
|
|
#define PrintGuruMessage( str )
|
|
#define PrintGuruMessage2( format, arg )
|
|
#define PrintGuruMessage3(format, arg1, arg2)
|
|
#endif
|
|
|
|
#define NETCARD_CONNECTED 0
|
|
#define NETCARD_DISCONNECTED 1
|
|
#define NETCARD_STATUS_UNKNOWN 2
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: HotFixInfo
|
|
|
|
This structure holds the information about a single Hotfix.
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
BOOL fInstalled;
|
|
LPTSTR pszName; // use Free() to free
|
|
} HotFixInfo;
|
|
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
NdMessage
|
|
|
|
This provides for an easier way to pass messages along.
|
|
---------------------------------------------------------------------------*/
|
|
|
|
typedef enum {
|
|
Nd_Quiet = 0, // i.e. always print
|
|
Nd_Verbose = 1,
|
|
Nd_ReallyVerbose = 2,
|
|
Nd_DebugVerbose = 3,
|
|
} NdVerbose;
|
|
|
|
typedef struct
|
|
{
|
|
NdVerbose ndVerbose;
|
|
|
|
// possible combinations
|
|
// uMessageId == 0, pszMessage == NULL -- assume not set
|
|
// uMessageId != 0, pszMessage == NULL -- use string id
|
|
// uMessageId == 0, pszMessage != NULL -- use string
|
|
// uMessageId != 0, pszMessage != NULL -- use string id
|
|
//
|
|
|
|
// Note: the maximum size for a string loaded through this is 4096!
|
|
UINT uMessageId;
|
|
LPTSTR pszMessage;
|
|
} NdMessage;
|
|
|
|
typedef struct ND_MESSAGE_LIST
|
|
{
|
|
LIST_ENTRY listEntry;
|
|
NdMessage msg;
|
|
}NdMessageList;
|
|
|
|
void SetMessageId(NdMessage *pNdMsg, NdVerbose ndv, UINT uMessageId);
|
|
void SetMessage(NdMessage *pNdMsg, NdVerbose ndv, UINT uMessageId, ...);
|
|
void SetMessageSz(NdMessage *pNdMsg, NdVerbose ndv, LPCTSTR pszMessage);
|
|
void ClearMessage(NdMessage *pNdMsg);
|
|
|
|
void PrintNdMessage(NETDIAG_PARAMS *pParams, NdMessage *pNdMsg);
|
|
|
|
void AddIMessageToList(PLIST_ENTRY plistHead, NdVerbose ndv, int nIndent, UINT uMessageId, ...);
|
|
void AddIMessageToListSz(PLIST_ENTRY plistHead, NdVerbose ndv, int nIndent, LPCTSTR pszMsg);
|
|
|
|
void AddMessageToList(PLIST_ENTRY plistHead, NdVerbose ndv, UINT uMessageId, ...);
|
|
void AddMessageToListSz(PLIST_ENTRY plistHead, NdVerbose ndv, LPCTSTR pszMsg);
|
|
void AddMessageToListId(PLIST_ENTRY plistHead, NdVerbose ndv, UINT uMessageId);
|
|
void PrintMessageList(NETDIAG_PARAMS *pParams, PLIST_ENTRY plistHead);
|
|
void MessageListCleanUp(PLIST_ENTRY plistHead);
|
|
|
|
|
|
// These functions are for status messages (the messages that appear at the
|
|
// top).
|
|
void PrintStatusMessage(NETDIAG_PARAMS *pParams, int iIndent, UINT uMessageId, ...);
|
|
void PrintStatusMessageSz(NETDIAG_PARAMS *pParams, int iIndent, LPCTSTR pszMessage);
|
|
|
|
|
|
// Use this for printing debug messages (messages that require fDebugVerbose)
|
|
void PrintDebug(NETDIAG_PARAMS *pParams, int nIndent, UINT uMessageId, ...);
|
|
void PrintDebugSz(NETDIAG_PARAMS *pParams, int nIndent, LPCTSTR pszMessage, ...);
|
|
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_RESULT
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct {
|
|
WCHAR swzNetBiosName[MAX_COMPUTERNAME_LENGTH+1];
|
|
TCHAR szDnsHostName[DNS_MAX_NAME_LENGTH+1];
|
|
LPTSTR pszDnsDomainName; // this points to a string in szDnsHostName
|
|
|
|
WSADATA wsaData;
|
|
|
|
// NetBT parameters
|
|
DWORD dwLMHostsEnabled; // TRUE, FALSE, or HRESULT on error to read
|
|
DWORD dwDnsForWINS; // TRUE, FALSE, or HRESULT on error to read
|
|
|
|
// Server/OS information (such as version, build no, etc...)
|
|
LPTSTR pszCurrentVersion;
|
|
LPTSTR pszCurrentBuildNumber;
|
|
LPTSTR pszCurrentType;
|
|
LPTSTR pszProcessorInfo;
|
|
LPTSTR pszServerType;
|
|
int cHotFixes;
|
|
HotFixInfo * pHotFixes;
|
|
|
|
// List of domains to be tested
|
|
LIST_ENTRY listTestedDomains;
|
|
|
|
// Domain member information
|
|
// the primary domain info got by using DsRoleGetPrimaryDomainInformation()
|
|
PDSROLE_PRIMARY_DOMAIN_INFO_BASIC pPrimaryDomainInfo;
|
|
|
|
PTESTED_DOMAIN pMemberDomain; //the primary domain info in the TESTED_DOMAIN struct
|
|
|
|
BOOL fNetlogonIsRunning;
|
|
HRESULT hrMemberTestResult; // result of the test
|
|
|
|
// Logon information (who we're logged on as)
|
|
PUNICODE_STRING pLogonUser;
|
|
PUNICODE_STRING pLogonDomainName;
|
|
PTESTED_DOMAIN pLogonDomain;
|
|
BOOL fLogonWithCachedCredentials;
|
|
LPWSTR pswzLogonServer;
|
|
|
|
BOOL fKerberosIsWorking;
|
|
BOOL fSysVolNotReady;
|
|
|
|
// Is there any interfaces that are NetBT enabled
|
|
BOOL fHasNbtEnabledInterface;
|
|
|
|
|
|
} GLOBAL_RESULT;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_IPCONFIG
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct {
|
|
// set to TRUE if InitIpconfig has been run
|
|
BOOL fInitIpconfigCalled;
|
|
|
|
// Is IPX actually up and running?
|
|
BOOL fEnabled;
|
|
|
|
//
|
|
// IP-related info (non-DHCP related)
|
|
//
|
|
FIXED_INFO * pFixedInfo;
|
|
|
|
//
|
|
// This is a pointer to the beginning of the adapter list
|
|
// (Use this to free up the list of interfaces)
|
|
//
|
|
IP_ADAPTER_INFO * pAdapterInfoList;
|
|
|
|
// Is DHCP enabled? (on any adapter)
|
|
BOOL fDhcpEnabled;
|
|
} GLOBAL_IPCONFIG;
|
|
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: IPCONFIG_TST
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct {
|
|
|
|
// IP is active on this interface
|
|
BOOL fActive;
|
|
|
|
//
|
|
// Pointer to the IP adapter info for this interface
|
|
// Do NOT free this up! (free up the entire list by freeing
|
|
// up GLOBAL_IPCONFIG::pAdapterInfoList
|
|
//
|
|
IP_ADAPTER_INFO * pAdapterInfo;
|
|
|
|
TCHAR szDhcpClassID[MAX_DOMAIN_NAME_LEN];
|
|
|
|
// Is autoconfiguration possible?
|
|
DWORD fAutoconfigEnabled;
|
|
|
|
// is the adapter currently autoconfigured?
|
|
DWORD fAutoconfigActive;
|
|
|
|
// WINS node type?
|
|
UINT uNodeType;
|
|
|
|
TCHAR szDomainName[MAX_DOMAIN_NAME_LEN+1];
|
|
|
|
IP_ADDR_STRING DnsServerList;
|
|
|
|
// Can we ping the DHCP server?
|
|
HRESULT hrPingDhcpServer;
|
|
NdMessage msgPingDhcpServer;
|
|
|
|
// Can we ping the WINS servers?
|
|
HRESULT hrPingPrimaryWinsServer;
|
|
NdMessage msgPingPrimaryWinsServer;
|
|
HRESULT hrPingSecondaryWinsServer;
|
|
NdMessage msgPingSecondaryWinsServer;
|
|
|
|
// hrOK if the default gateway is on the same subnet as the ip address
|
|
HRESULT hrDefGwSubnetCheck;
|
|
|
|
// Test result
|
|
HRESULT hr;
|
|
|
|
} IPCONFIG_TST;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_LOOPBACK
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
NdMessage msgLoopBack;
|
|
HRESULT hr;
|
|
} GLOBAL_LOOPBACK;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_IPX
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
// TRUE if IPX is installed, FALSE otherwise
|
|
BOOL fInstalled;
|
|
|
|
// Is IPX actually up and running?
|
|
BOOL fEnabled;
|
|
|
|
// Handle to IPX
|
|
HANDLE hIsnIpxFd;
|
|
|
|
HRESULT hr;
|
|
} GLOBAL_IPX;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_NETBT_TRANSPORTS
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
LONG cTransportCount;
|
|
LIST_ENTRY Transports;
|
|
|
|
HRESULT hr;
|
|
BOOL fPerformed; //FALSE: there are no inerfaces that are NetBT enabled. Test skipped.
|
|
|
|
NdMessage msgTestResult;
|
|
} GLOBAL_NETBT_TRANSPORTS;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_DEFGW
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
// S_FALSE if no default gateways were reachable
|
|
// S_OK if at least one default gateway was reached
|
|
HRESULT hrReachable;
|
|
} GLOBAL_DEFGW;
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_AUTONET
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
BOOL fAllAutoConfig;
|
|
} GLOBAL_AUTONET;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_NETBTNM
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
LIST_ENTRY lmsgGlobalOutput;
|
|
HRESULT hrTestResult;
|
|
} GLOBAL_NBTNM;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_BROWSER
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
LIST_ENTRY lmsgOutput;
|
|
HRESULT hrTestResult;
|
|
BOOL fPerformed; //test will be skipped if no interfaces have NetBT enabled
|
|
} GLOBAL_BROWSER;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_BINDINGS
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
LIST_ENTRY lmsgOutput;
|
|
HRESULT hrTestResult;
|
|
} GLOBAL_BINDINGS;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_WAN
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
LIST_ENTRY lmsgOutput;
|
|
HRESULT hr;
|
|
BOOL fPerformed; //FALSE: there are no active RAS connections. Test skipped.
|
|
} GLOBAL_WAN;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_WINSOCK
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
UINT idsContext;// str ID of context, which has %s to take the cause of failure
|
|
HRESULT hr; // 0: success, otherwise failed
|
|
DWORD dwMaxUDP; // max size of UDP packets, 0
|
|
DWORD dwProts; // number of protocols providers
|
|
LPWSAPROTOCOL_INFO pProtInfo; // information on the providers
|
|
} GLOBAL_WINSOCK;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwNumRoutes;
|
|
LIST_ENTRY lmsgRoute;
|
|
DWORD dwNumPersistentRoutes;
|
|
LIST_ENTRY lmsgPersistentRoute;
|
|
HRESULT hrTestResult;
|
|
} GLOBAL_ROUTE;
|
|
|
|
typedef struct
|
|
{
|
|
LIST_ENTRY lmsgOutput;
|
|
HRESULT hrTestResult;
|
|
} GLOBAL_NDIS;
|
|
|
|
typedef struct
|
|
{
|
|
LIST_ENTRY lmsgGlobalOutput;
|
|
LIST_ENTRY lmsgInterfaceOutput; //Interface statistics
|
|
LIST_ENTRY lmsgConnectionGlobalOutput;
|
|
LIST_ENTRY lmsgTcpConnectionOutput;
|
|
LIST_ENTRY lmsgUdpConnectionOutput;
|
|
LIST_ENTRY lmsgIpOutput; // IP statistics
|
|
LIST_ENTRY lmsgTcpOutput; // TCP statistics
|
|
LIST_ENTRY lmsgUdpOutput; // UDP statistics
|
|
LIST_ENTRY lmsgIcmpOutput; // ICMP statistics
|
|
HRESULT hrTestResult;
|
|
} GLOBAL_NETSTAT;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_IPSEC
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
LIST_ENTRY lmsgGlobalOutput;
|
|
LIST_ENTRY lmsgAdditOutput;
|
|
} GLOBAL_IPSEC;
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_DNS
|
|
---------------------------------------------------------------------------*/
|
|
|
|
typedef struct {
|
|
HRESULT hr;
|
|
BOOL fOutput;
|
|
LIST_ENTRY lmsgOutput;
|
|
} GLOBAL_DNS;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_NETWARE
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct {
|
|
LPTSTR pszUser;
|
|
LPTSTR pszServer;
|
|
LPTSTR pszTree;
|
|
LPTSTR pszContext;
|
|
|
|
BOOL fConnStatus;
|
|
BOOL fNds;
|
|
DWORD dwConnType;
|
|
|
|
|
|
LIST_ENTRY lmsgOutput;
|
|
HRESULT hr;
|
|
} GLOBAL_NETWARE;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: MODEM_DEVICE
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
DWORD dwNegotiatedSpeed;
|
|
DWORD dwModemOptions;
|
|
DWORD dwDeviceID;
|
|
LPTSTR pszPort;
|
|
LPTSTR pszName;
|
|
} MODEM_DEVICE;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_MODEM
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct {
|
|
NdMessage ndOutput;
|
|
|
|
int cModems;
|
|
MODEM_DEVICE * pModemDevice;
|
|
HRESULT hr;
|
|
BOOL fPerformed; //FALSE: the machine has no line device, test skipped
|
|
} GLOBAL_MODEM;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_DCLIST
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
LIST_ENTRY lmsgOutput;
|
|
|
|
BOOL fPerformed; //FALSE: the machine is not a member machine, nor a DC, test skipped
|
|
NdMessage msgErr;
|
|
HRESULT hr;
|
|
} GLOBAL_DCLIST;
|
|
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_TRUST
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
LPTSTR pszContext; // context of failure
|
|
HRESULT hr; // 0: success, otherwise failed
|
|
BOOL fPerformed; //FALSE: the machine is not a member machine, nor a DC, test skipped
|
|
LIST_ENTRY lmsgOutput;
|
|
} GLOBAL_TRUST;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_KERBEROS
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
UINT idsContext;// str ID of context, which has %s to take the cause of failure
|
|
HRESULT hr; // 0: success, otherwise failed
|
|
BOOL fPerformed; //FALSE: the machine is not a member machine, nor a DC, test skipped
|
|
LIST_ENTRY lmsgOutput;
|
|
} GLOBAL_KERBEROS;
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: GLOBAL_LDAP
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct
|
|
{
|
|
UINT idsContext;// str ID of context, which has %s to take the cause of failure
|
|
HRESULT hr; // 0: success, otherwise failed
|
|
BOOL fPerformed; //FALSE: the machine is not a member machine, nor a DC, test skipped
|
|
LIST_ENTRY lmsgOutput;
|
|
} GLOBAL_LDAP;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
HRESULT hr;
|
|
BOOL fPerformed; //FALSE: the machine is not a member machine, nor a DC, test skipped
|
|
LIST_ENTRY lmsgOutput;
|
|
} GLOBAL_DSGETDC;
|
|
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: AUTONET_TST
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct {
|
|
BOOL fAutoNet;
|
|
} AUTONET_TST;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: DEF_GW_TST
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct {
|
|
BOOL dwNumReachable;
|
|
LIST_ENTRY lmsgOutput;
|
|
} DEF_GW_TST;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: NBT_NM_TST
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct {
|
|
LIST_ENTRY lmsgOutput;
|
|
BOOL fActive; //used for additional Nbt interfaces whose pResults->fActive == FALSE
|
|
BOOL fQuietOutput;
|
|
} NBT_NM_TST;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: WINS_TST
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct {
|
|
LIST_ENTRY lmsgPrimary;
|
|
LIST_ENTRY lmsgSecondary;
|
|
|
|
// Test result
|
|
HRESULT hr;
|
|
BOOL fPerformed; //if FALSE: there is no WINS servier configured for this interface, test skipped
|
|
}WINS_TST;
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: DNS_TST
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct {
|
|
// Set to TRUE if there is non-verbose output (i.e. errors)
|
|
BOOL fOutput;
|
|
LIST_ENTRY lmsgOutput;
|
|
} DNS_TST;
|
|
|
|
typedef struct {
|
|
int garbage;
|
|
} NDIS_TST;
|
|
|
|
|
|
typedef struct ___IPX_TEST_FRAME__ {
|
|
// returns 0-3
|
|
ULONG uFrameType;
|
|
|
|
// returns virtual net if NicId = 0
|
|
ULONG uNetworkNumber;
|
|
|
|
// adapter's MAC address
|
|
UCHAR Node[6];
|
|
|
|
LIST_ENTRY list_entry;
|
|
} IPX_TEST_FRAME;
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: IPX_TST
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct {
|
|
// Is this interface enabled for IPX?
|
|
BOOL fActive;
|
|
|
|
// passed into various functions
|
|
USHORT uNicId;
|
|
|
|
// Returns TRUE if set
|
|
BOOL fBindingSet;
|
|
|
|
// 1 = lan, 2 = up wan, 3 = down wan
|
|
UCHAR uType;
|
|
|
|
// to support more than one FRAME type
|
|
LIST_ENTRY list_entry_Frames; // it's ZeroMemoryed during init
|
|
|
|
} IPX_TST;
|
|
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: INTERFACE_RESULT
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct {
|
|
|
|
// If this is set to TRUE, show the data for this interface
|
|
BOOL fActive;
|
|
|
|
// The media-sense status of this card
|
|
DWORD dwNetCardStatus;
|
|
|
|
// Name (or ID) of this adapter (typically a GUID)
|
|
LPTSTR pszName;
|
|
|
|
// Friendly name for this adapter
|
|
LPTSTR pszFriendlyName;
|
|
|
|
//if NetBT is enabled
|
|
BOOL fNbtEnabled;
|
|
|
|
IPCONFIG_TST IpConfig;
|
|
AUTONET_TST AutoNet;
|
|
DEF_GW_TST DefGw;
|
|
NBT_NM_TST NbtNm;
|
|
WINS_TST Wins;
|
|
DNS_TST Dns;
|
|
NDIS_TST Ndis;
|
|
IPX_TST Ipx;
|
|
} INTERFACE_RESULT;
|
|
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
Struct: NETDIAG_RESULT
|
|
---------------------------------------------------------------------------*/
|
|
typedef struct {
|
|
GLOBAL_RESULT Global;
|
|
GLOBAL_IPCONFIG IpConfig;
|
|
GLOBAL_LOOPBACK LoopBack;
|
|
GLOBAL_NETBT_TRANSPORTS NetBt;
|
|
GLOBAL_DEFGW DefGw;
|
|
GLOBAL_AUTONET AutoNet;
|
|
GLOBAL_NBTNM NbtNm;
|
|
GLOBAL_BROWSER Browser;
|
|
GLOBAL_BINDINGS Bindings;
|
|
GLOBAL_WINSOCK Winsock;
|
|
GLOBAL_WAN Wan;
|
|
GLOBAL_IPX Ipx;
|
|
GLOBAL_DNS Dns;
|
|
GLOBAL_ROUTE Route;
|
|
GLOBAL_NDIS Ndis;
|
|
GLOBAL_NETSTAT Netstat;
|
|
GLOBAL_NETWARE Netware;
|
|
GLOBAL_TRUST Trust;
|
|
GLOBAL_MODEM Modem;
|
|
GLOBAL_KERBEROS Kerberos;
|
|
GLOBAL_DCLIST DcList;
|
|
GLOBAL_LDAP LDAP;
|
|
GLOBAL_DSGETDC DsGetDc;
|
|
GLOBAL_IPSEC IPSec;
|
|
|
|
LONG cNumInterfaces;
|
|
LONG cNumInterfacesAllocated;
|
|
INTERFACE_RESULT* pArrayInterface;
|
|
|
|
} NETDIAG_RESULT;
|
|
|
|
void ResultsInit(NETDIAG_RESULT* pResults);
|
|
void PrintGlobalResults(NETDIAG_PARAMS *pParams, NETDIAG_RESULT *pResults);
|
|
void PrintPerInterfaceResults(NETDIAG_PARAMS *pParams,
|
|
NETDIAG_RESULT *pResults,
|
|
INTERFACE_RESULT *pIfRes);
|
|
void FindInterface(NETDIAG_RESULT *pResult, INTERFACE_RESULT **ppIf);
|
|
void ResultsCleanup(NETDIAG_PARAMS *pParams, NETDIAG_RESULT* pResults);
|
|
|
|
void PrintWaitDots(NETDIAG_PARAMS *pParams);
|
|
|
|
#endif |