//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1997. // // File: D I A G C M N . C P P // // Contents: Common functions for netcfg diagnostics // // Notes: // // Author: danielwe 23 Mar 1999 // //---------------------------------------------------------------------------- #include "pch.h" #pragma hdrstop #include "diag.h" #include "ncstring.h" //+--------------------------------------------------------------------------- // // Function: SzFromCharacteristics // // Purpose: Converts a DWORD characteristics value into a string listing // the flags that are turned on. // // Arguments: // dwChars [in] DWORD of netcfg characteristics (i.e. NCF_HIDDEN) // pstrChars [out] tstring of flags that are turned on, separated by a // space. // // Returns: Nothing // // Author: danielwe 23 Mar 1999 // // Notes: // VOID SzFromCharacteristics(DWORD dwChars, tstring *pstrChars) throw(std::bad_alloc) { INT i; const PCWSTR chars[] = { L"NCF_VIRTUAL ", L"NCF_SOFTWARE_ENUMERATED ", L"NCF_PHYSICAL ", L"NCF_HIDDEN ", L"NCF_NO_SERVICE ", L"NCF_NOT_USER_REMOVABLE ", L"NCF_MULTIPORT_INSTANCED_ADAPTER ", L"NCF_HAS_UI ", L"NCF_MODEM ", L"NCF_FILTER_DEVICE ", L"NCF_FILTER ", L"NCF_DONTEXPOSELOWER ", L"NCF_HIDE_BINDING ", L"0x4000 ", L"0x8000 ", L"NCF_FORCE_SCM_NOTIFY ", L"NCF_FIXED_BINDING ", }; for (i = 0; i < celems(chars); i++) { if (dwChars & (1 << i) ) { pstrChars->append(chars[i]); } } } //+--------------------------------------------------------------------------- // // Function: SzFromNetconStatus // // Purpose: Converts a NETCON_STATUS value into a string // // Arguments: // Status [in] Status value to convert // // Returns: The string // // Author: danielwe 23 Mar 1999 // // Notes: // PCWSTR SzFromNetconStatus(NETCON_STATUS Status) throw() { switch (Status) { case NCS_DISCONNECTED: return L"NCS_DISCONNECTED"; case NCS_CONNECTING: return L"NCS_CONNECTING"; case NCS_CONNECTED: return L"NCS_CONNECTED"; case NCS_DISCONNECTING: return L"NCS_DISCONNECTING"; case NCS_HARDWARE_NOT_PRESENT: return L"NCS_HARDWARE_NOT_PRESENT"; case NCS_HARDWARE_DISABLED: return L"NCS_HARDWARE_DISABLED"; case NCS_HARDWARE_MALFUNCTION: return L"NCS_HARDWARE_MALFUNCTION"; } return L"Unknown"; } //+--------------------------------------------------------------------------- // // Function: SzFromCmProb // // Purpose: Converts a config manager (CM) problem value into a string // // Arguments: // ulProb [in] Problem value // // Returns: String version of value // // Author: danielwe 23 Mar 1999 // // Notes: // PCWSTR SzFromCmProb(ULONG ulProb) throw() { const PCWSTR a_szProbs[] = { L"", L"CM_PROB_NOT_CONFIGURED", L"CM_PROB_DEVLOADER_FAILED", L"CM_PROB_OUT_OF_MEMORY", L"CM_PROB_ENTRY_IS_WRONG_TYPE", L"CM_PROB_LACKED_ARBITRATOR", L"CM_PROB_BOOT_CONFIG_CONFLICT", L"CM_PROB_FAILED_FILTER", L"CM_PROB_DEVLOADER_NOT_FOUND", L"CM_PROB_INVALID_DATA", L"CM_PROB_FAILED_START", L"CM_PROB_LIAR", L"CM_PROB_NORMAL_CONFLICT", L"CM_PROB_NOT_VERIFIED", L"CM_PROB_NEED_RESTART", L"CM_PROB_REENUMERATION", L"CM_PROB_PARTIAL_LOG_CONF", L"CM_PROB_UNKNOWN_RESOURCE", L"CM_PROB_REINSTALL", L"CM_PROB_REGISTRY", L"CM_PROB_VXDLDR", L"CM_PROB_WILL_BE_REMOVED", L"CM_PROB_DISABLED", L"CM_PROB_DEVLOADER_NOT_READY", L"CM_PROB_DEVICE_NOT_THERE", L"CM_PROB_MOVED", L"CM_PROB_TOO_EARLY", L"CM_PROB_NO_VALID_LOG_CONF", L"CM_PROB_FAILED_INSTALL", L"CM_PROB_HARDWARE_DISABLED", L"CM_PROB_CANT_SHARE_IRQ", L"CM_PROB_FAILED_ADD", }; return a_szProbs[ulProb]; } //+--------------------------------------------------------------------------- // // Function: SzFromCmStatus // // Purpose: Converts a config manager (CM) status value into a string // containing all flags that are turned on. // // Arguments: // ulStatus [in] CM status value // pstrStatus [out] Returns string of flags that are on // // Returns: Nothing // // Author: danielwe 23 Mar 1999 // // Notes: // VOID SzFromCmStatus(ULONG ulStatus, tstring *pstrStatus) throw(std::bad_alloc) { INT i; const PCWSTR a_szStatus[] = { L"DN_ROOT_ENUMERATED ", L"DN_DRIVER_LOADED ", L"DN_ENUM_LOADED ", L"DN_STARTED ", L"DN_MANUAL ", L"DN_NEED_TO_ENUM ", L"DN_NOT_FIRST_TIME ", L"DN_HARDWARE_ENUM ", L"DN_LIAR/DN_NEED_RESTART ", L"DN_HAS_MARK ", L"DN_HAS_PROBLEM ", L"DN_FILTERED ", L"DN_MOVED ", L"DN_DISABLEABLE ", L"DN_REMOVABLE ", L"DN_PRIVATE_PROBLEM ", L"DN_MF_PARENT ", L"DN_MF_CHILD ", L"DN_WILL_BE_REMOVED ", L"DN_NOT_FIRST_TIMEE ", L"DN_STOP_FREE_RES ", L"DN_REBAL_CANDIDATE ", L"DN_BAD_PARTIAL ", L"DN_NT_ENUMERATOR ", L"DN_NT_DRIVER ", L"DN_NEEDS_LOCKING ", L"DN_ARM_WAKEUP ", L"DN_APM_ENUMERATOR ", L"DN_APM_DRIVER ", L"DN_SILENT_INSTALL ", L"DN_NO_SHOW_IN_DM ", L"DN_BOOT_LOG_PROB ", }; for (i = 0; i < celems(a_szStatus); i++) { if (ulStatus & (1 << i) ) { pstrStatus->append(a_szStatus[i]); } } }