Keep minimal amount of differences with Wine code

Remove useless files

svn path=/trunk/; revision=22091
This commit is contained in:
Hervé Poussineau 2006-05-28 19:20:19 +00:00
parent 0dd1e9a2af
commit 2a99309f16
43 changed files with 168 additions and 1671 deletions

View file

@ -15,10 +15,10 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_BULGARIAN, SUBLANG_NEUTRAL
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION

View file

@ -1,4 +1,5 @@
/*
/* Hey, Emacs, open this file with -*- coding: cp1250 -*-
*
* Czech resources for SETUPAPI
*
* Copyright 2001 Andreas Mohr
@ -16,10 +17,12 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_CZECH, SUBLANG_NEUTRAL
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
/* Czech strings in CP1250 */
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION

View file

@ -1,4 +1,24 @@
LANGUAGE LANG_DANISH, SUBLANG_NEUTRAL
/*
* Danish resources for SETUPAPI
*
* Copyright 2005 Thomas Larsen
*
* 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 St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION

View file

@ -15,10 +15,10 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_ESPERANTO, SUBLANG_DEFAULT

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL

View file

@ -15,10 +15,10 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_FINNISH, SUBLANG_NEUTRAL
LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION

View file

@ -16,7 +16,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL

View file

@ -1,5 +1,5 @@
/*
* Hungaruan resources for SETUPAPI
* Hungarian resources for SETUPAPI
*
* Copyright 2001 Andreas Mohr
* Copyright 2005 Robert Horvath (talley at cubeclub.hu) - Hungarian translation
@ -16,10 +16,10 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL
LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION

View file

@ -16,10 +16,10 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT

View file

@ -15,10 +15,10 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_KOREAN, SUBLANG_NEUTRAL
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION

View file

@ -1,39 +0,0 @@
EXTRADEFS = -D_SETUPAPI_
TOPSRCDIR = @top_srcdir@
TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = setupapi.dll
IMPORTLIB = libsetupapi.$(IMPLIBEXT)
IMPORTS = user32 version advapi32 rpcrt4 kernel32 ntdll
DELAYIMPORTS = shell32
EXTRALIBS = $(LIBUNICODE)
C_SRCS = \
pnp_c.c \
cfgmgr.c \
devinst.c \
dirid.c \
diskspace.c \
install.c \
misc.c \
parser.c \
queue.c \
setupcab.c \
stringtable.c \
stubs.c \
rpc.c
C_SRCS16 = \
devinst16.c \
infparse.c \
setupx_main.c \
virtcopy.c
SPEC_SRCS16 = setupx.spec
RC_SRCS= setupapi.rc
@MAKE_DLL_RULES@
### Dependencies:

View file

@ -15,10 +15,10 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
LANGUAGE LANG_DUTCH, SUBLANG_DEFAULT
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL

View file

@ -15,10 +15,10 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_POLISH, SUBLANG_NEUTRAL
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION

View file

@ -16,7 +16,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

View file

@ -15,10 +15,10 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION

View file

@ -15,10 +15,10 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT

View file

@ -16,7 +16,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "setupapi_private.h"

View file

@ -16,7 +16,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "setupapi_private.h"

View file

@ -1,134 +0,0 @@
/*
* SetupAPI device installer
*
* Copyright 2000 Andreas Mohr for CodeWeavers
*
* 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 "setupx16.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
/***********************************************************************
* DiGetClassDevs (SETUPX.304)
* Return a list of installed system devices.
* Uses HKLM\\ENUM to list devices.
*/
RETERR16 WINAPI DiGetClassDevs16(LPLPDEVICE_INFO16 lplpdi,
LPCSTR lpszClassName, HWND16 hwndParent, INT16 iFlags)
{
LPDEVICE_INFO16 lpdi;
FIXME("(%p, '%s', %04x, %04x), semi-stub.\n",
lplpdi, lpszClassName, hwndParent, iFlags);
lpdi = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DEVICE_INFO16));
lpdi->cbSize = sizeof(DEVICE_INFO16);
*lplpdi = (LPDEVICE_INFO16)MapLS(lpdi);
return OK;
}
/***********************************************************************
* DiBuildCompatDrvList (SETUPX.300)
*/
RETERR16 WINAPI DiBuildCompatDrvList16(LPDEVICE_INFO16 lpdi)
{
FIXME("(%p): stub\n", lpdi);
lpdi->lpCompatDrvList = NULL;
return FALSE;
}
/***********************************************************************
* DiBuildClassDrvList (SETUPX.301)
*/
RETERR16 WINAPI DiBuildClassDrvList16(LPDEVICE_INFO16 lpdi)
{
FIXME("(%p): stub\n", lpdi);
lpdi->lpCompatDrvList = NULL;
return FALSE;
}
/***********************************************************************
* DiCallClassInstaller (SETUPX.308)
*/
RETERR16 WINAPI DiCallClassInstaller16(DI_FUNCTION16 diFctn, LPDEVICE_INFO16 lpdi)
{
FIXME("(%x, %p): stub\n", diFctn, lpdi);
return FALSE;
}
/***********************************************************************
* DiCreateDevRegKey (SETUPX.318)
*/
RETERR16 WINAPI DiCreateDevRegKey16(LPDEVICE_INFO16 lpdi,
VOID* p2, WORD w3,
LPCSTR s4, WORD w5)
{
FIXME("(%p, %p, %x, %s, %x): stub\n", lpdi, p2, w3, debugstr_a(s4), w5);
return FALSE;
}
/***********************************************************************
* DiDeleteDevRegKey (SETUPX.344)
*/
RETERR16 WINAPI DiDeleteDevRegKey16(LPDEVICE_INFO16 lpdi, INT16 iFlags)
{
FIXME("(%p, %x): stub\n", lpdi, iFlags);
return FALSE;
}
/***********************************************************************
* DiCreateDeviceInfo (SETUPX.303)
*/
RETERR16 WINAPI DiCreateDeviceInfo16(LPLPDEVICE_INFO16 lplpdi,
LPCSTR lpszDescription, DWORD dnDevnode,
HKEY16 hkey, LPCSTR lpszRegsubkey,
LPCSTR lpszClassName, HWND16 hwndParent)
{
LPDEVICE_INFO16 lpdi;
FIXME("(%p %s %08lx %x %s %s %x): stub\n", lplpdi,
debugstr_a(lpszDescription), dnDevnode, hkey,
debugstr_a(lpszRegsubkey), debugstr_a(lpszClassName), hwndParent);
lpdi = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DEVICE_INFO16));
lpdi->cbSize = sizeof(DEVICE_INFO16);
strcpy(lpdi->szClassName, lpszClassName);
lpdi->hwndParent = hwndParent;
*lplpdi = (LPDEVICE_INFO16)MapLS(lpdi);
return OK;
}
/***********************************************************************
* DiDestroyDeviceInfoList (SETUPX.305)
*/
RETERR16 WINAPI DiDestroyDeviceInfoList16(LPDEVICE_INFO16 lpdi)
{
FIXME("(%p): stub\n", lpdi);
return FALSE;
}
/***********************************************************************
* DiOpenDevRegKey (SETUPX.319)
*/
RETERR16 WINAPI DiOpenDevRegKey16(LPDEVICE_INFO16 lpdi,
LPHKEY16 lphk,INT16 iFlags)
{
FIXME("(%p %p %d): stub\n", lpdi, lphk, iFlags);
return FALSE;
}

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "setupapi_private.h"

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "setupapi_private.h"

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*
* FIXME:
* - return values ???

View file

@ -16,7 +16,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "setupapi_private.h"
@ -453,6 +453,9 @@ static BOOL do_register_dll( const struct register_dll_info *info, const WCHAR *
HMODULE module;
HRESULT res;
SP_REGISTER_CONTROL_STATUSW status;
#ifdef __WINESRC__
IMAGE_NT_HEADERS *nt;
#endif
status.cbSize = sizeof(status);
status.FileName = path;
@ -482,6 +485,47 @@ static BOOL do_register_dll( const struct register_dll_info *info, const WCHAR *
goto done;
}
#ifdef __WINESRC__
if ((nt = RtlImageNtHeader( module )) && !(nt->FileHeader.Characteristics & IMAGE_FILE_DLL))
{
/* file is an executable, not a dll */
STARTUPINFOW startup;
PROCESS_INFORMATION info;
WCHAR *cmd_line;
BOOL res;
static const WCHAR format[] = {'"','%','s','"',' ','%','s',0};
static const WCHAR default_args[] = {'/','R','e','g','S','e','r','v','e','r',0};
FreeLibrary( module );
module = NULL;
if (!args) args = default_args;
cmd_line = HeapAlloc( GetProcessHeap(), 0, (strlenW(path) + strlenW(args) + 4) * sizeof(WCHAR) );
sprintfW( cmd_line, format, path, args );
memset( &startup, 0, sizeof(startup) );
startup.cb = sizeof(startup);
TRACE( "executing %s\n", debugstr_w(cmd_line) );
res = CreateProcessW( NULL, cmd_line, NULL, NULL, FALSE, 0, NULL, NULL, &startup, &info );
HeapFree( GetProcessHeap(), 0, cmd_line );
if (!res)
{
status.FailureCode = SPREG_LOADLIBRARY;
status.Win32Error = GetLastError();
goto done;
}
CloseHandle( info.hThread );
if (WaitForSingleObject( info.hProcess, timeout*1000 ) == WAIT_TIMEOUT)
{
/* timed out, kill the process */
TerminateProcess( info.hProcess, 1 );
status.FailureCode = SPREG_TIMEOUT;
status.Win32Error = ERROR_TIMEOUT;
}
CloseHandle( info.hProcess );
goto done;
}
#endif // __WINESRC__
if (flags & FLG_REGSVR_DLLREGISTER)
{
const char *entry_point = info->unregister ? "DllUnregisterServer" : "DllRegisterServer";
@ -589,6 +633,50 @@ static BOOL register_dlls_callback( HINF hinf, PCWSTR field, void *arg )
return ret;
}
#ifdef __WINESRC__
/***********************************************************************
* fake_dlls_callback
*
* Called once for each WineFakeDlls entry in a given section.
*/
static BOOL fake_dlls_callback( HINF hinf, PCWSTR field, void *arg )
{
INFCONTEXT context;
BOOL ret = TRUE;
BOOL ok = SetupFindFirstLineW( hinf, field, NULL, &context );
for (; ok; ok = SetupFindNextLine( &context, &context ))
{
WCHAR *path, *p;
WCHAR buffer[MAX_INF_STRING_LENGTH];
/* get directory */
if (!(path = PARSER_get_dest_dir( &context ))) continue;
/* get dll name */
if (!SetupGetStringFieldW( &context, 3, buffer, sizeof(buffer)/sizeof(WCHAR), NULL ))
goto done;
if (!(p = HeapReAlloc( GetProcessHeap(), 0, path,
(strlenW(path) + strlenW(buffer) + 2) * sizeof(WCHAR) ))) goto done;
path = p;
p += strlenW(p);
if (p == path || p[-1] != '\\') *p++ = '\\';
strcpyW( p, buffer );
/* get source dll */
if (SetupGetStringFieldW( &context, 4, buffer, sizeof(buffer)/sizeof(WCHAR), NULL ))
p = buffer; /* otherwise use target base name as default source */
create_fake_dll( path, p ); /* ignore errors */
done:
HeapFree( GetProcessHeap(), 0, path );
if (!ret) break;
}
return ret;
}
#endif // __WINESRC__
/***********************************************************************
* update_ini_callback
*
@ -920,6 +1008,11 @@ BOOL WINAPI SetupInstallFromInfSectionW( HWND owner, HINF hinf, PCWSTR section,
if (!iterate_section_fields( hinf, section, RegisterDlls, register_dlls_callback, &info ))
return FALSE;
#ifdef __WINESRC__
if (!iterate_section_fields( hinf, section, WineFakeDlls, fake_dlls_callback, NULL ))
return FALSE;
#endif // __WINESRC__
}
if (flags & SPINST_UNREGSVR)
{

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "setupapi_private.h"

View file

@ -16,7 +16,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "setupapi_private.h"

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "setupapi_private.h"

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "setupapi_private.h"

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "setupapi_private.h"

View file

@ -13,7 +13,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef __RPC_PRIVATE_H

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <windows.h>

View file

@ -14,7 +14,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef __SETUPAPI_PRIVATE_H

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*
*
* Many useful traces are commented in code, uncomment them if you have

View file

@ -1,269 +0,0 @@
#1 stub WEP
2 pascal -ret16 IpOpen(str ptr) IpOpen16
3 stub IpOpenAppend #(str word)
4 pascal -ret16 IpClose(word) IpClose16
5 stub IpGetLongField #(word ptr word ptr)
6 stub IpGetStringField #(word ptr word ptr word ptr)
7 stub IpFindFirstLine #(word str str ptr)
8 stub IpGetLineCount #(word str ptr)
9 stub IpGetFieldCount #(word ptr ptr)
10 stub IpGetIntField #(word ptr word ptr)
11 stub IpFindNextLine #(word ptr)
12 stub IpGetFileName #(word ptr word)
13 pascal -ret16 VcpQueueCopy(str str str str word word ptr word long) VcpQueueCopy16
14 stub NOAUTORUNWNDPROC
15 stub __DEBUGMSG
16 stub __ASSERTMSG
17 pascal -ret16 VcpQueueDelete(str str word long) VcpQueueDelete16
18 stub TpOpenFile #(str ptr word)
19 stub TpCloseFile #(word)
20 stub TpOpenSection #(word ptr str word)
21 stub TpCloseSection #(word)
22 stub TpCommitSection #(word word str word)
23 stub TpGetLine #(word str str word word ptr)
24 stub TpGetNextLine #(word str str ptr)
25 stub TpInsertLine #(word str str word word word)
26 stub TpReplaceLine #(word str str word word word)
27 stub TpDeleteLine #(word word word word)
28 stub TpMoveLine #(word word word word word word)
29 stub TpGetLineContents #(word ptr word ptr word word word)
30 stub TpGetPrivateProfileString #(str str str ptr word str)
31 stub TpWritePrivateProfileString #(str str str str)
32 stub TpGetProfileString #(str str str ptr word)
33 pascal -ret16 CtlSetLdd(ptr) CtlSetLdd16
34 pascal -ret16 CtlGetLdd(ptr) CtlGetLdd16
35 pascal -ret16 CtlFindLdd(ptr) CtlFindLdd16
36 pascal -ret16 CtlAddLdd(ptr) CtlAddLdd16
37 pascal -ret16 CtlDelLdd(word) CtlDelLdd16
38 pascal -ret16 CtlGetLddPath(word ptr) CtlGetLddPath16
39 stub SURegCloseKey #(word)
40 stub SURegCreateKey #(word)
41 stub SURegDeleteKey #(word str)
42 stub SURegDeleteValue #(word str)
43 stub SURegEnumKey #(word long ptr long)
44 stub SURegEnumValue #(word long str ptr ptr ptr ptr ptr)
45 stub SURegFlush #()
46 stub SURegInit #()
47 pascal SURegOpenKey(word str ptr) SURegOpenKey
48 stub SURegQueryValue
49 stub SURegQueryValue16 #(word str ptr ptr)
50 pascal SURegQueryValueEx(long str ptr ptr ptr ptr) SURegQueryValueEx
51 stub SURegSetValue
52 stub SURegSetValue16 #(word str long ptr long)
53 stub SURegSetValueEx #(word str long long ptr long)
54 stub SURegSaveKey #(word str ptr)
55 stub SURegLoadKey #(word str str)
56 stub SURegUnLoadKey #(word str)
60 stub DiskInfoFromLdid #(word ptr)
61 pascal suErrorToIds(word word) suErrorToIds16
62 pascal -ret16 TPWriteProfileString(str str str) TPWriteProfileString16
63 stub SURPLSETUP
# does SUSTORELDIDPATH set the path of an LDID in the registry ?
64 stub SUSTORELDIDPATH
65 stub WILDCARDSTRCMPI
101 pascal -ret16 GenInstall(word str word) GenInstall16
102 stub GenWinInitRename #(str str word)
103 pascal GenFormStrWithoutPlaceHolders(str str word) GenFormStrWithoutPlaceHolders16
104 stub SETUPX
105 stub CfgSetupMerge #(word)
106 stub INITDEPENDANTLDIDS
107 stub CFGOBJFINDKEYCMD
108 stub GenSURegSetValueEx
109 stub GENINSTALLWITHQUEUE
110 stub GenInstallEx #(word str word word ptr long)
111 stub GenCopyLogConfig2Reg #(word word str)
112 stub SUGetSetSetupFlags #(ptr word)
114 stub CFGPARSELINE # returns array
115 stub CFGSETAUTOPROCESS
116 stub CFGOBJTOSTR
117 stub CFGLNTOOBJ
118 stub MATCHCMDEXT
119 stub IpFindNextMatchLine #(word str ptr)
120 stub P_SETDEFAULTOPTION
121 stub CFGCLEANBOOT
122 stub CFGMATCHCMDEXT
123 stub CFGWASFILEUPDATED
124 stub AUTOMATCHCMDEXT
125 stub P_VALIDATEOC
126 stub GENMAPROOTREGSTR2KEY
127 stub P_CDROMOC
128 stub P_MEDIAOC
129 stub CFGCLEAN1STBOOT
130 stub suFormatMessage
131 stub suvFormatMessage #(word str str word ptr)
132 stub suFormatMessageBox
#133 stub suHelp # W98SE conflict !!
135 stub suHelp #(word word)
#135 stub P_WEBTVOC # W98SE conflict !!
136 stub P_WBEMOC
137 stub P_THEMESOC
138 stub P_IMAGINGOC
139 stub P_SCHEMESOC
140 stub suVerConflict #(word ptr word ptr)
141 stub suVerConflictInit #(word)
142 stub suVerConflictTerm #(ptr)
# Emergency Boot Disk
143 stub suCreateEBD #(word ptr long)
144 stub suCopyToEBD
145 stub sxIsMSDOS7Running #()
150 stub DS_INIT
151 stub DS_DESTROY
152 stub DS_SSYNCDRIVES
153 stub DS_GETDRIVEDATA
154 stub DS_ADDSECTION
155 stub DS_ENABLESECTION
156 stub DS_DISABLESECTION
157 stub DS_SETSWAPSIZE
158 stub DS_SETREQUIREDPAD
159 stub DS_SETAVAILABLEPAD
160 stub SXUPDATEDS
170 stub SUSETMEM
171 stub WriteDMFBootData #(word ptr word)
200 pascal VcpOpen(segptr ptr) VcpOpen16
201 pascal VcpClose(word str) VcpClose16
202 pascal -ret16 vcpDefCallbackProc(ptr word word long long) vcpDefCallbackProc16
203 stub vcpEnumFiles #(ptr long)
204 pascal -ret16 VcpQueueRename(str str str str word word long) VcpQueueRename16
205 pascal -ret16 vsmGetStringName(word ptr word) vsmGetStringName16
206 pascal -ret16 vsmStringDelete(word) vsmStringDelete16
207 pascal -ret16 vsmStringAdd(str) vsmStringAdd16
208 pascal vsmGetStringRawName(word) vsmGetStringRawName16
209 stub IpSaveRestorePosition #(word word)
210 pascal -ret16 IpGetProfileString(word str str ptr word) IpGetProfileString16
211 stub IpOpenEx #(str ptr word)
212 stub IpOpenAppendEx #(str word word)
213 pascal -ret16 vcpUICallbackProc(ptr word word long long) vcpUICallbackProc16
214 stub VcpAddMRUPath #(str)
300 pascal -ret16 DiBuildCompatDrvList (ptr) DiBuildCompatDrvList16
301 pascal -ret16 DiBuildClassDrvList (ptr) DiBuildClassDrvList16
302 stub DiDestroyDriverNodeList #(ptr)
303 pascal -ret16 DiCreateDeviceInfo (ptr str long long str str word) DiCreateDeviceInfo16
304 pascal -ret16 DiGetClassDevs(ptr str word word) DiGetClassDevs16
305 pascal -ret16 DiDestroyDeviceInfoList (ptr) DiDestroyDeviceInfoList16
306 stub DiRemoveDevice #(ptr)
308 pascal -ret16 DiCallClassInstaller (word ptr) DiCallClassInstaller16
309 stub DiCreateDriverNode #(ptr word word word str str str str str str long)
310 stub DiDrawMiniIcon
311 stub DiGetClassBitmapIndex #(str ptr)
312 stub DiSelectDevice #(ptr)
313 stub DiInstallDevice #(ptr)
314 stub DiLoadClassIcon #(str ptr ptr)
315 stub DiAskForOEMDisk #(ptr)
316 stub Display_SetMode #(ptr word word word)
317 stub Display_ClassInstaller #(word ptr)
318 pascal -ret16 DiCreateDevRegKey (ptr ptr word str word) DiCreateDevRegKey16
319 pascal -ret16 DiOpenDevRegKey (ptr ptr word) DiOpenDevRegKey16
320 stub DiInstallDrvSection #(str str str str long)
321 stub DiInstallClass #(str long)
322 stub DiOpenClassRegKey #(ptr str)
323 stub Display_SetFontSize #(str)
324 stub Display_OpenFontSizeKey #(ptr)
325 stub DiBuildClassDrvListFromOldInf #(ptr str ptr long)
326 stub DiIsThereNeedToCopy #(word long)
333 stub DiChangeState #(ptr long long long)
334 stub WALKSUBTREE
340 stub GetFctn #(word str str ptr ptr)
341 stub DiBuildClassInfoList #(ptr)
342 stub DiDestroyClassInfoList #(ptr)
343 stub DiGetDeviceClassInfo #(ptr ptr)
344 pascal -ret16 DiDeleteDevRegKey (ptr word) DiDeleteDevRegKey16
350 stub DiSelectOEMDrv #(word ptr)
351 stub DiGetINFClass #(str word str long)
353 stub DIPICKBESTDRIVER
355 stub COPYINFFILE
360 stub GenInfLCToDevNode #(word str word word long)
361 stub GETDOSMESSAGE
362 stub Mouse_ClassInstaller #(word ptr)
363 stub sxCompareDosAppVer #(str str)
364 stub MONITOR_CLASSINSTALLER
365 stub FCEGETRESDESOFFSET
366 stub FCEGETALLOCVALUE
367 stub FCEADDRESDES
368 stub FCEDELETERESDES
369 stub FCEINIT
370 stub FCEGETRESDES
371 stub FCEGETFIRSTVALUE
372 stub FCEGETOTHERVALUE
373 stub FCEGETVALIDATEVALUE
374 stub FCEWRITETHISFORCEDCONFIGNOW
375 stub SUCreatePropertySheetPage #(ptr)
376 stub SUDestroyPropertySheetPage #(word)
377 stub SUPropertySheet #(ptr)
380 stub DiReadRegLogConf #(ptr str ptr ptr)
381 stub DiReadRegConf #(ptr ptr ptr long)
390 stub DiBuildPotentialDuplicatesList #(ptr ptr long ptr ptr)
395 stub InitSubstrData #(ptr str)
396 stub GetFirstSubstr #(ptr)
397 stub GetNextSubstr #(ptr)
398 stub INITSUBSTRDATAEX
400 stub bIsFileInVMM32 #(str)
401 stub DiInstallDriverFiles #(ptr)
405 stub DiBuildClassInfoListEx #(ptr long)
406 stub DiGetClassDevsEx #(ptr str str word word)
407 stub DiCopyRegSubKeyValue #(word str str str)
408 stub IPGETDRIVERDATE
409 stub IPGETDRIVERVERSION
410 stub IpGetVersionString #(str str ptr word str)
411 pascal VcpExplain(ptr long) VcpExplain16
412 stub DiBuildDriverIndex #(word)
413 stub DiAddSingleInfToDrvIdx #(str word word)
414 stub FCEGETFLAGS
450 stub UiMakeDlgNonBold #(word)
451 stub UiDeleteNonBoldFont #(word)
500 stub SUEBDPAGE
501 stub SUOCPAGE
502 stub SXLISTSUBPROC
503 stub SXFILLLB
504 stub SXOCPAGEDLG
506 stub SXOCBATCHSETTINGS
507 stub SXOCFIXNEEDS
508 pascal -ret16 CtlSetLddPath(word str) CtlSetLddPath16
509 stub SXCALLOCPROC
510 stub BUILDINFOCS
511 stub BUILDREGOCS
512 stub DELETEOCS
520 stub DiBuildClassDrvInfoList #(ptr)
521 stub DiBuildCompatDrvInfoList #(ptr)
522 stub DiDestroyDrvInfoList #(ptr)
523 stub DiConvertDriverInfoToDriverNode #(ptr ptr)
524 stub DISELECTBESTCOMPATDRV
525 stub FirstBootMoveToDOSSTART #(str word)
526 stub DOSOptEnableCurCfg #(str)
527 pascal -ret16 InstallHinfSection(word word str word) InstallHinfSection16
528 stub SXMAKEUNCPATH
529 stub SXISSBSSERVERFILE
530 stub SXFINDBATCHFILES
531 stub ISPANEUROPEAN
532 stub UPGRADENIGGLINGS
533 stub DISPLAY_ISSECONDDISPLAY
534 stub ISWINDOWSFILE
540 stub VERIFYSELECTEDDRIVER
575 stub SXCALLMIGRATIONDLLS
576 stub SXCALLMIGRATIONDLLS_RUNDLL
600 stub PidConstruct #(str str str word)
601 stub PidValidate #(str str)
602 stub GETJAPANESEKEYBOARDTYPE
610 stub CRC32COMPUTE
621 stub SXSAVEINFO
622 stub SXADDPAGEEX
623 stub OPKREMOVEINSTALLEDNETDEVICE
640 stub DOFIRSTRUNSCREENS
700 stub SXSHOWREBOOTDLG
701 stub SXSHOWREBOOTDLG_RUNDLL
750 stub UIPOSITIONDIALOG
775 stub ASPICLEAN
800 stub EXTRACTCABFILE
825 stub PIDGEN3
826 stub GETSETUPINFO
827 stub SETSETUPINFO
828 stub GETKEYBOARDOPTIONS
829 stub GETLOCALEOPTIONS
830 stub SETINTLOPTIONS
831 stub GETPRODUCTTYPE
832 stub ISOPKMODE
833 stub AUDITONETIMEINSTALL
834 stub DISKDUP
835 stub OPKPREINSTALL
836 stub ISAUDITMODE
837 stub ISAUDITAUTO
838 stub GETVALIDEULA

View file

@ -1,563 +0,0 @@
/*
* Copyright 2000 Andreas Mohr for CodeWeavers
*
* 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 __SETUPX16_H
#define __SETUPX16_H
#include "wine/windef16.h"
typedef UINT16 DI_FUNCTION16;
typedef UINT16 HINF16;
typedef UINT16 LOGDISKID16;
typedef UINT16 VHSTR;
#define LINE_LEN 256
/* error codes stuff */
typedef UINT16 RETERR16;
#define OK 0
#define IP_ERROR (UINT16)100
#define TP_ERROR (UINT16)200
#define VCP_ERROR (UINT16)300
#define GEN_ERROR (UINT16)400
#define DI_ERROR (UINT16)500
enum {
ERR_IP_INVALID_FILENAME = IP_ERROR+1,
ERR_IP_ALLOC_ERR,
ERR_IP_INVALID_SECT_NAME,
ERR_IP_OUT_OF_HANDLES,
ERR_IP_INF_NOT_FOUND,
ERR_IP_INVALID_INFFILE,
ERR_IP_INVALID_HINF,
ERR_IP_INVALID_FIELD,
ERR_IP_SECT_NOT_FOUND,
ERR_IP_END_OF_SECTION,
ERR_IP_PROFILE_NOT_FOUND,
ERR_IP_LINE_NOT_FOUND,
ERR_IP_FILEREAD,
ERR_IP_TOOMANYINFFILES,
ERR_IP_INVALID_SAVERESTORE,
ERR_IP_INVALID_INFTYPE
};
/****** virtual copy operations ******/
typedef DWORD LPEXPANDVTBL;
typedef struct {
DWORD dwSoFar;
DWORD dwTotal;
} VCPPROGRESS, *LPVCPPROGRESS;
typedef struct {
WORD cbSize;
LOGDISKID16 ldid;
VHSTR vhstrRoot;
VHSTR vhstrVolumeLabel;
VHSTR vhstrDiskName;
WORD wVolumeTime;
WORD wVolumeDate;
DWORD dwSerialNumber;
WORD fl;
LPARAM lparamRef;
VCPPROGRESS prgFileRead;
VCPPROGRESS prgByteRead;
VCPPROGRESS prgFileWrite;
VCPPROGRESS prgByteWrite;
} VCPDISKINFO, *LPVCPDISKINFO;
typedef struct {
LOGDISKID16 ldid;
VHSTR vhstrDir;
VHSTR vhstrFileName;
} VCPFILESPEC, *LPVCPFILESPEC;
typedef struct {
UINT16 uiMDate;
UINT16 uiMTime;
UINT16 uiADate;
UINT16 uiATime;
UINT16 uiAttr;
DWORD llenIn;
DWORD llenOut;
} VCPFATTR, *LPVCPFATTR;
typedef struct {
UINT16 uDate;
UINT16 uTime;
DWORD dwSize;
} VCPFILESTAT, *LPVCPFILESTAT;
typedef struct
{
HFILE16 hFileSrc;
HFILE16 hFileDst;
VCPFATTR fAttr;
WORD dosError;
VHSTR vhstrFileName;
WPARAM vcpm;
} VIRTNODEEX, *LPVIRTNODEEX;
typedef struct {
WORD cbSize;
VCPFILESPEC vfsSrc;
VCPFILESPEC vfsDst;
WORD fl;
LPARAM lParam;
LPEXPANDVTBL lpExpandVtbl;
LPVIRTNODEEX lpvnex;
VHSTR vhstrDstFinalName;
VCPFILESTAT vFileStat;
} VIRTNODE, *LPVIRTNODE;
typedef struct {
WORD cbSize;
VCPPROGRESS prgDiskRead;
VCPPROGRESS prgFileRead;
VCPPROGRESS prgByteRead;
VCPPROGRESS prgDiskWrite;
VCPPROGRESS prgFileWrite;
VCPPROGRESS prgByteWrite;
LPVCPDISKINFO lpvdiIn;
LPVCPDISKINFO lpvdiOut;
LPVIRTNODE lpvn;
} VCPSTATUS, *LPVCPSTATUS;
#define CNFL_BACKUP 0x0001
#define CNFL_DELETEONFAILURE 0x0002
#define CNFL_RENAMEONSUCCESS 0x0004
#define CNFL_CONTINUATION 0x0008
#define CNFL_SKIPPED 0x0010
#define CNFL_IGNOREERRORS 0x0020
#define CNFL_RETRYFILE 0x0040
#define CNFL_COPIED 0x0080
#define VNFL_UNIQUE 0x0000
#define VNFL_MULTIPLEOK 0x0100
#define VNFL_DESTROYOLD 0x0200
#define VNFL_COPY 0x0000
#define VNFL_DELETE 0x0800
#define VNFL_RENAME 0x1000
#define VNFL_NODE_TYPE (VNFL_RENAME|VNFL_DELETE|VNFL_COPY)
#define VNFL_CREATED 0x2000
#define VNFL_REJECTED 0x4000
#define VNFL_DEVICEINSTALLER 0x8000
enum {
ERR_VCP_IOFAIL = VCP_ERROR+1,
ERR_VCP_STRINGTOOLONG,
ERR_VCP_NOMEM,
ERR_VCP_QUEUEFULL,
ERR_VCP_NOVHSTR,
ERR_VCP_OVERFLOW,
ERR_VCP_BADARG,
ERR_VCP_UNINIT,
ERR_VCP_NOTFOUND,
ERR_VCP_BUSY,
ERR_VCP_INTERRUPTED,
ERR_VCP_BADDEST,
ERR_VCP_SKIPPED,
ERR_VCP_IO,
ERR_VCP_LOCKED,
ERR_VCP_WRONGDISK,
ERR_VCP_CHANGEMODE,
ERR_VCP_LDDINVALID,
ERR_VCP_LDDFIND,
ERR_VCP_LDDUNINIT,
ERR_VCP_LDDPATH_INVALID,
ERR_VCP_NOEXPANSION,
ERR_VCP_NOTOPEN,
ERR_VCP_NO_DIGITAL_SIGNATURE_CATALOG,
ERR_VCP_NO_DIGITAL_SIGNATURE_FILE
};
#define VCPN_OK 0
#define VCPN_PROCEED 0
#define VCPN_ABORT -1
#define VCPN_RETRY -2
#define VCPN_IGNORE -3
#define VCPN_SKIP -4
#define VCPN_FORCE -5
#define VCPN_DEFER -6
#define VCPN_FAIL -7
#define VCPN_RETRYFILE -8
#define VCPFL_ABANDON 0x00
#define VCPFL_BACKUP 0x01
#define VCPFL_COPY 0x02
#define VCPFL_BACKUPANDCOPY (VCPFL_BACKUP|VCPFL_COPY)
#define VCPFL_INSPECIFIEDORDER 0x04
#define VCPFL_DELETE 0x08
#define VCPFL_RENAME 0x10
#define VCPFL_ALL (VCPFL_COPY|VCPFL_DELETE|VCPFL_RENAME)
#define CFNL_BACKUP 0x0001
#define CFNL_DELETEONFAILURE 0x0002
#define CFNL_RENAMEONSUCCESS 0x0004
#define CFNL_CONTINUATION 0x0008
#define CFNL_SKIPPED 0x0010
#define CFNL_IGNOREERRORS 0x0020
#define CFNL_RETRYFILE 0x0040
#define CFNL_COPIED 0x0080
#define VFNL_MULTIPLEOK 0x0100
#define VFNL_DESTROYOLD 0x0200
#define VFNL_NOW 0x0400
#define VFNL_COPY 0x0000
#define VFNL_DELETE 0x0800
#define VFNL_RENAME 0x1000
#define VFNL_CREATED 0x2000
#define VFNL_REJECTED 0x4000
#define VCPM_DISKCLASS 0x01
#define VCPM_DISKFIRST 0x0100
#define VCPM_DISKLAST 0x01ff
enum {
VCPM_DISKCREATEINFO = VCPM_DISKFIRST,
VCPM_DISKGETINFO,
VCPM_DISKDESTROYINFO,
VCPM_DISKPREPINFO,
VCPM_DISKENSURE,
VCPM_DISKPROMPT,
VCPM_DISKFORMATBEGIN,
VCPM_DISKFORMATTING,
VCPM_DISKFORMATEND
};
#define VCPM_FILEINCLASS 0x02
#define VCPM_FILEOUTCLASS 0x03
#define VCPM_FILEFIRSTIN 0x0200
#define VCPM_FILEFIRSTOUT 0x0300
#define VCPM_FILELAST 0x03ff
enum {
VCPM_FILEOPENIN = VCPM_FILEFIRSTIN,
VCPM_FILEGETFATTR,
VCPM_FILECLOSEIN,
VCPM_FILECOPY,
VCPM_FILENEEDED,
VCPM_FILEOPENOUT = VCPM_FILEFIRSTOUT,
VCPM_FILESETFATTR,
VCPM_FILECLOSEOUT,
VCPM_FILEFINALIZE,
VCPM_FILEDELETE,
VCPM_FILERENAME
};
#define VCPM_NODECLASS 0x04
#define VCPM_NODEFIRST 0x0400
#define VCPM_NODELAST 0x04ff
enum {
VCPM_NODECREATE = VCPM_NODEFIRST,
VCPM_NODEACCEPT,
VCPM_NODEREJECT,
VCPM_NODEDESTROY,
VCPM_NODECHANGEDESTDIR,
VCPM_NODECOMPARE
};
#define VCPM_TALLYCLASS 0x05
#define VCPM_TALLYFIRST 0x0500
#define VCPM_TALLYLAST 0x05ff
enum {
VCPM_TALLYSTART = VCPM_TALLYFIRST,
VCPM_TALLYEND,
VCPM_TALLYFILE,
VCPM_TALLYDISK
};
#define VCPM_VERCLASS 0x06
#define VCPM_VERFIRST 0x0600
#define VCPM_VERLAST 0x06ff
enum {
VCPM_VERCHECK = VCPM_VERFIRST,
VCPM_VERCHECKDONE,
VCPM_VERRESOLVECONFLICT
};
#define VCPM_VSTATCLASS 0x07
#define VCPM_VSTATFIRST 0x0700
#define VCPM_VSTATLAST 0x07ff
enum {
VCPM_VSTATSTART = VCPM_VSTATFIRST,
VCPM_VSTATEND,
VCPM_VSTATREAD,
VCPM_VSTATWRITE,
VCPM_VSTATNEWDISK,
VCPM_VSTATCLOSESTART,
VCPM_VSTATCLOSEEND,
VCPM_VSTATBACKUPSTART,
VCPM_VSTATBACKUPEND,
VCPM_VSTATRENAMESTART,
VCPM_VSTATRENAMEEND,
VCPM_VSTATCOPYSTART,
VCPM_VSTATCOPYEND,
VCPM_VSTATDELETESTART,
VCPM_VSTATDELETEEND,
VCPM_VSTATPATHCHECKSTART,
VCPM_VSTATPATHCHECKEND,
VCPM_VSTATCERTIFYSTART,
VCPM_VSTATCERTIFYEND,
VCPM_VSTATUSERABORT,
VCPM_VSTATYIELD
};
#define VCPM_PATHCLASS 0x08
#define VCPM_PATHFIRST 0x0800
#define VCPM_PATHLAST 0x08ff
enum {
VCPM_BUILDPATH = VCPM_PATHFIRST,
VCPM_UNIQUEPATH,
VCPM_CHECKPATH
};
#define VCPM_PATCHCLASS 0x09
#define VCPM_PATCHFIRST 0x0900
#define VCPM_PATCHLAST 0x09ff
enum {
VCPM_FILEPATCHBEFORECPY = VCPM_PATCHFIRST,
VCPM_FILEPATCHAFTERCPY,
VCPM_FILEPATCHINFOPEN,
VCPM_FILEPATCHINFCLOSE
};
#define VCPM_CERTCLASS 0x0a
#define VCPM_CERTFIRST 0x0a00
#define VCPM_CERTLAST 0x0aff
enum {
VCPM_FILECERTIFY = VCPM_CERTFIRST,
VCPM_FILECERTIFYWARN
};
typedef LRESULT (CALLBACK *VIFPROC)(LPVOID lpvObj, UINT16 uMsg, WPARAM wParam, LPARAM lParam, LPARAM lparamRef);
typedef int (CALLBACK *VCPENUMPROC)(LPVIRTNODE lpvn, LPARAM lparamRef);
RETERR16 WINAPI VcpOpen16(VIFPROC vifproc, LPARAM lparamMsgRef);
/* VcpQueueCopy flags */
#define VNLP_SYSCRITICAL 0x0001
#define VNLP_SETUPCRITICAL 0x0002
#define VNLP_NOVERCHECK 0x0004
#define VNLP_FORCETEMP 0x0008
#define VNLP_IFEXISTS 0x0010
#define VNLP_KEEPNEWER 0x0020
#define VNLP_PATCHIFEXIST 0x0040
#define VNLP_NOPATCH 0x0080
#define VNLP_CATALOGCERT 0x0100
#define VNLP_NEEDCERTIFY 0x0200
#define VNLP_COPYIFEXISTS 0x0400
RETERR16 WINAPI VcpQueueCopy16(
LPCSTR lpszSrcFileName, LPCSTR lpszDstFileName,
LPCSTR lpszSrcDir, LPCSTR lpszDstDir,
LOGDISKID16 ldidSrc, LOGDISKID16 ldidDst,
LPEXPANDVTBL lpExpandVtbl,
WORD fl, LPARAM lParam
);
RETERR16 VcpFlush16(WORD fl, LPCSTR lpszBackupDest);
RETERR16 WINAPI VcpClose16(WORD fl, LPCSTR lpszBackupDest);
/* VcpExplain flags */
enum {
VCPEX_SRC_DISK,
VCPEX_SRC_CABINET,
VCPEX_SRC_LOCN,
VCPEX_DST_LOCN,
VCPEX_SRC_FILE,
VCPEX_DST_FILE,
VCPEX_DST_FILE_FINAL,
VCPEX_DOS_ERROR,
VCPEX_MESSAGE,
VCPEX_DOS_SOLUTION,
VCPEX_SRC_FULL,
VCPEX_DST_FULL,
VCPEX_DST_FULL_FINAL
};
LPCSTR WINAPI VcpExplain16(LPVIRTNODE lpVn, DWORD dwWhat);
/****** logical disk management ******/
typedef struct _LOGDISKDESC_S { /* ldd */
WORD cbSize; /* struct size */
LOGDISKID16 ldid; /* logical disk ID */
LPSTR pszPath; /* path this descriptor points to */
LPSTR pszVolLabel; /* volume label of the disk related to it */
LPSTR pszDiskName; /* name of this disk */
WORD wVolTime; /* modification time of volume label */
WORD wVolDate; /* modification date */
DWORD dwSerNum; /* serial number of disk */
WORD wFlags;
} LOGDISKDESC_S, *LPLOGDISKDESC;
/** logical disk identifiers (LDID) **/
/* predefined LDIDs */
#define LDID_PREDEF_START 0x0001
#define LDID_PREDEF_END 0x7fff
/* registry-assigned LDIDs */
#define LDID_VAR_START 0x7000
#define LDID_VAR_END 0x7fff
/* dynamically assigned LDIDs */
#define LDID_ASSIGN_START 0x8000
#define LDID_ASSIGN_END 0xbfff
#define LDID_NULL 0
#define LDID_ABSOLUTE ((UINT)-1)
#define LDID_SRCPATH 1 /* setup source path */
#define LDID_SETUPTEMP 2 /* setup temp dir */
#define LDID_UNINSTALL 3 /* uninstall dir */
#define LDID_BACKUP 4 /* backup dir */
#define LDID_SETUPSCRATCH 5 /* setup scratch dir */
#define LDID_WIN 10 /* win dir */
#define LDID_SYS 11 /* win system dir */
#define LDID_IOS 12 /* win Iosubsys dir */
#define LDID_CMD 13 /* win command dir */
#define LDID_CPL 14 /* win control panel dir */
#define LDID_PRINT 15 /* win printer dir */
#define LDID_MAIL 16 /* win mail dir */
#define LDID_INF 17 /* win inf dir */
#define LDID_HELP 18 /* win help dir */
#define LDID_WINADMIN 19 /* admin dir */
#define LDID_FONTS 20 /* win fonts dir */
#define LDID_VIEWERS 21 /* win viewers dir */
#define LDID_VMM32 22 /* win VMM32 dir */
#define LDID_COLOR 23 /* win color mngment dir */
#define LDID_APPS 24 /* win apps dir */
#define LDID_SHARED 25 /* win shared dir */
#define LDID_WINBOOT 26 /* guaranteed win boot drive */
#define LDID_MACHINE 27 /* machine specific files */
#define LDID_HOST_WINBOOT 28
#define LDID_BOOT 30 /* boot drive root dir */
#define LDID_BOOT_HOST 31 /* boot drive host root dir */
#define LDID_OLD_WINBOOT 32 /* root subdir */
#define LDID_OLD_WIN 33 /* old windows dir */
/* flags for GenInstall() */
#define GENINSTALL_DO_FILES 1
#define GENINSTALL_DO_INI 2
#define GENINSTALL_DO_REG 4
#define GENINSTALL_DO_INI2REG 8
#define GENINSTALL_DO_CFGAUTO 16
#define GENINSTALL_DO_LOGCONFIG 32
#define GENINSTALL_DO_REGSRCPATH 64
#define GENINSTALL_DO_PERUSER 128
#define GEINISTALL_DO_INIREG 14
#define GENINSTALL_DO_ALL 255
/*
* flags for InstallHinfSection()
* 128 can be added, too. This means that the .inf file is provided by you
* instead of being a 32 bit file (i.e. Windows .inf file).
* In this case all files you install must be in the same dir
* as your .inf file on the install disk.
*/
#define HOW_NEVER_REBOOT 0
#define HOW_ALWAYS_SILENT_REBOOT 1
#define HOW_ALWAYS_PROMPT_REBOOT 2
#define HOW_SILENT_REBOOT 3
#define HOW_PROMPT_REBOOT 4
/****** device installation stuff ******/
#define MAX_CLASS_NAME_LEN 32
#define MAX_DEVNODE_ID_LEN 256
#define MAX_GUID_STR 50
typedef struct _DEVICE_INFO
{
UINT16 cbSize;
struct _DEVICE_INFO *lpNextDi;
char szDescription[LINE_LEN];
DWORD dnDevnode;
HKEY hRegKey;
char szRegSubkey[MAX_DEVNODE_ID_LEN];
char szClassName[MAX_CLASS_NAME_LEN];
DWORD Flags;
HWND16 hwndParent;
/*LPDRIVER_NODE*/ LPVOID lpCompatDrvList;
/*LPDRIVER_NODE*/ LPVOID lpClassDrvList;
/*LPDRIVER_NODE*/ LPVOID lpSelectedDriver;
ATOM atDriverPath;
ATOM atTempInfFile;
HINSTANCE16 hinstClassInstaller;
HINSTANCE16 hinstClassPropProvidor;
HINSTANCE16 hinstDevicePropProvidor;
HINSTANCE16 hinstBasicPropProvidor;
FARPROC16 fpClassInstaller;
FARPROC16 fpClassEnumPropPages;
FARPROC16 fpDeviceEnumPropPages;
FARPROC16 fpEnumBasicProperties;
DWORD dwSetupReserved;
DWORD dwClassInstallReserved;
/*GENCALLBACKPROC*/ LPVOID gicpGenInstallCallBack;
LPARAM gicplParam;
UINT16 InfType;
HINSTANCE16 hinstPrivateProblemHandler;
FARPROC16 fpPrivateProblemHandler;
LPARAM lpClassInstallParams;
struct _DEVICE_INFO *lpdiChildList;
DWORD dwFlagsEx;
/*LPDRIVER_INFO*/ LPVOID lpCompatDrvInfoList;
/*LPDRIVER_INFO*/ LPVOID lpClassDrvInfoList;
char szClassGUID[MAX_GUID_STR];
} DEVICE_INFO16, *LPDEVICE_INFO16, **LPLPDEVICE_INFO16;
extern void WINAPI GenFormStrWithoutPlaceHolders16(LPSTR,LPCSTR,HINF16);
extern RETERR16 WINAPI IpOpen16(LPCSTR,HINF16 *);
extern RETERR16 WINAPI IpClose16(HINF16);
extern RETERR16 WINAPI CtlSetLdd16(LPLOGDISKDESC);
extern RETERR16 WINAPI CtlGetLdd16(LPLOGDISKDESC);
extern RETERR16 WINAPI CtlFindLdd16(LPLOGDISKDESC);
extern RETERR16 WINAPI CtlAddLdd16(LPLOGDISKDESC);
extern RETERR16 WINAPI CtlDelLdd16(LOGDISKID16);
extern RETERR16 WINAPI CtlGetLddPath16(LOGDISKID16 ldid, LPSTR szPath);
extern RETERR16 WINAPI GenInstall16(HINF16,LPCSTR,WORD);
typedef struct tagLDD_LIST {
LPLOGDISKDESC pldd;
struct tagLDD_LIST *next;
} LDD_LIST;
#define INIT_LDD(ldd, LDID) \
do { \
memset(&(ldd), 0, sizeof(LOGDISKDESC_S)); \
(ldd).cbSize = sizeof(LOGDISKDESC_S); \
ldd.ldid = LDID; \
} while(0)
#endif /* __SETUPX16_H */

View file

@ -1,615 +0,0 @@
/*
* SETUPX library
*
* Copyright 1998,2000 Andreas Mohr
*
* 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
*
* FIXME: Rather non-functional functions for now.
*
* See:
* http://www.geocities.com/SiliconValley/Network/5317/drivers.html
* http://willemer.de/informatik/windows/inf_info.htm (German)
* http://www.microsoft.com/ddk/ddkdocs/win98ddk/devinst_12uw.htm
* DDK: setupx.h
* http://mmatrix.tripod.com/customsystemfolder/infsysntaxfull.html
* http://www.rdrop.com/~cary/html/inf_faq.html
* http://support.microsoft.com/support/kb/articles/q194/6/40.asp
*
* Stuff tested with:
* - rs405deu.exe (German Acroread 4.05 setup)
* - ie5setup.exe
* - Netmeeting
*
* FIXME:
* - string handling is... weird ;) (buflen etc.)
* - memory leaks ?
* - separate that mess (but probably only when it's done completely)
*
* SETUPX consists of several parts with the following acronyms/prefixes:
* Di device installer (devinst.c ?)
* Gen generic installer (geninst.c ?)
* Ip .INF parsing (infparse.c)
* LDD logical device descriptor (ldd.c ?)
* LDID logical device ID
* SU setup (setup.c ?)
* Tp text processing (textproc.c ?)
* Vcp virtual copy module (vcp.c ?)
* ...
*
* The SETUPX DLL is NOT thread-safe. That's why many installers urge you to
* "close all open applications".
* All in all the design of it seems to be a bit weak.
* Not sure whether my implementation of it is better, though ;-)
*/
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
#include "winerror.h"
#include "wine/winuser16.h"
#include "wownt32.h"
#include "wingdi.h"
#include "winuser.h"
#include "winnls.h"
#include "setupapi.h"
#include "setupx16.h"
#include "setupapi_private.h"
#include "winerror.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
#define HINSTANCE_32(h16) ((HINSTANCE)(ULONG_PTR)(h16))
/***********************************************************************
* SURegOpenKey (SETUPX.47)
*/
DWORD WINAPI SURegOpenKey( HKEY hkey, LPCSTR lpszSubKey, PHKEY retkey )
{
FIXME("(%p,%s,%p), semi-stub.\n",hkey,debugstr_a(lpszSubKey),retkey);
return RegOpenKeyA( hkey, lpszSubKey, retkey );
}
/***********************************************************************
* SURegQueryValueEx (SETUPX.50)
*/
DWORD WINAPI SURegQueryValueEx( HKEY hkey, LPSTR lpszValueName,
LPDWORD lpdwReserved, LPDWORD lpdwType,
LPBYTE lpbData, LPDWORD lpcbData )
{
FIXME("(%p,%s,%p,%p,%p,%ld), semi-stub.\n",hkey,debugstr_a(lpszValueName),
lpdwReserved,lpdwType,lpbData,lpcbData?*lpcbData:0);
return RegQueryValueExA( hkey, lpszValueName, lpdwReserved, lpdwType,
lpbData, lpcbData );
}
/***********************************************************************
* InstallHinfSection (SETUPX.527)
*
* hwnd = parent window
* hinst = instance of SETUPX.DLL
* lpszCmdLine = e.g. "DefaultInstall 132 C:\MYINSTALL\MYDEV.INF"
* Here "DefaultInstall" is the .inf file section to be installed (optional).
* The 132 value is made of the HOW_xxx flags and sometimes 128 (-> setupx16.h).
*
* nCmdShow = nCmdShow of CreateProcess
*/
RETERR16 WINAPI InstallHinfSection16( HWND16 hwnd, HINSTANCE16 hinst, LPCSTR lpszCmdLine, INT16 nCmdShow)
{
InstallHinfSectionA( HWND_32(hwnd), HINSTANCE_32(hinst), lpszCmdLine, nCmdShow );
return OK;
}
typedef struct
{
LPCSTR RegValName;
LPCSTR StdString; /* fallback string; sub dir of windows directory */
} LDID_DATA;
static const LDID_DATA LDID_Data[34] =
{
{ /* 0 (LDID_NULL) -- not defined */
NULL,
NULL
},
{ /* 1 (LDID_SRCPATH) = source of installation. hmm, what to do here ? */
"SourcePath", /* hmm, does SETUPX have to care about updating it ?? */
NULL
},
{ /* 2 (LDID_SETUPTEMP) = setup temp dir */
"SetupTempDir",
NULL
},
{ /* 3 (LDID_UNINSTALL) = uninstall backup dir */
"UninstallDir",
NULL
},
{ /* 4 (LDID_BACKUP) = backup dir */
"BackupDir",
NULL
},
{ /* 5 (LDID_SETUPSCRATCH) = setup scratch dir */
"SetupScratchDir",
NULL
},
{ /* 6 -- not defined */
NULL,
NULL
},
{ /* 7 -- not defined */
NULL,
NULL
},
{ /* 8 -- not defined */
NULL,
NULL
},
{ /* 9 -- not defined */
NULL,
NULL
},
{ /* 10 (LDID_WIN) = windows dir */
"WinDir",
""
},
{ /* 11 (LDID_SYS) = system dir */
"SysDir",
NULL /* call GetSystemDirectory() instead */
},
{ /* 12 (LDID_IOS) = IOSubSys dir */
NULL, /* FIXME: registry string ? */
"SYSTEM\\IOSUBSYS"
},
{ /* 13 (LDID_CMD) = COMMAND dir */
NULL, /* FIXME: registry string ? */
"COMMAND"
},
{ /* 14 (LDID_CPL) = control panel dir */
NULL,
""
},
{ /* 15 (LDID_PRINT) = windows printer dir */
NULL,
"SYSTEM" /* correct ?? */
},
{ /* 16 (LDID_MAIL) = destination mail dir */
NULL,
""
},
{ /* 17 (LDID_INF) = INF dir */
"SetupScratchDir", /* correct ? */
"INF"
},
{ /* 18 (LDID_HELP) = HELP dir */
NULL, /* ??? */
"HELP"
},
{ /* 19 (LDID_WINADMIN) = Admin dir */
"WinAdminDir",
""
},
{ /* 20 (LDID_FONTS) = Fonts dir */
NULL, /* ??? */
"FONTS"
},
{ /* 21 (LDID_VIEWERS) = Viewers */
NULL, /* ??? */
"SYSTEM\\VIEWERS"
},
{ /* 22 (LDID_VMM32) = VMM32 dir */
NULL, /* ??? */
"SYSTEM\\VMM32"
},
{ /* 23 (LDID_COLOR) = ICM dir */
"ICMPath",
"SYSTEM\\COLOR"
},
{ /* 24 (LDID_APPS) = root of boot drive ? */
"AppsDir",
"C:\\"
},
{ /* 25 (LDID_SHARED) = shared dir */
"SharedDir",
""
},
{ /* 26 (LDID_WINBOOT) = Windows boot dir */
"WinBootDir",
""
},
{ /* 27 (LDID_MACHINE) = machine specific files */
"MachineDir",
NULL
},
{ /* 28 (LDID_HOST_WINBOOT) = Host Windows boot dir */
"HostWinBootDir",
NULL
},
{ /* 29 -- not defined */
NULL,
NULL
},
{ /* 30 (LDID_BOOT) = Root of boot drive */
"BootDir",
NULL
},
{ /* 31 (LDID_BOOT_HOST) = Root of boot drive host */
"BootHost",
NULL
},
{ /* 32 (LDID_OLD_WINBOOT) = subdir of root */
"OldWinBootDir",
NULL
},
{ /* 33 (LDID_OLD_WIN) = old win dir */
"OldWinDir",
NULL
}
/* the rest (34-38) isn't too interesting, so I'll forget about it */
};
/*
* LDD == Logical Device Descriptor
* LDID == Logical Device ID
*
* The whole LDD/LDID business might go into a separate file named
* ldd.c.
* At the moment I don't know what the hell these functions are really doing.
* That's why I added reporting stubs.
* The only thing I do know is that I need them for the LDD/LDID infrastructure.
* That's why I implemented them in a way that's suitable for my purpose.
*/
static LDD_LIST *pFirstLDD = NULL;
static BOOL std_LDDs_done = FALSE;
void SETUPX_CreateStandardLDDs(void)
{
HKEY hKey = 0;
WORD n;
DWORD type, len;
LOGDISKDESC_S ldd;
char buffer[MAX_PATH];
/* has to be here, otherwise loop */
std_LDDs_done = TRUE;
RegOpenKeyA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup", &hKey);
for (n=0; n < sizeof(LDID_Data)/sizeof(LDID_DATA); n++)
{
buffer[0] = '\0';
len = MAX_PATH;
if ( (hKey) && (LDID_Data[n].RegValName)
&& (RegQueryValueExA(hKey, LDID_Data[n].RegValName,
NULL, &type, (LPBYTE)buffer, &len) == ERROR_SUCCESS)
&& (type == REG_SZ) )
{
TRACE("found value '%s' for LDID %d\n", buffer, n);
}
else
switch(n)
{
case LDID_SRCPATH:
FIXME("LDID_SRCPATH: what exactly do we have to do here ?\n");
strcpy(buffer, "X:\\FIXME");
break;
case LDID_SYS:
GetSystemDirectoryA(buffer, MAX_PATH);
break;
case LDID_APPS:
case LDID_MACHINE:
case LDID_HOST_WINBOOT:
case LDID_BOOT:
case LDID_BOOT_HOST:
strcpy(buffer, "C:\\");
break;
default:
if (LDID_Data[n].StdString)
{
DWORD len = GetWindowsDirectoryA(buffer, MAX_PATH);
LPSTR p;
p = buffer + len;
*p++ = '\\';
strcpy(p, LDID_Data[n].StdString);
}
break;
}
if (buffer[0])
{
INIT_LDD(ldd, n);
ldd.pszPath = buffer;
TRACE("LDID %d -> '%s'\n", ldd.ldid, ldd.pszPath);
CtlSetLdd16(&ldd);
}
}
if (hKey) RegCloseKey(hKey);
}
/***********************************************************************
* CtlDelLdd (SETUPX.37)
*
* RETURN
* ERR_VCP_LDDINVALID if ldid < LDID_ASSIGN_START.
*/
RETERR16 SETUPX_DelLdd(LOGDISKID16 ldid)
{
LDD_LIST *pCurr, *pPrev = NULL;
TRACE("(%d)\n", ldid);
if (!std_LDDs_done)
SETUPX_CreateStandardLDDs();
if (ldid < LDID_ASSIGN_START)
return ERR_VCP_LDDINVALID;
pCurr = pFirstLDD;
/* search until we find the appropriate LDD or hit the end */
while ((pCurr != NULL) && (ldid > pCurr->pldd->ldid))
{
pPrev = pCurr;
pCurr = pCurr->next;
}
if ( (pCurr == NULL) /* hit end of list */
|| (ldid != pCurr->pldd->ldid) )
return ERR_VCP_LDDFIND; /* correct ? */
/* ok, found our victim: eliminate it */
if (pPrev)
pPrev->next = pCurr->next;
if (pCurr == pFirstLDD)
pFirstLDD = NULL;
HeapFree(GetProcessHeap(), 0, pCurr);
return OK;
}
/***********************************************************************
* CtlDelLdd (SETUPX.37)
*/
RETERR16 WINAPI CtlDelLdd16(LOGDISKID16 ldid)
{
FIXME("(%d); - please report this!\n", ldid);
return SETUPX_DelLdd(ldid);
}
/***********************************************************************
* CtlFindLdd (SETUPX.35)
*
* doesn't check pldd ptr validity: crash (W98SE)
*
* RETURN
* ERR_VCP_LDDINVALID if pldd->cbSize != structsize
* 1 in all other cases ??
*
*/
RETERR16 WINAPI CtlFindLdd16(LPLOGDISKDESC pldd)
{
LDD_LIST *pCurr, *pPrev = NULL;
TRACE("(%p)\n", pldd);
if (!std_LDDs_done)
SETUPX_CreateStandardLDDs();
if (pldd->cbSize != sizeof(LOGDISKDESC_S))
return ERR_VCP_LDDINVALID;
pCurr = pFirstLDD;
/* search until we find the appropriate LDD or hit the end */
while ((pCurr != NULL) && (pldd->ldid > pCurr->pldd->ldid))
{
pPrev = pCurr;
pCurr = pCurr->next;
}
if ( (pCurr == NULL) /* hit end of list */
|| (pldd->ldid != pCurr->pldd->ldid) )
return ERR_VCP_LDDFIND; /* correct ? */
memcpy(pldd, pCurr->pldd, pldd->cbSize);
/* hmm, we probably ought to strcpy() the string ptrs here */
return 1; /* what is this ?? */
}
/***********************************************************************
* CtlSetLdd (SETUPX.33)
*
* Set an LDD entry.
*
* RETURN
* ERR_VCP_LDDINVALID if pldd.cbSize != sizeof(LOGDISKDESC_S)
*
*/
RETERR16 WINAPI CtlSetLdd16(LPLOGDISKDESC pldd)
{
LDD_LIST *pCurr, *pPrev = NULL;
LPLOGDISKDESC pCurrLDD;
HANDLE heap;
BOOL is_new = FALSE;
TRACE("(%p)\n", pldd);
if (!std_LDDs_done)
SETUPX_CreateStandardLDDs();
if (pldd->cbSize != sizeof(LOGDISKDESC_S))
return ERR_VCP_LDDINVALID;
heap = GetProcessHeap();
pCurr = pFirstLDD;
/* search until we find the appropriate LDD or hit the end */
while ((pCurr != NULL) && (pldd->ldid > pCurr->pldd->ldid))
{
pPrev = pCurr;
pCurr = pCurr->next;
}
if (!pCurr || pldd->ldid != pCurr->pldd->ldid)
{
is_new = TRUE;
pCurr = HeapAlloc(heap, 0, sizeof(LDD_LIST));
pCurr->pldd = HeapAlloc(heap, 0, sizeof(LOGDISKDESC_S));
pCurr->next = NULL;
pCurrLDD = pCurr->pldd;
}
else
{
pCurrLDD = pCurr->pldd;
HeapFree(heap, 0, pCurrLDD->pszPath);
HeapFree(heap, 0, pCurrLDD->pszVolLabel);
HeapFree(heap, 0, pCurrLDD->pszDiskName);
}
memcpy(pCurrLDD, pldd, sizeof(LOGDISKDESC_S));
if (pldd->pszPath)
{
pCurrLDD->pszPath = HeapAlloc( heap, 0, strlen(pldd->pszPath)+1 );
strcpy( pCurrLDD->pszPath, pldd->pszPath );
}
if (pldd->pszVolLabel)
{
pCurrLDD->pszVolLabel = HeapAlloc( heap, 0, strlen(pldd->pszVolLabel)+1 );
strcpy( pCurrLDD->pszVolLabel, pldd->pszVolLabel );
}
if (pldd->pszDiskName)
{
pCurrLDD->pszDiskName = HeapAlloc( heap, 0, strlen(pldd->pszDiskName)+1 );
strcpy( pCurrLDD->pszDiskName, pldd->pszDiskName );
}
if (is_new) /* link into list */
{
if (pPrev)
{
pCurr->next = pPrev->next;
pPrev->next = pCurr;
}
if (!pFirstLDD)
pFirstLDD = pCurr;
}
return OK;
}
/***********************************************************************
* CtlAddLdd (SETUPX.36)
*
* doesn't check pldd ptr validity: crash (W98SE)
*
*/
static LOGDISKID16 ldid_to_add = LDID_ASSIGN_START;
RETERR16 WINAPI CtlAddLdd16(LPLOGDISKDESC pldd)
{
pldd->ldid = ldid_to_add++;
return CtlSetLdd16(pldd);
}
/***********************************************************************
* CtlGetLdd (SETUPX.34)
*
* doesn't check pldd ptr validity: crash (W98SE)
* What the !@#$%&*( is the difference between CtlFindLdd() and CtlGetLdd() ??
*
* RETURN
* ERR_VCP_LDDINVALID if pldd->cbSize != structsize
*
*/
static RETERR16 SETUPX_GetLdd(LPLOGDISKDESC pldd)
{
LDD_LIST *pCurr, *pPrev = NULL;
if (!std_LDDs_done)
SETUPX_CreateStandardLDDs();
if (pldd->cbSize != sizeof(LOGDISKDESC_S))
return ERR_VCP_LDDINVALID;
pCurr = pFirstLDD;
/* search until we find the appropriate LDD or hit the end */
while ((pCurr != NULL) && (pldd->ldid > pCurr->pldd->ldid))
{
pPrev = pCurr;
pCurr = pCurr->next;
}
if (pCurr == NULL) /* hit end of list */
return ERR_VCP_LDDFIND; /* correct ? */
memcpy(pldd, pCurr->pldd, pldd->cbSize);
/* hmm, we probably ought to strcpy() the string ptrs here */
return OK;
}
/**********************************************************************/
RETERR16 WINAPI CtlGetLdd16(LPLOGDISKDESC pldd)
{
FIXME("(%p); - please report this!\n", pldd);
return SETUPX_GetLdd(pldd);
}
/***********************************************************************
* CtlGetLddPath (SETUPX.38)
*
* Gets the path of an LDD.
* No crash if szPath == NULL.
* szPath has to be at least MAX_PATH_LEN bytes long.
* RETURN
* ERR_VCP_LDDUNINIT if LDD for LDID not found.
*/
RETERR16 WINAPI CtlGetLddPath16(LOGDISKID16 ldid, LPSTR szPath)
{
TRACE("(%d, %p);\n", ldid, szPath);
if (szPath)
{
LOGDISKDESC_S ldd;
INIT_LDD(ldd, ldid);
if (CtlFindLdd16(&ldd) == ERR_VCP_LDDFIND)
return ERR_VCP_LDDUNINIT;
SETUPX_GetLdd(&ldd);
strcpy(szPath, ldd.pszPath);
TRACE("ret '%s' for LDID %d\n", szPath, ldid);
}
return OK;
}
/***********************************************************************
* CtlSetLddPath (SETUPX.508)
*
* Sets the path of an LDD.
* Creates LDD for LDID if not existing yet.
*/
RETERR16 WINAPI CtlSetLddPath16(LOGDISKID16 ldid, LPSTR szPath)
{
LOGDISKDESC_S ldd;
TRACE("(%d, '%s');\n", ldid, szPath);
SetupSetDirectoryIdA( 0, ldid, szPath );
INIT_LDD(ldd, ldid);
ldd.pszPath = szPath;
return CtlSetLdd16(&ldd);
}

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "setupapi_private.h"

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "setupapi_private.h"
@ -58,6 +58,7 @@ BOOL WINAPI SetupCopyOEMInfW(PCWSTR sourceinffile, PCWSTR sourcemedialoc,
DWORD destnamesize, PDWORD required,
PWSTR *destinfnamecomponent)
{
FIXME("%s %s 0x%lx 0x%lx\n", debugstr_w(sourceinffile), debugstr_w(sourcemedialoc), mediatype, copystyle);
FIXME("stub: source %s location %s ...\n", debugstr_w(sourceinffile),
debugstr_w(sourcemedialoc));
//return FALSE;

View file

@ -15,7 +15,7 @@
*
* 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
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*
* FIXME: we now rely on builtin setupapi.dll for dialog resources.
* This is bad ! We ought to have 16bit resource handling working.