Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers...
[reactos.git] / reactos / dll / win32 / devmgr / properties / devprblm.cpp
diff --git a/reactos/dll/win32/devmgr/properties/devprblm.cpp b/reactos/dll/win32/devmgr/properties/devprblm.cpp
deleted file mode 100644 (file)
index b201700..0000000
+++ /dev/null
@@ -1,617 +0,0 @@
-/*
- * ReactOS Device Manager Applet
- * Copyright (C) 2004 - 2005 ReactOS Team
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-/*
- * PROJECT:         ReactOS devmgr.dll
- * FILE:            lib/devmgr/devprblm.c
- * PURPOSE:         ReactOS Device Manager
- * PROGRAMMER:      Thomas Weidenmueller <w3seek@reactos.com>
- * UPDATE HISTORY:
- *      04-04-2004  Created
- */
-
-#include "precomp.h"
-#include "properties.h"
-#include "resource.h"
-
-
-BOOL
-ShowDeviceProblemWizard(IN HWND hWndParent  OPTIONAL,
-                        IN HDEVINFO hDevInfo,
-                        IN PSP_DEVINFO_DATA DevInfoData,
-                        IN HMACHINE hMachine  OPTIONAL)
-{
-    WCHAR szDeviceInstanceId[256];
-    CONFIGRET cr;
-    ULONG Status, ProblemNumber;
-    DWORD dwReboot;
-    BOOL Ret = FALSE;
-
-    /* Get the device instance id */
-    if (!SetupDiGetDeviceInstanceId(hDevInfo,
-                                    DevInfoData,
-                                    szDeviceInstanceId,
-                                    256,
-                                    NULL))
-        return FALSE;
-
-    cr = CM_Get_DevNode_Status_Ex(&Status,
-                                  &ProblemNumber,
-                                  DevInfoData->DevInst,
-                                  0,
-                                  hMachine);
-    if (cr == CR_SUCCESS && (Status & DN_HAS_PROBLEM))
-    {
-        switch (ProblemNumber)
-        {
-            case CM_PROB_DEVLOADER_FAILED:
-            {
-                /* 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 */
-                InstallDevInst(hWndParent, szDeviceInstanceId, TRUE, &dwReboot);
-                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 (re)installation wizard */
-                InstallDevInst(hWndParent, szDeviceInstanceId, TRUE, &dwReboot);
-                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 */
-                break;
-            }
-        }
-    }
-
-    return Ret;
-}
-
-
-/***************************************************************************
- * NAME                                                         EXPORTED
- *      DeviceProblemWizardA
- *
- * DESCRIPTION
- *   Calls the device problem wizard
- *
- * ARGUMENTS
- *   hWndParent:    Handle to the parent window
- *   lpMachineName: Machine Name, NULL is the local machine
- *   lpDeviceID:    Specifies the device, also see NOTEs
- *
- * RETURN VALUE
- *   TRUE:  if no errors occured
- *   FALSE: if errors occured
- *
- * @implemented
- */
-BOOL
-WINAPI
-DeviceProblemWizardA(IN HWND hWndParent  OPTIONAL,
-                     IN LPCSTR lpMachineName  OPTIONAL,
-                     IN LPCSTR lpDeviceID)
-{
-    LPWSTR lpMachineNameW = NULL;
-    LPWSTR lpDeviceIDW = NULL;
-    BOOL Ret = FALSE;
-
-    if (lpMachineName != NULL)
-    {
-        if (!(lpMachineNameW = ConvertMultiByteToUnicode(lpMachineName,
-                                                         CP_ACP)))
-        {
-            goto Cleanup;
-        }
-    }
-    if (lpDeviceID != NULL)
-    {
-        if (!(lpDeviceIDW = ConvertMultiByteToUnicode(lpDeviceID,
-                                                      CP_ACP)))
-        {
-            goto Cleanup;
-        }
-    }
-
-    Ret = DeviceProblemWizardW(hWndParent,
-                               lpMachineNameW,
-                               lpDeviceIDW);
-
-Cleanup:
-    if (lpMachineNameW != NULL)
-    {
-        HeapFree(GetProcessHeap(),
-                 0,
-                 lpMachineNameW);
-    }
-    if (lpDeviceIDW != NULL)
-    {
-        HeapFree(GetProcessHeap(),
-                 0,
-                 lpDeviceIDW);
-    }
-
-    return Ret;
-}
-
-
-/***************************************************************************
- * NAME                                                         EXPORTED
- *      DeviceProblemWizardW
- *
- * DESCRIPTION
- *   Calls the device problem wizard
- *
- * ARGUMENTS
- *   hWndParent:    Handle to the parent window
- *   lpMachineName: Machine Name, NULL is the local machine
- *   lpDeviceID:    Specifies the device, also see NOTEs
- *
- * RETURN VALUE
- *   TRUE:  if no errors occured
- *   FALSE: if errors occured
- *
- * @unimplemented
- */
-BOOL
-WINAPI
-DeviceProblemWizardW(IN HWND hWndParent  OPTIONAL,
-                     IN LPCWSTR lpMachineName  OPTIONAL,
-                     IN LPCWSTR lpDeviceID)
-{
-    HDEVINFO hDevInfo;
-    SP_DEVINFO_DATA DevInfoData;
-    HINSTANCE hComCtl32;
-    CONFIGRET cr;
-    HMACHINE hMachine;
-    BOOL Ret = FALSE;
-
-    if (lpDeviceID == NULL)
-    {
-        SetLastError(ERROR_INVALID_PARAMETER);
-        return FALSE;
-    }
-
-    /* dynamically load comctl32 */
-    hComCtl32 = LoadAndInitComctl32();
-    if (hComCtl32 != NULL)
-    {
-        hDevInfo = SetupDiCreateDeviceInfoListEx(NULL,
-                                                 hWndParent,
-                                                 lpMachineName,
-                                                 NULL);
-        if (hDevInfo != INVALID_HANDLE_VALUE)
-        {
-            cr = CM_Connect_Machine(lpMachineName,
-                                    &hMachine);
-            if (cr == CR_SUCCESS)
-            {
-                DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
-                if (SetupDiOpenDeviceInfo(hDevInfo,
-                                          lpDeviceID,
-                                          hWndParent,
-                                          0,
-                                          &DevInfoData))
-                {
-                    Ret = ShowDeviceProblemWizard(hWndParent,
-                                                  hDevInfo,
-                                                  &DevInfoData,
-                                                  hMachine);
-                }
-
-                CM_Disconnect_Machine(hMachine);
-            }
-
-            SetupDiDestroyDeviceInfoList(hDevInfo);
-        }
-
-        FreeLibrary(hComCtl32);
-    }
-
-    return Ret;
-}
-
-
-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,
-    IDS_DEV_LACKED_ARBITRATOR,
-    IDS_DEV_BOOT_CONFIG_CONFLICT,
-    IDS_DEV_FAILED_FILTER,
-    IDS_DEV_DEVLOADER_NOT_FOUND,
-    IDS_DEV_INVALID_DATA,
-    IDS_DEV_FAILED_START,
-    IDS_DEV_LIAR,
-    IDS_DEV_NORMAL_CONFLICT,
-    IDS_DEV_NOT_VERIFIED,
-    IDS_DEV_NEED_RESTART,
-    IDS_DEV_REENUMERATION,
-    IDS_DEV_PARTIAL_LOG_CONF,
-    IDS_DEV_UNKNOWN_RESOURCE,
-    IDS_DEV_REINSTALL,
-    IDS_DEV_REGISTRY,
-    IDS_UNKNOWN, /* CM_PROB_VXDLDR, not used on NT */
-    IDS_DEV_WILL_BE_REMOVED,
-    IDS_DEV_DISABLED,
-    IDS_DEV_DEVLOADER_NOT_READY,
-    IDS_DEV_DEVICE_NOT_THERE,
-    IDS_DEV_MOVED,
-    IDS_DEV_TOO_EARLY,
-    IDS_DEV_NO_VALID_LOG_CONF,
-    IDS_DEV_FAILED_INSTALL,
-    IDS_DEV_HARDWARE_DISABLED,
-    IDS_DEV_CANT_SHARE_IRQ,
-    IDS_DEV_FAILED_ADD,
-    IDS_DEV_DISABLED_SERVICE,
-    IDS_DEV_TRANSLATION_FAILED,
-    IDS_DEV_NO_SOFTCONFIG,
-    IDS_DEV_BIOS_TABLE,
-    IDS_DEV_IRQ_TRANSLATION_FAILED,
-    IDS_DEV_FAILED_DRIVER_ENTRY,
-    IDS_DEV_DRIVER_FAILED_PRIOR_UNLOAD,
-    IDS_DEV_DRIVER_FAILED_LOAD,
-    IDS_DEV_DRIVER_SERVICE_KEY_INVALID,
-    IDS_DEV_LEGACY_SERVICE_NO_DEVICES,
-    IDS_DEV_DUPLICATE_DEVICE,
-    IDS_DEV_FAILED_POST_START,
-    IDS_DEV_HALTED,
-    IDS_DEV_PHANTOM,
-    IDS_DEV_SYSTEM_SHUTDOWN,
-    IDS_DEV_HELD_FOR_EJECT,
-    IDS_DEV_DRIVER_BLOCKED,
-    IDS_DEV_REGISTRY_TOO_LARGE,
-    IDS_DEV_SETPROPERTIES_FAILED
-};
-
-
-/***************************************************************************
- * NAME                                                         EXPORTED
- *      DeviceProblemTextA
- *
- * DESCRIPTION
- *   Gets the problem text from a problem number displayed in the properties dialog
- *
- * ARGUMENTS
- *   hMachine:   Machine handle or NULL for the local machine
- *   DevInst:    Device instance handle
- *   uProblemId: Specifies the problem ID
- *   lpString:   Pointer to a buffer where the string is to be copied to. If the buffer
- *               is too small, the return value is the required string length in characters,
- *               excluding the NULL-termination.
- *   uMaxString: Size of the buffer in characters
- *
- * RETURN VALUE
- *   The return value is the length of the string in characters.
- *   It returns 0 if an error occured.
- *
- * @implemented
- */
-UINT
-WINAPI
-DeviceProblemTextA(IN HMACHINE hMachine  OPTIONAL,
-                   IN DEVINST dnDevInst,
-                   IN ULONG uProblemId,
-                   OUT LPSTR lpString,
-                   IN UINT uMaxString)
-{
-    LPWSTR lpBuffer = NULL;
-    UINT Ret = 0;
-
-    if (uMaxString != 0)
-    {
-        lpBuffer = (LPWSTR)HeapAlloc(GetProcessHeap(),
-                                     0,
-                                     (uMaxString + 1) * sizeof(WCHAR));
-        if (lpBuffer == NULL)
-        {
-            SetLastError(ERROR_NOT_ENOUGH_MEMORY);
-            return 0;
-        }
-    }
-
-    Ret = DeviceProblemTextW(hMachine,
-                             dnDevInst,
-                             uProblemId,
-                             lpBuffer,
-                             uMaxString);
-
-    if (lpBuffer != NULL)
-    {
-        if (Ret)
-        {
-            WideCharToMultiByte(CP_ACP,
-                                0,
-                                lpBuffer,
-                                (int)Ret,
-                                lpString,
-                                (int)uMaxString,
-                                NULL,
-                                NULL);
-        }
-
-        HeapFree(GetProcessHeap(),
-                 0,
-                 lpBuffer);
-    }
-
-    return Ret;
-}
-
-
-/***************************************************************************
- * NAME                                                         EXPORTED
- *      DeviceProblemTextW
- *
- * DESCRIPTION
- *   Gets the problem text from a problem number displayed in the properties dialog
- *
- * ARGUMENTS
- *   hMachine:   Machine handle or NULL for the local machine
- *   DevInst:    Device instance handle
- *   uProblemId: Specifies the problem ID
- *   lpString:   Pointer to a buffer where the string is to be copied to. If the buffer
- *               is too small, the return value is the required string length in characters,
- *               excluding the NULL-termination.
- *   uMaxString: Size of the buffer in characters
- *
- * RETURN VALUE
- *   The return value is the length of the string in characters.
- *   It returns 0 if an error occured.
- *
- * @implemented
- */
-UINT
-WINAPI
-DeviceProblemTextW(IN HMACHINE hMachine  OPTIONAL,
-                   IN DEVINST dnDevInst,
-                   IN ULONG uProblemId,
-                   OUT LPWSTR lpString,
-                   IN UINT uMaxString)
-{
-    UINT MessageId = IDS_UNKNOWN;
-    UINT Ret = 0;
-
-    if (uProblemId < sizeof(ProblemStringId) / sizeof(ProblemStringId[0]))
-        MessageId = ProblemStringId[uProblemId];
-
-    if (uProblemId == 0)
-    {
-        if (uMaxString != 0)
-        {
-            Ret = LoadString(hDllInstance,
-                             MessageId,
-                             lpString,
-                             (int)uMaxString);
-        }
-        else
-        {
-            Ret = (UINT)LengthOfStrResource(hDllInstance,
-                                            MessageId);
-        }
-    }
-    else
-    {
-        LPWSTR szProblem;
-        WCHAR szInfo[] = L"FIXME";
-        DWORD dwRet;
-        BOOL AdvFormat = FALSE;
-        UINT StringIDs[] =
-        {
-            MessageId,
-            IDS_DEVCODE,
-        };
-
-        switch (uProblemId)
-        {
-            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 = TRUE;
-                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 = TRUE;
-                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 = TRUE;
-                break;
-
-            case CM_PROB_UNKNOWN_RESOURCE:
-                /* FIXME - get the .inf file name */
-                AdvFormat = TRUE;
-                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 = TRUE;
-                break;
-        }
-
-        if (AdvFormat)
-        {
-            StringIDs[1] = IDS_DEVCODE2;
-            dwRet = LoadAndFormatStringsCat(hDllInstance,
-                                            StringIDs,
-                                            sizeof(StringIDs) / sizeof(StringIDs[0]),
-                                            &szProblem,
-                                            szInfo,
-                                            uProblemId);
-        }
-        else
-        {
-            dwRet = LoadAndFormatStringsCat(hDllInstance,
-                                            StringIDs,
-                                            sizeof(StringIDs) / sizeof(StringIDs[0]),
-                                            &szProblem,
-                                            uProblemId);
-        }
-
-        if (dwRet != 0)
-        {
-            if (uMaxString != 0 && uMaxString >= dwRet)
-            {
-                wcscpy(lpString,
-                       szProblem);
-            }
-
-            LocalFree((HLOCAL)szProblem);
-
-            Ret = dwRet;
-        }
-    }
-
-    return Ret;
-}