print more detailed information for the status codes (only the simple
ones)
Modified: trunk/reactos/lib/devmgr/En.rc
Modified: trunk/reactos/lib/devmgr/advprop.c
Modified: trunk/reactos/lib/devmgr/devprblm.c
Modified: trunk/reactos/lib/devmgr/misc.c
Modified: trunk/reactos/lib/devmgr/resource.h
_____
Modified: trunk/reactos/lib/devmgr/En.rc
--- trunk/reactos/lib/devmgr/En.rc 2005-12-07 13:09:01 UTC (rev
19946)
+++ trunk/reactos/lib/devmgr/En.rc 2005-12-07 15:30:00 UTC (rev
19947)
@@ -12,6 +12,7 @@
IDS_UNKNOWN "Unknown"
IDS_LOCATIONSTR "Location %1!u! (%2)"
IDS_DEVCODE " (Code %1!u!)"
+ IDS_DEVCODE2 " (Code %2!u!)"
IDS_ENABLEDEVICE "Use this device (enable)"
IDS_DISABLEDEVICE "Do not use this device (disable)"
IDS_UNKNOWNDEVICE "Unknown device"
@@ -20,59 +21,74 @@
IDS_TROUBLESHOOTDEV "&Troubleshoot..."
IDS_ENABLEDEV "E&nable Device"
IDS_REINSTALLDRV "Re&install Driver"
+ IDS_PROPERTIES "P&roperties"
+ IDS_UPDATEDRV "U&pdate Driver..."
+ IDS_REBOOT "Restart &Computer..."
END
+/* error messages, source:
http://www.z123.org/techsupport/medm.htm */
STRINGTABLE
BEGIN
IDS_DEV_NO_PROBLEM "This device is working properly."
- IDS_DEV_NOT_CONFIGURED "CM_PROB_NOT_CONFIGURED"
- IDS_DEV_OUT_OF_MEMORY "CM_PROB_DEVLOADER_FAILED"
- IDS_DEV_ENTRY_IS_WRONG_TYPE "CM_PROB_ENTRY_IS_WRONG_TYPE"
- IDS_DEV_LACKED_ARBITRATOR "CM_PROB_LACKED_ARBITRATOR"
- IDS_DEV_BOOT_CONFIG_CONFLICT "CM_PROB_BOOT_CONFIG_CONFLICT"
- IDS_DEV_FAILED_FILTER "CM_PROB_FAILED_FILTER"
- IDS_DEV_DEVLOADER_NOT_FOUND "CM_PROB_DEVLOADER_NOT_FOUND"
- IDS_DEV_INVALID_DATA "CM_PROB_INVALID_DATA"
- IDS_DEV_FAILED_START "CM_PROB_FAILED_START"
- IDS_DEV_LIAR "CM_PROB_LIAR"
- IDS_DEV_NORMAL_CONFLICT "CM_PROB_NORMAL_CONFLICT"
- IDS_DEV_NOT_VERIFIED "CM_PROB_NOT_VERIFIED"
- IDS_DEV_NEED_RESTART "CM_PROB_NEED_RESTART"
- IDS_DEV_REENUMERATION "CM_PROB_REENUMERATION"
- IDS_DEV_PARTIAL_LOG_CONF "CM_PROB_PARTIAL_LOG_CONF"
- IDS_DEV_UNKNOWN_RESOURCE "CM_PROB_UNKNOWN_RESOURCE"
- IDS_DEV_REINSTALL "CM_PROB_REINSTALL"
- IDS_DEV_REGISTRY "CM_PROB_REGISTRY"
- IDS_DEV_WILL_BE_REMOVED "CM_PROB_WILL_BE_REMOVED"
- IDS_DEV_DISABLED "CM_PROB_DISABLED"
- IDS_DEV_DEVLOADER_NOT_READY "CM_PROB_DEVLOADER_NOT_READY"
- IDS_DEV_DEVICE_NOT_THERE "CM_PROB_DEVICE_NOT_THERE"
- IDS_DEV_MOVED "CM_PROB_MOVED"
- IDS_DEV_TOO_EARLY "CM_PROB_TOO_EARLY"
- IDS_DEV_NO_VALID_LOG_CONF "CM_PROB_NO_VALID_LOG_CONF"
- IDS_DEV_FAILED_INSTALL "CM_PROB_FAILED_INSTALL"
- IDS_DEV_HARDWARE_DISABLED "CM_PROB_HARDWARE_DISABLED"
- IDS_DEV_CANT_SHARE_IRQ "CM_PROB_CANT_SHARE_IRQ"
- IDS_DEV_FAILED_ADD "CM_PROB_FAILED_ADD"
- IDS_DEV_DISABLED_SERVICE "CM_PROB_DISABLED_SERVICE"
- IDS_DEV_TRANSLATION_FAILED "CM_PROB_TRANSLATION_FAILED"
- IDS_DEV_NO_SOFTCONFIG "CM_PROB_NO_SOFTCONFIG"
- IDS_DEV_BIOS_TABLE "CM_PROB_BIOS_TABLE"
- IDS_DEV_IRQ_TRANSLATION_FAILED "CM_PROB_IRQ_TRANSLATION_FAILED"
- IDS_DEV_FAILED_DRIVER_ENTRY "CM_PROB_FAILED_DRIVER_ENTRY"
- IDS_DEV_DRIVER_FAILED_PRIOR_UNLOAD
"CM_PROB_DRIVER_FAILED_PRIOR_UNLOAD"
- IDS_DEV_DRIVER_FAILED_LOAD "CM_PROB_DRIVER_FAILED_LOAD"
- IDS_DEV_DRIVER_SERVICE_KEY_INVALID
"CM_PROB_DRIVER_SERVICE_KEY_INVALID"
- IDS_DEV_LEGACY_SERVICE_NO_DEVICES
"CM_PROB_LEGACY_SERVICE_NO_DEVICES"
- IDS_DEV_DUPLICATE_DEVICE "CM_PROB_DUPLICATE_DEVICE"
- IDS_DEV_FAILED_POST_START "CM_PROB_FAILED_POST_START"
- IDS_DEV_HALTED "CM_PROB_HALTED"
- IDS_DEV_PHANTOM "CM_PROB_PHANTOM"
- IDS_DEV_SYSTEM_SHUTDOWN "CM_PROB_SYSTEM_SHUTDOWN"
- IDS_DEV_HELD_FOR_EJECT "CM_PROB_HELD_FOR_EJECT"
- IDS_DEV_DRIVER_BLOCKED "CM_PROB_DRIVER_BLOCKED"
- IDS_DEV_REGISTRY_TOO_LARGE "CM_PROB_REGISTRY_TOO_LARGE"
- IDS_DEV_SETPROPERTIES_FAILED "CM_PROB_SETPROPERTIES_FAILED"
+ IDS_DEV_NOT_CONFIGURED "This device is not configured correctly."
+ IDS_DEV_DEVLOADER_FAILED "ReactOS could not load the driver for
this device because the computer is reporting two $1 bus types."
+ IDS_DEV_DEVLOADER_FAILED2 "The $1 device loader(s) for this device
could not load the device driver."
+ IDS_DEV_OUT_OF_MEMORY "The driver for this device may be bad, or
your system may be running low on memory or other resources."
+ IDS_DEV_ENTRY_IS_WRONG_TYPE "This device is not working properly
because one of its drivers may be bad, or your registry may be bad."
+ IDS_DEV_LACKED_ARBITRATOR "The driver for this device requested a
resource that ReactOS does not know how to handle."
+ IDS_DEV_BOOT_CONFIG_CONFLICT "Another device is using the resources
this device needs."
+ IDS_DEV_FAILED_FILTER "The drivers for this device need to be
reinstalled."
+ IDS_DEV_DEVLOADER_NOT_FOUND "This device is not working properly
because ReactOS cannot load the file $1 that loads the drivers for the
device."
+ IDS_DEV_DEVLOADER_NOT_FOUND2 "This device is not working properly
because the file $1 that loads the drivers for this device is bad."
+ IDS_DEV_DEVLOADER_NOT_FOUND3 "Device failure: Try changing the
driver for this device. If that doesn\'t work, see your hardware
documentation."
+ IDS_DEV_INVALID_DATA "This device is not working properly because
the BIOS in your computer is reporting the resources for the device
incorrectly."
+ IDS_DEV_INVALID_DATA2 "This device is not working properly because
the BIOS in the device is reporting the resources for the device
incorrectly. "
+ IDS_DEV_FAILED_START "This device is either not present, not
working properly, or does not have all the drivers installed."
+ IDS_DEV_LIAR "ReactOS stopped responding while attempting to start
this device, and therefore will never attempt to start this device
again."
+ IDS_DEV_NORMAL_CONFLICT "This device cannot find any free $1
resources to use."
+ IDS_DEV_NOT_VERIFIED "This device is either not present, not
working properly, or does not have all the drivers installed."
+ IDS_DEV_NEED_RESTART "This device cannot work properly until you
restart your computer."
+ IDS_DEV_REENUMERATION "This device is causing a resource conflict."
+ IDS_DEV_PARTIAL_LOG_CONF "Windows could not identify all the
resources this device uses."
+ IDS_DEV_UNKNOWN_RESOURCE "The driver information file $1 is telling
this child device to use a resource that the parent device does not have
or recognize."
+ IDS_DEV_REINSTALL "The drivers for this device need to be
reinstalled."
+ IDS_DEV_REGISTRY "Your registry may be bad."
+ IDS_DEV_WILL_BE_REMOVED "ReactOS is removing this device."
+ IDS_DEV_DISABLED "This device is not started."
+ IDS_DEV_DISABLED2 "This device is disabled."
+ IDS_DEV_DEVLOADER_NOT_READY "The loaders for this device cannot
load the required drivers."
+ IDS_DEV_DEVLOADER_NOT_READY2 "This display adapter is functioning
correctly."
+ IDS_DEV_DEVLOADER_NOT_READY3 "The loaders for this device cannot
load the required drivers."
+ IDS_DEV_DEVICE_NOT_THERE "This device is either not present, not
working properly, or does not have all the drivers installed."
+ IDS_DEV_MOVED "ReactOS is in the process of setting up this
device."
+ IDS_DEV_TOO_EARLY "ReactOS is in the process of setting up this
device."
+ IDS_DEV_NO_VALID_LOG_CONF "ReactOS can\'t specify the resources for
this device."
+ IDS_DEV_FAILED_INSTALL "The drivers for this device are not
installed."
+ IDS_DEV_HARDWARE_DISABLED "This device is disabled because the BIOS
for the device did not give it any resources."
+ IDS_DEV_CANT_SHARE_IRQ "This device is using an Interrupt Request
(IRQ) resource that is in use by another device and cannot be shared. "\
+ "You must change the conflicting setting or
remove the real-mode driver causing the conflict."
+ IDS_DEV_FAILED_ADD "This device is not working properly because $1
is not working properly."
+ IDS_DEV_DISABLED_SERVICE "ReactOS cannot install the drivers for
this device because it cannot access the drive or network location that
has the setup files on it."
+ IDS_DEV_TRANSLATION_FAILED "This device isn\'t responding to its
driver."
+ IDS_DEV_NO_SOFTCONFIG "ReactOS cannot determine the settings for
this device. Consult the documentation that came with this device and
use the Resource tab to set the configuration."
+ IDS_DEV_BIOS_TABLE "Your computer\'s system firmware does not
include enough information to properly configure and use this device. "\
+ "To use this device, contact your computer
manufacturer to obtain a firmware or BIOS update."
+ IDS_DEV_IRQ_TRANSLATION_FAILED "This device is requesting a PCI
interrupt but is configured for an ISA interrupt (or vice versa). "\
+ "Please use the computer\'s system
setup program to reconfigure the interrupt for this device."
+ IDS_DEV_FAILED_DRIVER_ENTRY "ReactOS cannot initialize the device
driver for this hardware."
+ IDS_DEV_DRIVER_FAILED_PRIOR_UNLOAD "ReactOS cannot load the device
driver for this hardware because a previous instance of the device
driver is still in memory."
+ IDS_DEV_DRIVER_FAILED_LOAD "ReactOS cannot load the device driver
for this hardware. The driver may be corrupted or missing."
+ IDS_DEV_DRIVER_SERVICE_KEY_INVALID "ReactOS cannot access this
hardware because its service key information in the registry is missing
or recorded incorrectly."
+ IDS_DEV_LEGACY_SERVICE_NO_DEVICES "ReactOS successfully loaded the
device driver for this hardware but cannot find the hardware device."
+ IDS_DEV_DUPLICATE_DEVICE "ReactOS cannot load the device driver for
this hardware because there is a duplicate device already running in the
system."
+ IDS_DEV_FAILED_POST_START "ReactOS has stopped this device because
it has reported problems."
+ IDS_DEV_HALTED "An application or service has shut down this
hardware device."
+ IDS_DEV_PHANTOM "Currently, this hardware device is not connected
to the computer."
+ IDS_DEV_SYSTEM_SHUTDOWN "ReactOS cannot gain access to this
hardware device because the operating system is in the process of
shutting down."
+ IDS_DEV_HELD_FOR_EJECT "ReactOS cannot use this hardware device
because it has been prepared for \"safe removal\", but it has not been
removed from the computer"
+ IDS_DEV_DRIVER_BLOCKED "The software for this device has been
blocked from starting because it is known to have problems with ReactOS.
Contact the hardware vendor for a new driver."
+ IDS_DEV_REGISTRY_TOO_LARGE "ReactOS cannot start new hardware
devices because the system hive is too large (exceeds the Registry Size
Limit)."
+ IDS_DEV_SETPROPERTIES_FAILED "ReactOS wasn\'t able to change the
settings of this device."
END
IDD_HARDWARE DIALOG DISCARDABLE 0, 0, 300, 400
_____
Modified: trunk/reactos/lib/devmgr/advprop.c
--- trunk/reactos/lib/devmgr/advprop.c 2005-12-07 13:09:01 UTC (rev
19946)
+++ trunk/reactos/lib/devmgr/advprop.c 2005-12-07 15:30:00 UTC (rev
19947)
@@ -166,7 +166,7 @@
{
BOOL Ret = FALSE;
- if (dap->DeviceUsageChanged && dap->IsAdmin)
+ if (dap->DeviceUsageChanged && dap->IsAdmin &&
dap->CanDisable)
{
UINT SelectedUsageAction;
BOOL NeedReboot = FALSE;
@@ -237,7 +237,7 @@
CONFIGRET cr;
ULONG Status, ProblemNumber;
UINT TroubleShootStrId = IDS_TROUBLESHOOTDEV;
- BOOL bFlag;
+ BOOL bFlag, bDevActionAvailable = TRUE;
DWORD i;
HDEVINFO DeviceInfoSet = NULL;
PSP_DEVINFO_DATA DeviceInfoData = NULL;
@@ -478,8 +478,6 @@
/* set the device troubleshoot button text and disable it if
necessary */
hDevProbBtn = GetDlgItem(hwndDlg,
IDC_DEVPROBLEM);
- EnableWindow(hDevProbBtn,
- dap->IsAdmin);
cr = CM_Get_DevNode_Status_Ex(&Status,
&ProblemNumber,
DeviceInfoData->DevInst,
@@ -489,13 +487,106 @@
{
switch (ProblemNumber)
{
- case CM_PROB_DISABLED:
- TroubleShootStrId = IDS_ENABLEDEV;
+ case CM_PROB_DEVLOADER_FAILED:
+ {
+ /* FIXME - only if it's not a root bus devloader,
+ disable the button otherwise */
+ TroubleShootStrId = IDS_UPDATEDRV;
break;
+ }
+ case CM_PROB_OUT_OF_MEMORY:
+ case CM_PROB_ENTRY_IS_WRONG_TYPE:
+ case CM_PROB_LACKED_ARBITRATOR:
+ case CM_PROB_FAILED_START:
+ case CM_PROB_LIAR:
+ case CM_PROB_UNKNOWN_RESOURCE:
+ {
+ TroubleShootStrId = IDS_UPDATEDRV;
+ break;
+ }
+
+ case CM_PROB_BOOT_CONFIG_CONFLICT:
+ case CM_PROB_NORMAL_CONFLICT:
+ case CM_PROB_REENUMERATION:
+ {
+ /* FIXME - Troubleshoot conflict */
+ break;
+ }
+
+ case CM_PROB_FAILED_FILTER:
+ case CM_PROB_REINSTALL:
case CM_PROB_FAILED_INSTALL:
+ {
TroubleShootStrId = IDS_REINSTALLDRV;
break;
+ }
+
+ case CM_PROB_DEVLOADER_NOT_FOUND:
+ {
+ /* FIXME - 4 cases:
+ 1) if it's a missing system devloader:
+ - disable the button (Reinstall Driver)
+ 2) if it's not a system devloader but still missing:
+ - Reinstall Driver
+ 3) if it's not a system devloader but the file can
be found:
+ - Update Driver
+ 4) if it's a missing or empty software key
+ - Update Driver
+ */
+ break;
+ }
+
+ case CM_PROB_INVALID_DATA:
+ case CM_PROB_PARTIAL_LOG_CONF:
+ case CM_PROB_NO_VALID_LOG_CONF:
+ case CM_PROB_HARDWARE_DISABLED:
+ case CM_PROB_CANT_SHARE_IRQ:
+ case CM_PROB_TRANSLATION_FAILED:
+ case CM_PROB_SYSTEM_SHUTDOWN:
+ case CM_PROB_PHANTOM:
+ bDevActionAvailable = FALSE;
+ break;
+
+ case CM_PROB_NOT_VERIFIED:
+ case CM_PROB_DEVICE_NOT_THERE:
+ /* FIXME - search hardware */
+ break;
+
+ case CM_PROB_NEED_RESTART:
+ case CM_PROB_WILL_BE_REMOVED:
+ case CM_PROB_MOVED:
+ case CM_PROB_TOO_EARLY:
+ case CM_PROB_DISABLED_SERVICE:
+ TroubleShootStrId = IDS_REBOOT;
+ break;
+
+ case CM_PROB_REGISTRY:
+ /* FIXME - check registry? */
+ break;
+
+ case CM_PROB_DISABLED:
+ /* if device was disabled by the user: */
+ TroubleShootStrId = IDS_ENABLEDEV;
+ /* FIXME - otherwise disable button because the device
was
+ disabled by the system*/
+ break;
+
+ case CM_PROB_DEVLOADER_NOT_READY:
+ /* FIXME - if it's a graphics adapter:
+ - if it's a a secondary adapter and the main
adapter
+ couldn't be found
+ - disable button
+ - else
+ - Properties
+ - else
+ - Update driver
+ */
+ break;
+
+ case CM_PROB_FAILED_ADD:
+ TroubleShootStrId = IDS_PROPERTIES;
+ break;
}
}
@@ -507,6 +598,8 @@
SetWindowText(hDevProbBtn,
dap->szTemp);
}
+ EnableWindow(hDevProbBtn,
+ dap->IsAdmin && bDevActionAvailable);
/* check if the device can be enabled/disabled */
hDevUsage = GetDlgItem(hwndDlg,
_____
Modified: trunk/reactos/lib/devmgr/devprblm.c
--- trunk/reactos/lib/devmgr/devprblm.c 2005-12-07 13:09:01 UTC (rev
19946)
+++ trunk/reactos/lib/devmgr/devprblm.c 2005-12-07 15:30:00 UTC (rev
19947)
@@ -50,18 +50,123 @@
{
switch (ProblemNumber)
{
- case CM_PROB_DISABLED:
+ case CM_PROB_DEVLOADER_FAILED:
{
- /* FIXME - display the "Enable Device" wizard */
+ /* FIXME - only if it's not a root bus devloader */
+ /* FIXME - display the update driver wizard */
break;
}
+ case CM_PROB_OUT_OF_MEMORY:
+ case CM_PROB_ENTRY_IS_WRONG_TYPE:
+ case CM_PROB_LACKED_ARBITRATOR:
+ case CM_PROB_FAILED_START:
+ case CM_PROB_LIAR:
+ case CM_PROB_UNKNOWN_RESOURCE:
+ {
+ /* FIXME - display the update driver wizard */
+ break;
+ }
+
+ case CM_PROB_BOOT_CONFIG_CONFLICT:
+ case CM_PROB_NORMAL_CONFLICT:
+ case CM_PROB_REENUMERATION:
+ {
+ /* FIXME - display the conflict wizard */
+ break;
+ }
+
+ case CM_PROB_FAILED_FILTER:
+ case CM_PROB_REINSTALL:
case CM_PROB_FAILED_INSTALL:
{
- /* FIXME - display the driver installation wizard */
+ /* FIXME - display the driver (re)installation wizard
*/
break;
}
+ case CM_PROB_DEVLOADER_NOT_FOUND:
+ {
+ /* FIXME - 4 cases:
+ 1) if it's a missing system devloader:
+ - fail
+ 2) if it's not a system devloader but still missing:
+ - display the driver reinstallation wizard
+ 3) if it's not a system devloader but the file can
be found:
+ - display the update driver wizard
+ 4) if it's a missing or empty software key
+ - display the update driver wizard
+ */
+ break;
+ }
+
+ case CM_PROB_INVALID_DATA:
+ case CM_PROB_PARTIAL_LOG_CONF:
+ case CM_PROB_NO_VALID_LOG_CONF:
+ case CM_PROB_HARDWARE_DISABLED:
+ case CM_PROB_CANT_SHARE_IRQ:
+ case CM_PROB_TRANSLATION_FAILED:
+ case CM_PROB_SYSTEM_SHUTDOWN:
+ case CM_PROB_PHANTOM:
+ /* FIXME - do nothing */
+ break;
+
+ case CM_PROB_NOT_VERIFIED:
+ case CM_PROB_DEVICE_NOT_THERE:
+ /* FIXME - display search hardware wizard */
+ break;
+
+ case CM_PROB_NEED_RESTART:
+ case CM_PROB_WILL_BE_REMOVED:
+ case CM_PROB_MOVED:
+ case CM_PROB_TOO_EARLY:
+ case CM_PROB_DISABLED_SERVICE:
+ /* FIXME - reboot computer */
+ break;
+
+ case CM_PROB_REGISTRY:
+ /* FIXME - check registry */
+ break;
+
+ case CM_PROB_DISABLED:
+ {
+ /* FIXME - if device was disabled by user display the
"Enable Device" wizard,
+ otherwise Troubleshoot because the device
was disabled by the system */
+ break;
+ }
+
+ case CM_PROB_DEVLOADER_NOT_READY:
+ {
+ /* FIXME - if it's a graphics adapter:
+ - if it's a a secondary adapter and the main
adapter
+ couldn't be found
+ - do nothing or default action
+ - else
+ - display the Properties
+ - else
+ - Update driver
+ */
+ break;
+ }
+
+ case CM_PROB_FAILED_ADD:
+ {
+ /* FIXME - display the properties of the sub-device */
+ break;
+ }
+
+ case CM_PROB_NO_SOFTCONFIG:
+ case CM_PROB_IRQ_TRANSLATION_FAILED:
+ case CM_PROB_FAILED_DRIVER_ENTRY:
+ case CM_PROB_DRIVER_FAILED_PRIOR_UNLOAD:
+ case CM_PROB_DRIVER_FAILED_LOAD:
+ case CM_PROB_DRIVER_SERVICE_KEY_INVALID:
+ case CM_PROB_LEGACY_SERVICE_NO_DEVICES:
+ case CM_PROB_DUPLICATE_DEVICE:
+ case CM_PROB_FAILED_POST_START:
+ case CM_PROB_HALTED:
+ case CM_PROB_HELD_FOR_EJECT:
+ case CM_PROB_DRIVER_BLOCKED:
+ case CM_PROB_REGISTRY_TOO_LARGE:
default:
{
/* FIXME - troubleshoot the device */
_____
Modified: trunk/reactos/lib/devmgr/misc.c
--- trunk/reactos/lib/devmgr/misc.c 2005-12-07 13:09:01 UTC (rev
19946)
+++ trunk/reactos/lib/devmgr/misc.c 2005-12-07 15:30:00 UTC (rev
19947)
@@ -404,6 +404,7 @@
static const UINT ProblemStringId[NUM_CM_PROB] =
{
IDS_DEV_NO_PROBLEM,
+ IDS_DEV_DEVLOADER_FAILED,
IDS_DEV_NOT_CONFIGURED,
IDS_DEV_OUT_OF_MEMORY,
IDS_DEV_ENTRY_IS_WRONG_TYPE,
@@ -452,7 +453,7 @@
IDS_DEV_HELD_FOR_EJECT,
IDS_DEV_DRIVER_BLOCKED,
IDS_DEV_REGISTRY_TOO_LARGE,
- IDS_DEV_SETPROPERTIES_FAILED,
+ IDS_DEV_SETPROPERTIES_FAILED
};
@@ -486,19 +487,90 @@
}
else
{
- LPWSTR szProblem;
+ LPWSTR szProblem, szInfo = NULL;
+ DWORD dwRet;
+ BOOL AdvFormat = FALSE;
UINT StringIDs[] =
{
MessageId,
IDS_DEVCODE,
};
- if (LoadAndFormatStringsCat(hDllInstance,
- StringIDs,
- sizeof(StringIDs) /
sizeof(StringIDs[0]),
- &szProblem,
- ProblemNumber))
+ switch (ProblemNumber)
{
+ case CM_PROB_DEVLOADER_FAILED:
+ {
+ /* FIXME - if not a root bus devloader then use
IDS_DEV_DEVLOADER_FAILED2 */
+ /* FIXME - get the type string (ie. ISAPNP, PCI
or BIOS for root bus devloaders,
+ or FLOP, ESDI, SCSI, etc for others
*/
+ AdvFormat = (szInfo != NULL);
+ break;
+ }
+
+ case CM_PROB_DEVLOADER_NOT_FOUND:
+ {
+ /* FIXME - 4 cases:
+ 1) if it's a missing system devloader:
+ - get the system devloader name
+ 2) if it's not a system devloader but still
missing:
+ - get the devloader name (file name?)
+ 3) if it's not a system devloader but the
file can be found:
+ - use IDS_DEV_DEVLOADER_NOT_FOUND2
+ 4) if it's a missing or empty software key
+ - use IDS_DEV_DEVLOADER_NOT_FOUND3
+ - AdvFormat = FALSE!
+ */
+ AdvFormat = (szInfo != NULL);
+ break;
+ }
+
+ case CM_PROB_INVALID_DATA:
+ /* FIXME - if the device isn't enumerated by
the BIOS/ACPI use IDS_DEV_INVALID_DATA2 */
+ AdvFormat = FALSE;
+ break;
+
+ case CM_PROB_NORMAL_CONFLICT:
+ /* FIXME - get resource type (IRQ, DMA, Memory
or I/O) */
+ AdvFormat = (szInfo != NULL);
+ break;
+
+ case CM_PROB_UNKNOWN_RESOURCE:
+ /* FIXME - get the .inf file name */
+ AdvFormat = (szInfo != NULL);
+ break;
+
+ case CM_PROB_DISABLED:
+ /* FIXME - if the device was disabled by the
system use IDS_DEV_DISABLED2 */
+ break;
+
+ case CM_PROB_FAILED_ADD:
+ /* FIXME - get the name of the sub-device with
the error */
+ AdvFormat = (szInfo != NULL);
+ break;
+ }
+
+ if (AdvFormat)
+ {
+ StringIDs[1] = IDS_DEVCODE2;
+ dwRet = LoadAndFormatStringsCat(hDllInstance,
+ StringIDs,
+ sizeof(StringIDs) /
sizeof(StringIDs[0]),
+ &szProblem,
+ szInfo,
+ ProblemNumber);
+ LocalFree((HLOCAL)szInfo);
+ }
+ else
+ {
+ dwRet = LoadAndFormatStringsCat(hDllInstance,
+ StringIDs,
+ sizeof(StringIDs) /
sizeof(StringIDs[0]),
+ &szProblem,
+ ProblemNumber);
+ }
+
+ if (dwRet != 0)
+ {
wcsncpy(szBuffer,
szProblem,
BufferSize - 1);
@@ -630,7 +702,7 @@
if (bEnable)
{
- /* try to enable/disable the device on the global profile */
+ /* try to enable the device on the global profile */
pcp.StateChange = DICS_ENABLE;
pcp.Scope = DICS_FLAG_GLOBAL;
_____
Modified: trunk/reactos/lib/devmgr/resource.h
--- trunk/reactos/lib/devmgr/resource.h 2005-12-07 13:09:01 UTC (rev
19946)
+++ trunk/reactos/lib/devmgr/resource.h 2005-12-07 15:30:00 UTC (rev
19947)
@@ -24,7 +24,6 @@
#define IDC_PROPERTIES 0x58A
#define IDC_DEVUSAGELABEL 0x58B
#define IDC_DEVPROBLEM 0x58C
-#define IDS_REINSTALLDRV 0x58D
#define IDS_NAME 0x100
#define IDS_TYPE 0x101
@@ -34,64 +33,76 @@
#define IDS_UNKNOWN 0x105
#define IDS_LOCATIONSTR 0x106
#define IDS_DEVCODE 0x107
-#define IDS_ENABLEDEVICE 0x108
-#define IDS_DISABLEDEVICE 0x109
-#define IDS_UNKNOWNDEVICE 0x10A
-#define IDS_NODRIVERLOADED 0x10B
-#define IDS_DEVONPARENT 0x10C
-#define IDS_TROUBLESHOOTDEV 0x10D
-#define IDS_ENABLEDEV 0x10E
+#define IDS_DEVCODE2 0x108
+#define IDS_ENABLEDEVICE 0x109
+#define IDS_DISABLEDEVICE 0x10A
+#define IDS_UNKNOWNDEVICE 0x10B
+#define IDS_NODRIVERLOADED 0x10C
+#define IDS_DEVONPARENT 0x10D
+#define IDS_TROUBLESHOOTDEV 0x10E
+#define IDS_ENABLEDEV 0x10F
+#define IDS_PROPERTIES 0x110
+#define IDS_UPDATEDRV 0x111
+#define IDS_REINSTALLDRV 0x112
+#define IDS_REBOOT 0x113
#define IDS_DEV_NO_PROBLEM 0x200
#define IDS_DEV_NOT_CONFIGURED 0x201
#define IDS_DEV_DEVLOADER_FAILED 0x202
-#define IDS_DEV_OUT_OF_MEMORY 0x203
-#define IDS_DEV_ENTRY_IS_WRONG_TYPE 0x204
-#define IDS_DEV_LACKED_ARBITRATOR 0x205
-#define IDS_DEV_BOOT_CONFIG_CONFLICT 0x206
-#define IDS_DEV_FAILED_FILTER 0x207
-#define IDS_DEV_DEVLOADER_NOT_FOUND 0x208
-#define IDS_DEV_INVALID_DATA 0x209
-#define IDS_DEV_FAILED_START 0x20A
-#define IDS_DEV_LIAR 0x20B
-#define IDS_DEV_NORMAL_CONFLICT 0x20C
-#define IDS_DEV_NOT_VERIFIED 0x20D
-#define IDS_DEV_NEED_RESTART 0x20E
-#define IDS_DEV_REENUMERATION 0x20F
-#define IDS_DEV_PARTIAL_LOG_CONF 0x210
-#define IDS_DEV_UNKNOWN_RESOURCE 0x211
-#define IDS_DEV_REINSTALL 0x212
-#define IDS_DEV_REGISTRY 0x213
-#define IDS_DEV_WILL_BE_REMOVED 0x214
-#define IDS_DEV_DISABLED 0x215
-#define IDS_DEV_DEVLOADER_NOT_READY 0x216
-#define IDS_DEV_DEVICE_NOT_THERE 0x217
-#define IDS_DEV_MOVED 0x218
-#define IDS_DEV_TOO_EARLY 0x219
-#define IDS_DEV_NO_VALID_LOG_CONF 0x21A
-#define IDS_DEV_FAILED_INSTALL 0x21B
-#define IDS_DEV_HARDWARE_DISABLED 0x21C
-#define IDS_DEV_CANT_SHARE_IRQ 0x21D
-#define IDS_DEV_FAILED_ADD 0x21E
-#define IDS_DEV_DISABLED_SERVICE 0x21F
-#define IDS_DEV_TRANSLATION_FAILED 0x220
-#define IDS_DEV_NO_SOFTCONFIG 0x221
-#define IDS_DEV_BIOS_TABLE 0x222
-#define IDS_DEV_IRQ_TRANSLATION_FAILED 0x223
-#define IDS_DEV_FAILED_DRIVER_ENTRY 0x224
-#define IDS_DEV_DRIVER_FAILED_PRIOR_UNLOAD 0x225
-#define IDS_DEV_DRIVER_FAILED_LOAD 0x226
-#define IDS_DEV_DRIVER_SERVICE_KEY_INVALID 0x227
-#define IDS_DEV_LEGACY_SERVICE_NO_DEVICES 0x228
-#define IDS_DEV_DUPLICATE_DEVICE 0x229
-#define IDS_DEV_FAILED_POST_START 0x22A
-#define IDS_DEV_HALTED 0x22B
-#define IDS_DEV_PHANTOM 0x22C
-#define IDS_DEV_SYSTEM_SHUTDOWN 0x22D
-#define IDS_DEV_HELD_FOR_EJECT 0x22E
-#define IDS_DEV_DRIVER_BLOCKED 0x22F
-#define IDS_DEV_REGISTRY_TOO_LARGE 0x230
-#define IDS_DEV_SETPROPERTIES_FAILED 0x231
+#define IDS_DEV_DEVLOADER_FAILED2 0x203
+#define IDS_DEV_OUT_OF_MEMORY 0x204
+#define IDS_DEV_ENTRY_IS_WRONG_TYPE 0x205
+#define IDS_DEV_LACKED_ARBITRATOR 0x206
+#define IDS_DEV_BOOT_CONFIG_CONFLICT 0x207
+#define IDS_DEV_FAILED_FILTER 0x208
+#define IDS_DEV_DEVLOADER_NOT_FOUND 0x209
+#define IDS_DEV_DEVLOADER_NOT_FOUND2 0x20A
+#define IDS_DEV_DEVLOADER_NOT_FOUND3 0x20B
+#define IDS_DEV_INVALID_DATA 0x20C
+#define IDS_DEV_INVALID_DATA2 0x20D
+#define IDS_DEV_FAILED_START 0x20E
+#define IDS_DEV_LIAR 0x20F
+#define IDS_DEV_NORMAL_CONFLICT 0x210
+#define IDS_DEV_NOT_VERIFIED 0x211
+#define IDS_DEV_NEED_RESTART 0x212
+#define IDS_DEV_REENUMERATION 0x213
+#define IDS_DEV_PARTIAL_LOG_CONF 0x214
+#define IDS_DEV_UNKNOWN_RESOURCE 0x215
+#define IDS_DEV_REINSTALL 0x216
+#define IDS_DEV_REGISTRY 0x217
+#define IDS_DEV_WILL_BE_REMOVED 0x218
+#define IDS_DEV_DISABLED 0x219
+#define IDS_DEV_DISABLED2 0x21A
+#define IDS_DEV_DEVLOADER_NOT_READY 0x21B
+#define IDS_DEV_DEVLOADER_NOT_READY2 0x21C
+#define IDS_DEV_DEVLOADER_NOT_READY3 0x21D
+#define IDS_DEV_DEVICE_NOT_THERE 0x21E
+#define IDS_DEV_MOVED 0x21F
+#define IDS_DEV_TOO_EARLY 0x220
+#define IDS_DEV_NO_VALID_LOG_CONF 0x221
+#define IDS_DEV_FAILED_INSTALL 0x222
+#define IDS_DEV_HARDWARE_DISABLED 0x223
+#define IDS_DEV_CANT_SHARE_IRQ 0x224
+#define IDS_DEV_FAILED_ADD 0x225
+#define IDS_DEV_DISABLED_SERVICE 0x226
+#define IDS_DEV_TRANSLATION_FAILED 0x227
+#define IDS_DEV_NO_SOFTCONFIG 0x228
+#define IDS_DEV_BIOS_TABLE 0x229
+#define IDS_DEV_IRQ_TRANSLATION_FAILED 0x22A
+#define IDS_DEV_FAILED_DRIVER_ENTRY 0x22B
+#define IDS_DEV_DRIVER_FAILED_PRIOR_UNLOAD 0x22C
+#define IDS_DEV_DRIVER_FAILED_LOAD 0x22D
+#define IDS_DEV_DRIVER_SERVICE_KEY_INVALID 0x22E
+#define IDS_DEV_LEGACY_SERVICE_NO_DEVICES 0x22F
+#define IDS_DEV_DUPLICATE_DEVICE 0x230
+#define IDS_DEV_FAILED_POST_START 0x231
+#define IDS_DEV_HALTED 0x232
+#define IDS_DEV_PHANTOM 0x233
+#define IDS_DEV_SYSTEM_SHUTDOWN 0x234
+#define IDS_DEV_HELD_FOR_EJECT 0x235
+#define IDS_DEV_DRIVER_BLOCKED 0x236
+#define IDS_DEV_REGISTRY_TOO_LARGE 0x237
+#define IDS_DEV_SETPROPERTIES_FAILED 0x238
#endif /* __DEVMGR_RESOURCE_H */