- Implement CaptureStringArg and CaptureAndConvertAnsiArg.
- FileExists: Restore error mode.
- Move configuration manager functions to a separate file.
- Add cfgmgr32.h.
Added: trunk/reactos/include/wine/cfgmgr32.h
Modified: trunk/reactos/lib/setupapi/Makefile.in
Added: trunk/reactos/lib/setupapi/cfgmgr.c
Modified: trunk/reactos/lib/setupapi/misc.c
Modified: trunk/reactos/lib/setupapi/setupapi.spec
Modified: trunk/reactos/lib/setupapi/stubs.c
_____
Added: trunk/reactos/include/wine/cfgmgr32.h
--- trunk/reactos/include/wine/cfgmgr32.h 2005-02-16 15:27:30 UTC
(rev 13594)
+++ trunk/reactos/include/wine/cfgmgr32.h 2005-02-16 15:44:34 UTC
(rev 13595)
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2005 Mike McCormack
+ *
+ * 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
+ */
+
+#ifndef _CFGMGR32_H_
+#define _CFGMGR32_H_
+
+typedef DWORD CONFIGRET;
+typedef HANDLE HMACHINE;
+typedef HMACHINE *PHMACHINE;
+
+#define CR_SUCCESS 0x00000000
+#define CR_INVALID_DATA 0x0000001F
+#define CR_ACCESS_DENIED 0x00000033
+
+
+CONFIGRET WINAPI CM_Connect_MachineA( PCSTR, PHMACHINE );
+CONFIGRET WINAPI CM_Connect_MachineW( PCWSTR, PHMACHINE );
+#define CM_Connect_Machine WINELIB_NAME_AW(CM_Connect_Machine)
+
+CONFIGRET WINAPI CM_Disconnect_Machine( HMACHINE );
+
+CONFIGRET WINAPI CM_Get_Device_ID_ListA( PCSTR, PCHAR, ULONG, ULONG );
+CONFIGRET WINAPI CM_Get_Device_ID_ListW( PCWSTR, PWCHAR, ULONG, ULONG
);
+#define CM_Get_Device_ID_List
WINELIB_NAME_AW(CM_Get_Device_ID_List)
+CONFIGRET WINAPI CM_Get_Device_ID_List_ExA( PCSTR, PCHAR, ULONG, ULONG,
HMACHINE );
+CONFIGRET WINAPI CM_Get_Device_ID_List_ExW( PCWSTR, PWCHAR, ULONG,
ULONG, HMACHINE );
+#define CM_Get_Device_ID_List_Ex
WINELIB_NAME_AW(CM_Get_Device_ID_List_Ex)
+CONFIGRET WINAPI CM_Get_Device_ID_List_SizeA( PULONG, PCSTR, ULONG );
+CONFIGRET WINAPI CM_Get_Device_ID_List_SizeW( PULONG, PCWSTR, ULONG );
+#define CM_Get_Device_ID_List_Size
WINELIB_NAME_AW(CM_Get_Device_ID_List_Size)
+CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExA( PULONG, PCSTR, ULONG,
HMACHINE );
+CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExW( PULONG, PCWSTR, ULONG,
HMACHINE );
+#define CM_Get_Device_ID_List_Size_Ex
WINELIB_NAME_AW(CM_Get_Device_ID_List_Size_Ex)
+
+#endif /* _CFGMGR32_H_ */
_____
Modified: trunk/reactos/lib/setupapi/Makefile.in
--- trunk/reactos/lib/setupapi/Makefile.in 2005-02-16 15:27:30 UTC
(rev 13594)
+++ trunk/reactos/lib/setupapi/Makefile.in 2005-02-16 15:44:34 UTC
(rev 13595)
@@ -9,6 +9,7 @@
EXTRALIBS = $(LIBUNICODE)
C_SRCS = \
+ cfgmgr.c \
devinst.c \
dirid.c \
diskspace.c \
_____
Added: trunk/reactos/lib/setupapi/cfgmgr.c
--- trunk/reactos/lib/setupapi/cfgmgr.c 2005-02-16 15:27:30 UTC (rev
13594)
+++ trunk/reactos/lib/setupapi/cfgmgr.c 2005-02-16 15:44:34 UTC (rev
13595)
@@ -0,0 +1,183 @@
+/*
+ * Configuration manager functions
+ *
+ * Copyright 2000 James Hatheway
+ * Copyright 2005 Eric Kohl
+ *
+ * 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
+ */
+
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "winnls.h"
+#include "winreg.h"
+#include "setupapi.h"
+#include "cfgmgr32.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
+
+
+/**********************************************************************
*
+ * CM_Connect_MachineA [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Connect_MachineA(PCSTR UNCServerName, PHMACHINE
phMachine)
+{
+ PWSTR pServerNameW;
+ CONFIGRET ret;
+
+ TRACE("%s %p\n", UNCServerName, phMachine);
+
+ if (UNCServerName == NULL || *UNCServerName == 0)
+ {
+ return CM_Connect_MachineW(NULL, phMachine);
+ }
+
+ if (CaptureAndConvertAnsiArg(UNCServerName, &pServerNameW))
+ {
+ return CR_INVALID_DATA;
+ }
+
+ ret = CM_Connect_MachineW(pServerNameW, phMachine);
+
+ MyFree(pServerNameW);
+
+ return ret;
+}
+
+
+/**********************************************************************
*
+ * CM_Connect_MachineW [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Connect_MachineW(PCWSTR UNCServerName, PHMACHINE
phMachine)
+{
+ FIXME("%s %p\n", debugstr_w(UNCServerName), phMachine);
+ return CR_ACCESS_DENIED;
+}
+
+
+/**********************************************************************
*
+ * CM_Disconnect_Machine [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Disconnect_Machine(HMACHINE hMachine)
+{
+ FIXME("%lx\n", hMachine);
+ return CR_SUCCESS;
+}
+
+
+/**********************************************************************
*
+ * CM_Get_Device_ID_ListA [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Device_ID_ListA(
+ PCSTR pszFilter, PCHAR Buffer, ULONG BufferLen, ULONG ulFlags )
+{
+ FIXME("%p %p %ld %ld\n", pszFilter, Buffer, BufferLen, ulFlags);
+ memset(Buffer,0,2);
+ return CR_SUCCESS;
+}
+
+
+/**********************************************************************
*
+ * CM_Get_Device_ID_ListW [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Device_ID_ListW(
+ PCWSTR pszFilter, PWCHAR Buffer, ULONG BufferLen, ULONG ulFlags )
+{
+ TRACE("%p %p %ld %ld\n", pszFilter, Buffer, BufferLen, ulFlags);
+ return CM_Get_Device_ID_List_ExW(pszFilter, Buffer, BufferLen,
+ ulFlags, NULL);
+}
+
+
+/**********************************************************************
*
+ * CM_Get_Device_ID_List_ExA [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Device_ID_List_ExA(
+ PCSTR pszFilter, PCHAR Buffer, ULONG BufferLen, ULONG ulFlags,
+ HMACHINE hMachine )
+{
+ FIXME("%p %p %ld %ld %lx\n",
+ pszFilter, Buffer, BufferLen, ulFlags, hMachine);
+ memset(Buffer,0,2);
+ return CR_SUCCESS;
+}
+
+
+/**********************************************************************
*
+ * CM_Get_Device_ID_List_ExW [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Device_ID_List_ExW(
+ PCWSTR pszFilter, PWCHAR Buffer, ULONG BufferLen, ULONG ulFlags,
+ HMACHINE hMachine )
+{
+ FIXME("%p %p %ld %ld %lx\n",
+ pszFilter, Buffer, BufferLen, ulFlags, hMachine);
+ memset(Buffer,0,2);
+ return CR_SUCCESS;
+}
+
+
+/**********************************************************************
*
+ * CM_Get_Device_ID_List_SizeA [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Device_ID_List_SizeA(
+ PULONG pulLen, PCSTR pszFilter, ULONG ulFlags)
+{
+ FIXME("%p %s %ld\n", pulLen, pszFilter, ulFlags);
+ *pulLen = 2;
+ return CR_SUCCESS;
+}
+
+
+/**********************************************************************
*
+ * CM_Get_Device_ID_List_SizeW [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Device_ID_List_SizeW(
+ PULONG pulLen, PCWSTR pszFilter, ULONG ulFlags)
+{
+ FIXME("%p %s %ld\n", pulLen, debugstr_w(pszFilter), ulFlags);
+ *pulLen = 2;
+ return CR_SUCCESS;
+}
+
+
+/**********************************************************************
*
+ * CM_Get_Device_ID_List_Size_ExA [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExA(
+ PULONG pulLen, PCSTR pszFilter, ULONG ulFlags, HMACHINE hMachine)
+{
+ FIXME("%p %s %ld %lx\n", pulLen, pszFilter, ulFlags, hMachine);
+ *pulLen = 2;
+ return CR_SUCCESS;
+}
+
+
+/**********************************************************************
*
+ * CM_Get_Device_ID_List_Size_ExW [SETUPAPI.@]
+ */
+CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExW(
+ PULONG pulLen, PCWSTR pszFilter, ULONG ulFlags, HMACHINE hMachine)
+{
+ FIXME("%p %s %ld %lx\n", pulLen, debugstr_w(pszFilter), ulFlags,
hMachine);
+ *pulLen = 2;
+ return CR_SUCCESS;
+}
_____
Modified: trunk/reactos/lib/setupapi/misc.c
--- trunk/reactos/lib/setupapi/misc.c 2005-02-16 15:27:30 UTC (rev
13594)
+++ trunk/reactos/lib/setupapi/misc.c 2005-02-16 15:44:34 UTC (rev
13595)
@@ -463,6 +463,19 @@
}
+/**********************************************************************
****
+ * DelayedMove [SETUPAPI.@]
+ *
+ * Moves a file upon the next reboot.
+ *
+ * PARAMS
+ * lpExistingFileName [I] Current file name
+ * lpNewFileName [I] New file name
+ *
+ * RETURNS
+ * Success: TRUE
+ * Failure: FALSE
+ */
BOOL WINAPI DelayedMove(LPCWSTR lpExistingFileName, LPCWSTR
lpNewFileName)
{
if (OsVersionInfo.dwPlatformId != VER_PLATFORM_WIN32_NT)
@@ -476,6 +489,19 @@
}
+/**********************************************************************
****
+ * FileExists [SETUPAPI.@]
+ *
+ * Checks whether a file exists.
+ *
+ * PARAMS
+ * lpFileName [I] Name of the file to check
+ * lpNewFileName [O] Optional information about the existing file
+ *
+ * RETURNS
+ * Success: TRUE
+ * Failure: FALSE
+ */
BOOL WINAPI FileExists(LPCWSTR lpFileName, LPWIN32_FIND_DATAW
lpFileFindData)
{
WIN32_FIND_DATAW FindData;
@@ -499,5 +525,61 @@
if (lpFileFindData)
memcpy(lpFileFindData, &FindData, sizeof(WIN32_FIND_DATAW));
+ SetErrorMode(uErrorMode);
+
return TRUE;
}
+
+
+/**********************************************************************
****
+ * CaptureStringArg [SETUPAPI.@]
+ *
+ * Captures a UNICODE string.
+ *
+ * PARAMS
+ * lpSrc [I] UNICODE string to be captured
+ * lpDst [O] Pointer to the captured UNICODE string
+ *
+ * RETURNS
+ * Success: ERROR_SUCCESS
+ * Failure: ERROR_INVALID_PARAMETER
+ *
+ * NOTE
+ * Call MyFree to release the captured UNICODE string.
+ */
+DWORD WINAPI CaptureStringArg(LPCWSTR pSrc, LPWSTR *pDst)
+{
+ if (pDst == NULL)
+ return ERROR_INVALID_PARAMETER;
+
+ *pDst = DuplicateString(pSrc);
+
+ return ERROR_SUCCESS;
+}
+
+
+/**********************************************************************
****
+ * CaptureAndConvertAnsiArg [SETUPAPI.@]
+ *
+ * Captures an ANSI string and converts it to a UNICODE string.
+ *
+ * PARAMS
+ * lpSrc [I] ANSI string to be captured
+ * lpDst [O] Pointer to the captured UNICODE string
+ *
+ * RETURNS
+ * Success: ERROR_SUCCESS
+ * Failure: ERROR_INVALID_PARAMETER
+ *
+ * NOTE
+ * Call MyFree to release the captured UNICODE string.
+ */
+DWORD WINAPI CaptureAndConvertAnsiArg(LPCSTR pSrc, LPWSTR *pDst)
+{
+ if (pDst == NULL)
+ return ERROR_INVALID_PARAMETER;
+
+ *pDst = MultiByteToUnicode(pSrc, CP_ACP);
+
+ return ERROR_SUCCESS;
+}
_____
Modified: trunk/reactos/lib/setupapi/setupapi.spec
--- trunk/reactos/lib/setupapi/setupapi.spec 2005-02-16 15:27:30 UTC
(rev 13594)
+++ trunk/reactos/lib/setupapi/setupapi.spec 2005-02-16 15:44:34 UTC
(rev 13595)
@@ -18,7 +18,7 @@
@ stub CM_Add_Range
@ stub CM_Add_Res_Des
@ stub CM_Add_Res_Des_Ex
-@ stub CM_Connect_MachineA
+@ stdcall CM_Connect_MachineA(str ptr)
@ stdcall CM_Connect_MachineW(wstr ptr)
@ stub CM_Create_DevNodeA
@ stub CM_Create_DevNodeW
@@ -75,14 +75,14 @@
@ stub CM_Get_Device_IDW
@ stub CM_Get_Device_ID_ExA
@ stub CM_Get_Device_ID_ExW
-@ stdcall CM_Get_Device_ID_ListA(ptr ptr long long)
-@ stub CM_Get_Device_ID_ListW
-@ stub CM_Get_Device_ID_List_ExA
-@ stub CM_Get_Device_ID_List_ExW
-@ stub CM_Get_Device_ID_List_SizeA
-@ stub CM_Get_Device_ID_List_SizeW
-@ stub CM_Get_Device_ID_List_Size_ExA
-@ stub CM_Get_Device_ID_List_Size_ExW
+@ stdcall CM_Get_Device_ID_ListA(str str long long)
+@ stdcall CM_Get_Device_ID_ListW(wstr wstr long long)
+@ stdcall CM_Get_Device_ID_List_ExA(str str long long long)
+@ stdcall CM_Get_Device_ID_List_ExW(wstr wstr long long long)
+@ stdcall CM_Get_Device_ID_List_SizeA(ptr str long)
+@ stdcall CM_Get_Device_ID_List_SizeW(ptr wstr long)
+@ stdcall CM_Get_Device_ID_List_Size_ExA(ptr str long long)
+@ stdcall CM_Get_Device_ID_List_Size_ExW(ptr wstr long long)
@ stub CM_Get_Device_ID_Size
@ stub CM_Get_Device_ID_Size_Ex
@ stub CM_Get_Device_Interface_AliasA
@@ -190,8 +190,8 @@
@ stub CM_Unregister_Device_InterfaceW
@ stub CM_Unregister_Device_Interface_ExA
@ stub CM_Unregister_Device_Interface_ExW
-@ stub CaptureAndConvertAnsiArg
-@ stub CaptureStringArg
+@ stdcall CaptureAndConvertAnsiArg(str ptr)
+@ stdcall CaptureStringArg(wstr ptr)
@ stub CenterWindowRelativeToParent
@ stub ConcatenatePaths
@ stdcall DelayedMove(wstr wstr)
_____
Modified: trunk/reactos/lib/setupapi/stubs.c
--- trunk/reactos/lib/setupapi/stubs.c 2005-02-16 15:27:30 UTC (rev
13594)
+++ trunk/reactos/lib/setupapi/stubs.c 2005-02-16 15:44:34 UTC (rev
13595)
@@ -90,41 +90,8 @@
return FALSE;
}
-/**********************************************************************
*
- * CM_Connect_MachineW (SETUPAPI.@)
- */
-DWORD WINAPI CM_Connect_MachineW(LPCWSTR name, void * machine)
-{
-#define CR_SUCCESS 0x00000000
-#define CR_ACCESS_DENIED 0x00000033
- FIXME("\n");
- return CR_ACCESS_DENIED;
-}
/***********************************************************************
- * CM_Disconnect_Machine (SETUPAPI.@)
- */
-DWORD WINAPI CM_Disconnect_Machine(DWORD handle)
-{
- FIXME("\n");
- return CR_SUCCESS;
-
-}
-
-/**********************************************************************
*
- * CM_Get_Device_ID_ListA (SETUPAPI.@)
- */
-
-DWORD WINAPI CM_Get_Device_ID_ListA(
- PCSTR pszFilter, PCHAR Buffer, ULONG BufferLen, ULONG ulFlags )
-{
- FIXME("%p %p %ld %ld\n", pszFilter, Buffer, BufferLen, ulFlags );
- memset(Buffer,0,2);
- return CR_SUCCESS;
-}
-
-
-/**********************************************************************
*
* SetupCopyOEMInfA (SETUPAPI.@)
*/
BOOL WINAPI SetupCopyOEMInfA(PCSTR sourceinffile, PCSTR sourcemedialoc,