[DEVMGR]
[reactos.git] / reactos / dll / win32 / devmgr / properties / advprop.cpp
index 409ca6a..0b59ad8 100644 (file)
@@ -27,8 +27,7 @@
  *      04-04-2004  Created
  */
 
-#include "stdafx.h"
-#include <devmgr\devmgr.h>
+#include "precomp.h"
 #include "properties.h"
 #include "resource.h"
 
@@ -348,7 +347,7 @@ DriverDetailsDlgProc(IN HWND hwndDlg,
 
                     if (ListView_GetItemCount(hDriversListView) == 0)
                     {
-                        if(LoadStringW(hDllInstance, IDS_NODRIVERS, szBuffer, _countof(szBuffer)))
+                        if (LoadStringW(hDllInstance, IDS_NODRIVERS, szBuffer, _countof(szBuffer)))
                             MessageBoxW(hwndDlg, szBuffer, dap->szDevName, MB_OK);
                         EndDialog(hwndDlg, IDCANCEL);
                     }
@@ -613,7 +612,7 @@ AdvProcDriverDlgProc(IN HWND hwndDlg,
 static VOID
 SetListViewText(HWND hwnd,
                 INT iItem,
-                LPWSTR lpText)
+                LPCWSTR lpText)
 {
     LVITEM li;
 
@@ -622,7 +621,7 @@ SetListViewText(HWND hwnd,
     li.iSubItem = 0;
     li.state = 0; //(li.iItem == 0 ? LVIS_SELECTED : 0);
     li.stateMask = LVIS_SELECTED;
-    li.pszText = lpText;
+    li.pszText = (LPWSTR)lpText;
     (void)ListView_InsertItem(hwnd,
                               &li);
 }
@@ -1240,7 +1239,7 @@ DisplayDeviceCoinstallers(IN PDEVADVPROP_INFO dap,
 static VOID
 DisplayClassProperties(IN PDEVADVPROP_INFO dap,
                        IN HWND hwndListView,
-                       IN LPWSTR lpProperty)
+                       IN LPCWSTR lpProperty)
 {
     HDEVINFO DeviceInfoSet;
     PSP_DEVINFO_DATA DeviceInfoData;
@@ -1340,7 +1339,6 @@ DisplayDeviceRelations(
     ULONG ulLength = 0;
     LPWSTR pszBuffer = NULL, pszStr;
     INT index = 0, len;
-
     CONFIGRET ret;
 
     ret = CM_Get_Device_ID_List_Size_ExW(&ulLength,
@@ -1352,7 +1350,7 @@ DisplayDeviceRelations(
 
     pszBuffer = (LPWSTR)HeapAlloc(GetProcessHeap(),
                                   HEAP_ZERO_MEMORY,
-                                  ulLength);
+                                  ulLength * sizeof(WCHAR));
     if (pszBuffer == NULL)
         return;
 
@@ -2744,556 +2742,3 @@ Cleanup:
 
     return Ret;
 }
-
-
-static BOOL
-GetDeviceAndComputerName(LPWSTR lpString,
-                         WCHAR szDeviceID[],
-                         WCHAR szMachineName[])
-{
-    BOOL ret = FALSE;
-
-    szDeviceID[0] = L'\0';
-    szMachineName[0] = L'\0';
-
-    while (*lpString != L'\0')
-    {
-        if (*lpString == L'/')
-        {
-            lpString++;
-            if(!_wcsnicmp(lpString, L"DeviceID", 8))
-            {
-                lpString += 9;
-                if (*lpString != L'\0')
-                {
-                    int i = 0;
-                    while ((*lpString != L' ') &&
-                           (*lpString != L'\0') &&
-                           (i <= MAX_DEVICE_ID_LEN))
-                    {
-                        szDeviceID[i++] = *lpString++;
-                    }
-                    szDeviceID[i] = L'\0';
-                    ret = TRUE;
-                }
-            }
-            else if (!_wcsnicmp(lpString, L"MachineName", 11))
-            {
-                lpString += 12;
-                if (*lpString != L'\0')
-                {
-                    int i = 0;
-                    while ((*lpString != L' ') &&
-                           (*lpString != L'\0') &&
-                           (i <= MAX_COMPUTERNAME_LENGTH))
-                    {
-                        szMachineName[i++] = *lpString++;
-                    }
-                    szMachineName[i] = L'\0';
-                }
-            }
-            /* knock the pointer back one and let the next
-             * pointer deal with incrementing, otherwise we
-             * go past the end of the string */
-             lpString--;
-        }
-        lpString++;
-    }
-
-    return ret;
-}
-
-
-/***************************************************************************
- * NAME                                                         EXPORTED
- *      DeviceAdvancedPropertiesW
- *
- * DESCRIPTION
- *   Invokes the device properties dialog, this version may add some property pages
- *   for some devices
- *
- * ARGUMENTS
- *   hWndParent:    Handle to the parent window
- *   lpMachineName: Machine Name, NULL is the local machine
- *   lpDeviceID:    Specifies the device whose properties are to be shown
- *
- * RETURN VALUE
- *   Always returns -1, a call to GetLastError returns 0 if successful
- *
- * @implemented
- */
-INT_PTR
-WINAPI
-DeviceAdvancedPropertiesW(IN HWND hWndParent  OPTIONAL,
-                          IN LPCWSTR lpMachineName  OPTIONAL,
-                          IN LPCWSTR lpDeviceID)
-{
-    HDEVINFO hDevInfo;
-    SP_DEVINFO_DATA DevInfoData;
-    HINSTANCE hComCtl32;
-    INT_PTR Ret = -1;
-
-    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)
-        {
-            DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
-            if (SetupDiOpenDeviceInfo(hDevInfo,
-                                      lpDeviceID,
-                                      hWndParent,
-                                      0,
-                                      &DevInfoData))
-            {
-                Ret = DisplayDeviceAdvancedProperties(hWndParent,
-                                                      lpDeviceID,
-                                                      hDevInfo,
-                                                      &DevInfoData,
-                                                      hComCtl32,
-                                                      lpMachineName,
-                                                      0);
-            }
-
-            SetupDiDestroyDeviceInfoList(hDevInfo);
-        }
-
-        FreeLibrary(hComCtl32);
-    }
-
-    return Ret;
-}
-
-
-/***************************************************************************
- * NAME                                                         EXPORTED
- *      DeviceAdvancedPropertiesA
- *
- * DESCRIPTION
- *   Invokes the device properties dialog, this version may add some property pages
- *   for some devices
- *
- * ARGUMENTS
- *   hWndParent:    Handle to the parent window
- *   lpMachineName: Machine Name, NULL is the local machine
- *   lpDeviceID:    Specifies the device whose properties are to be shown
- *
- * RETURN VALUE
- *   Always returns -1, a call to GetLastError returns 0 if successful
- *
- * @implemented
- */
-INT_PTR
-WINAPI
-DeviceAdvancedPropertiesA(IN HWND hWndParent  OPTIONAL,
-                          IN LPCSTR lpMachineName  OPTIONAL,
-                          IN LPCSTR lpDeviceID)
-{
-    LPWSTR lpMachineNameW = NULL;
-    LPWSTR lpDeviceIDW = NULL;
-    INT_PTR Ret = -1;
-
-    if (lpMachineName != NULL)
-    {
-        if (!(lpMachineNameW = ConvertMultiByteToUnicode(lpMachineName,
-                                                         CP_ACP)))
-        {
-            goto Cleanup;
-        }
-    }
-    if (lpDeviceID != NULL)
-    {
-        if (!(lpDeviceIDW = ConvertMultiByteToUnicode(lpDeviceID,
-                                                      CP_ACP)))
-        {
-            goto Cleanup;
-        }
-    }
-
-    Ret = DeviceAdvancedPropertiesW(hWndParent,
-                                    lpMachineNameW,
-                                    lpDeviceIDW);
-
-Cleanup:
-    if (lpMachineNameW != NULL)
-    {
-        HeapFree(GetProcessHeap(),
-                 0,
-                 lpMachineNameW);
-    }
-    if (lpDeviceIDW != NULL)
-    {
-        HeapFree(GetProcessHeap(),
-                 0,
-                 lpDeviceIDW);
-    }
-
-    return Ret;
-}
-
-
-/***************************************************************************
- * NAME                                                         EXPORTED
- *      DevicePropertiesExA
- *
- * DESCRIPTION
- *   Invokes the extended device properties dialog
- *
- * ARGUMENTS
- *   hWndParent:    Handle to the parent window
- *   lpMachineName: Machine Name, NULL is the local machine
- *   lpDeviceID:    Specifies the device whose properties are to be shown, optional if
- *                  bShowDevMgr is nonzero
- *   dwFlags:       This parameter can be a combination of the following flags:
- *                  * DPF_DEVICE_STATUS_ACTION: Only valid if bShowDevMgr, causes
- *                                              the default device status action button
- *                                              to be clicked (Troubleshoot, Enable
- *                                              Device, etc)
- *   bShowDevMgr:   If non-zero it displays the device manager instead of
- *                  the advanced device property dialog
- *
- * RETURN VALUE
- *   1:  if bShowDevMgr is non-zero and no error occured
- *   -1: a call to GetLastError returns 0 if successful
- *
- * @implemented
- */
-INT_PTR
-WINAPI
-DevicePropertiesExA(IN HWND hWndParent  OPTIONAL,
-                    IN LPCSTR lpMachineName  OPTIONAL,
-                    IN LPCSTR lpDeviceID  OPTIONAL,
-                    IN DWORD dwFlags  OPTIONAL,
-                    IN BOOL bShowDevMgr)
-{
-    LPWSTR lpMachineNameW = NULL;
-    LPWSTR lpDeviceIDW = NULL;
-    INT_PTR Ret = -1;
-
-    if (lpMachineName != NULL)
-    {
-        if (!(lpMachineNameW = ConvertMultiByteToUnicode(lpMachineName,
-                                                         CP_ACP)))
-        {
-            goto Cleanup;
-        }
-    }
-    if (lpDeviceID != NULL)
-    {
-        if (!(lpDeviceIDW = ConvertMultiByteToUnicode(lpDeviceID,
-                                                      CP_ACP)))
-        {
-            goto Cleanup;
-        }
-    }
-
-    Ret = DevicePropertiesExW(hWndParent,
-                              lpMachineNameW,
-                              lpDeviceIDW,
-                              dwFlags,
-                              bShowDevMgr);
-
-Cleanup:
-    if (lpMachineNameW != NULL)
-    {
-        HeapFree(GetProcessHeap(),
-                 0,
-                 lpMachineNameW);
-    }
-    if (lpDeviceIDW != NULL)
-    {
-        HeapFree(GetProcessHeap(),
-                 0,
-                 lpDeviceIDW);
-    }
-
-    return Ret;
-}
-
-
-/***************************************************************************
- * NAME                                                         EXPORTED
- *      DevicePropertiesExW
- *
- * DESCRIPTION
- *   Invokes the extended device properties dialog
- *
- * ARGUMENTS
- *   hWndParent:    Handle to the parent window
- *   lpMachineName: Machine Name, NULL is the local machine
- *   lpDeviceID:    Specifies the device whose properties are to be shown, optional if
- *                  bShowDevMgr is nonzero
- *   dwFlags:       This parameter can be a combination of the following flags:
- *                  * DPF_DEVICE_STATUS_ACTION: Only valid if bShowDevMgr, causes
- *                                              the default device status action button
- *                                              to be clicked (Troubleshoot, Enable
- *                                              Device, etc)
- *   bShowDevMgr:   If non-zero it displays the device manager instead of
- *                  the advanced device property dialog
- *
- * RETURN VALUE
- *   1:  if bShowDevMgr is non-zero and no error occured
- *   -1: a call to GetLastError returns 0 if successful
- *
- * @implemented
- */
-INT_PTR
-WINAPI
-DevicePropertiesExW(IN HWND hWndParent  OPTIONAL,
-                    IN LPCWSTR lpMachineName  OPTIONAL,
-                    IN LPCWSTR lpDeviceID  OPTIONAL,
-                    IN DWORD dwFlags  OPTIONAL,
-                    IN BOOL bShowDevMgr)
-{
-    INT_PTR Ret = -1;
-
-    if (dwFlags & ~(DPF_EXTENDED | DPF_DEVICE_STATUS_ACTION))
-    {
-        FIXME("DevPropertiesExW: Invalid flags: 0x%x\n",
-                dwFlags & ~(DPF_EXTENDED | DPF_DEVICE_STATUS_ACTION));
-        SetLastError(ERROR_INVALID_FLAGS);
-        return -1;
-    }
-
-    if (bShowDevMgr)
-    {
-        FIXME("DevPropertiesExW doesn't support bShowDevMgr!\n");
-        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-    }
-    else
-    {
-        HDEVINFO hDevInfo;
-        SP_DEVINFO_DATA DevInfoData;
-        HINSTANCE hComCtl32;
-
-        if (lpDeviceID == NULL)
-        {
-            SetLastError(ERROR_INVALID_PARAMETER);
-            return -1;
-        }
-
-        /* dynamically load comctl32 */
-        hComCtl32 = LoadAndInitComctl32();
-        if (hComCtl32 != NULL)
-        {
-            hDevInfo = SetupDiCreateDeviceInfoListEx(NULL,
-                                                     hWndParent,
-                                                     lpMachineName,
-                                                     NULL);
-            if (hDevInfo != INVALID_HANDLE_VALUE)
-            {
-                DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
-                if (SetupDiOpenDeviceInfo(hDevInfo,
-                                          lpDeviceID,
-                                          hWndParent,
-                                          0,
-                                          &DevInfoData))
-                {
-                    Ret = DisplayDeviceAdvancedProperties(hWndParent,
-                                                          lpDeviceID,
-                                                          hDevInfo,
-                                                          &DevInfoData,
-                                                          hComCtl32,
-                                                          lpMachineName,
-                                                          dwFlags);
-                }
-
-                SetupDiDestroyDeviceInfoList(hDevInfo);
-            }
-
-            FreeLibrary(hComCtl32);
-        }
-    }
-
-    return Ret;
-}
-
-
-/***************************************************************************
- * NAME                                                         EXPORTED
- *      DevicePropertiesA
- *
- * DESCRIPTION
- *   Invokes the device properties dialog directly
- *
- * ARGUMENTS
- *   hWndParent:    Handle to the parent window
- *   lpMachineName: Machine Name, NULL is the local machine
- *   lpDeviceID:    Specifies the device whose properties are to be shown
- *   bShowDevMgr:   If non-zero it displays the device manager instead of
- *                  the device property dialog
- *
- * RETURN VALUE
- *   >=0: if no errors occured
- *   -1:  if errors occured
- *
- * REVISIONS
- *
- * @implemented
- */
-int
-WINAPI
-DevicePropertiesA(HWND hWndParent,
-                  LPCSTR lpMachineName,
-                  LPCSTR lpDeviceID,
-                  BOOL bShowDevMgr)
-{
-    return DevicePropertiesExA(hWndParent,
-                               lpMachineName,
-                               lpDeviceID,
-                               DPF_EXTENDED,
-                               bShowDevMgr);
-}
-
-
-/***************************************************************************
- * NAME                                                         EXPORTED
- *      DevicePropertiesW
- *
- * DESCRIPTION
- *   Invokes the device properties dialog directly
- *
- * ARGUMENTS
- *   hWndParent:    Handle to the parent window
- *   lpMachineName: Machine Name, NULL is the local machine
- *   lpDeviceID:    Specifies the device whose properties are to be shown
- *   bShowDevMgr:   If non-zero it displays the device manager instead of
- *                  the device property dialog
- *
- * RETURN VALUE
- *   >=0: if no errors occured
- *   -1:  if errors occured
- *
- * REVISIONS
- *
- * @implemented
- */
-int
-WINAPI
-DevicePropertiesW(HWND hWndParent,
-                  LPCWSTR lpMachineName,
-                  LPCWSTR lpDeviceID,
-                  BOOL bShowDevMgr)
-{
-    return DevicePropertiesExW(hWndParent,
-                               lpMachineName,
-                               lpDeviceID,
-                               DPF_EXTENDED,
-                               bShowDevMgr);
-}
-
-
-/***************************************************************************
- * NAME                                                         EXPORTED
- *      DeviceProperties_RunDLLA
- *
- * DESCRIPTION
- *   Invokes the device properties dialog
- *
- * ARGUMENTS
- *   hWndParent:  Handle to the parent window
- *   hInst:       Handle to the application instance
- *   lpDeviceCmd: A command that includes the DeviceID of the properties to be shown,
- *                also see NOTEs
- *   nCmdShow:    Specifies how the window should be shown
- *
- * RETURN VALUE
- *
- * REVISIONS
- *
- * NOTE
- *   - lpDeviceCmd is a string in the form of "/MachineName MACHINE /DeviceID DEVICEPATH"
- *     (/MachineName is optional). This function only parses this string and eventually
- *     calls DeviceProperties().
- *
- * @implemented
- */
-VOID
-WINAPI
-DeviceProperties_RunDLLA(HWND hWndParent,
-                         HINSTANCE hInst,
-                         LPCSTR lpDeviceCmd,
-                         int nCmdShow)
-{
-    LPWSTR lpDeviceCmdW = NULL;
-
-    if (lpDeviceCmd != NULL)
-    {
-        if ((lpDeviceCmdW = ConvertMultiByteToUnicode(lpDeviceCmd,
-                                                      CP_ACP)))
-        {
-            DeviceProperties_RunDLLW(hWndParent,
-                                     hInst,
-                                     lpDeviceCmdW,
-                                     nCmdShow);
-        }
-    }
-
-    if (lpDeviceCmdW != NULL)
-    {
-        HeapFree(GetProcessHeap(),
-                 0,
-                 lpDeviceCmdW);
-    }
-}
-
-
-/***************************************************************************
- * NAME                                                         EXPORTED
- *      DeviceProperties_RunDLLW
- *
- * DESCRIPTION
- *   Invokes the device properties dialog
- *
- * ARGUMENTS
- *   hWndParent:  Handle to the parent window
- *   hInst:       Handle to the application instance
- *   lpDeviceCmd: A command that includes the DeviceID of the properties to be shown,
- *                also see NOTEs
- *   nCmdShow:    Specifies how the window should be shown
- *
- * RETURN VALUE
- *
- * REVISIONS
- *
- * NOTE
- *   - lpDeviceCmd is a string in the form of "/MachineName MACHINE /DeviceID DEVICEPATH"
- *     (/MachineName is optional). This function only parses this string and eventually
- *     calls DeviceProperties().
- *
- * @implemented
- */
-VOID
-WINAPI
-DeviceProperties_RunDLLW(HWND hWndParent,
-                         HINSTANCE hInst,
-                         LPCWSTR lpDeviceCmd,
-                         int nCmdShow)
-{
-    WCHAR szDeviceID[MAX_DEVICE_ID_LEN+1];
-    WCHAR szMachineName[MAX_COMPUTERNAME_LENGTH+1];
-    LPWSTR lpString = (LPWSTR)lpDeviceCmd;
-
-    if (!GetDeviceAndComputerName(lpString,
-                                  szDeviceID,
-                                  szMachineName))
-    {
-        ERR("DeviceProperties_RunDLLW DeviceID: %S, MachineName: %S\n", szDeviceID, szMachineName);
-        return;
-    }
-
-    DevicePropertiesW(hWndParent,
-                      szMachineName,
-                      szDeviceID,
-                      FALSE);
-}