forgot to add this file
Added: trunk/reactos/lib/devmgr/advprop.c
_____
Added: trunk/reactos/lib/devmgr/advprop.c
--- trunk/reactos/lib/devmgr/advprop.c 2005-11-26 03:22:22 UTC (rev
19604)
+++ trunk/reactos/lib/devmgr/advprop.c 2005-11-26 03:25:57 UTC (rev
19605)
@@ -0,0 +1,238 @@
+/*
+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA
+ */
+/* $Id: hwpage.c 19599 2005-11-26 02:12:58Z weiden $
+ *
+ * PROJECT: ReactOS devmgr.dll
+ * FILE: lib/devmgr/hwpage.c
+ * PURPOSE: ReactOS Device Manager
+ * PROGRAMMER: Thomas Weidenmueller <w3seek(a)reactos.com>
+ * UPDATE HISTORY:
+ * 04-04-2004 Created
+ */
+#include <precomp.h>
+
+#define NDEBUG
+#include <debug.h>
+
+typedef INT_PTR (WINAPI *PPROPERTYSHEETW)(LPCPROPSHEETHEADERW);
+
+/**********************************************************************
*****
+ * 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
+ * -1: if errors occured
+ *
+ * REVISIONS
+ *
+ * NOTE
+ *
+ * @unimplemented
+ */
+int
+WINAPI
+DeviceAdvancedPropertiesW(HWND hWndParent,
+ LPCWSTR lpMachineName,
+ LPCWSTR lpDeviceID)
+{
+ HDEVINFO hDevInfo;
+ SP_DEVINFO_DATA DevInfoData;
+ HINSTANCE hComCtl32;
+ PPROPERTYSHEETW pPropertySheetW;
+ int Ret = -1;
+
+ /* FIXME - handle remote device properties */
+
+ UNREFERENCED_PARAMETER(lpMachineName);
+
+ /* dynamically load comctl32 */
+ hComCtl32 = LoadAndInitComctl32();
+ if (hComCtl32 == NULL ||
+ !(pPropertySheetW = (PPROPERTYSHEETW)GetProcAddress(hComCtl32,
+
"PropertySheetW")))
+ {
+ return -1;
+ }
+
+ hDevInfo = SetupDiCreateDeviceInfoList(NULL,
+ hWndParent);
+ if (hDevInfo == INVALID_HANDLE_VALUE)
+ {
+ goto Cleanup;
+ }
+
+ DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
+ if (SetupDiOpenDeviceInfo(hDevInfo,
+ lpDeviceID,
+ hWndParent,
+ 0,
+ &DevInfoData))
+ {
+ WCHAR szDevName[255];
+ DWORD RegDataType;
+ PROPSHEETHEADER psh = {0};
+ DWORD nPropSheets = 0;
+
+ /* get the device name */
+ if ((SetupDiGetDeviceRegistryProperty(hDevInfo,
+ &DevInfoData,
+ SPDRP_FRIENDLYNAME,
+ &RegDataType,
+ (PBYTE)szDevName,
+ sizeof(szDevName),
+ NULL) ||
+ SetupDiGetDeviceRegistryProperty(hDevInfo,
+ &DevInfoData,
+ SPDRP_DEVICEDESC,
+ &RegDataType,
+ (PBYTE)szDevName,
+ sizeof(szDevName),
+ NULL)) &&
+ RegDataType == REG_SZ)
+ {
+ /* FIXME - check string for NULL termination! */
+
+ psh.dwSize = sizeof(PROPSHEETHEADER);
+ psh.dwFlags = PSH_PROPTITLE;
+ psh.pszCaption = szDevName;
+
+ /* find out how many property sheets we need */
+ if (SetupDiGetClassDevPropertySheets(hDevInfo,
+ &DevInfoData,
+ &psh,
+ 0,
+ &nPropSheets,
+ DIGCDP_FLAG_ADVANCED))
+ {
+ DPRINT1("SetupDiGetClassDevPropertySheets unexpectedly
returned TRUE!\n");
+ goto Cleanup;
+ }
+
+ if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
+ {
+ goto Cleanup;
+ }
+
+ psh.phpage = HeapAlloc(GetProcessHeap(),
+ 0,
+ nPropSheets *
sizeof(HPROPSHEETPAGE));
+ if (psh.phpage == NULL)
+ {
+ goto Cleanup;
+ }
+
+ if (!SetupDiGetClassDevPropertySheets(hDevInfo,
+ &DevInfoData,
+ &psh,
+ nPropSheets,
+ NULL,
+
DIGCDP_FLAG_ADVANCED))
+ {
+ goto Cleanup;
+ }
+
+ /* FIXME - add "General" and "Driver" page */
+
+ Ret = pPropertySheetW(&psh);
+ }
+
+Cleanup:
+ HeapFree(GetProcessHeap(),
+ 0,
+ psh.phpage);
+ }
+
+ 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
+ * -1: if errors occured
+ *
+ * REVISIONS
+ *
+ * NOTE
+ *
+ * @unimplemented
+ */
+int
+WINAPI
+DeviceAdvancedPropertiesA(HWND hWndParent,
+ LPCSTR lpMachineName,
+ LPCSTR lpDeviceID)
+{
+ LPWSTR lpMachineNameW = NULL;
+ LPWSTR lpDeviceIDW = NULL;
+ int 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:
+ HeapFree(GetProcessHeap(),
+ 0,
+ lpMachineNameW);
+ HeapFree(GetProcessHeap(),
+ 0,
+ lpDeviceIDW);
+
+ return Ret;
+}
Property changes on: trunk/reactos/lib/devmgr/advprop.c
___________________________________________________________________
Name: svn:keywords
+ author date revision
Name: svn:eol-style
+ native