mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 19:52:56 +00:00
Keep minimal amount of differences with Wine code
Remove useless files svn path=/trunk/; revision=22091
This commit is contained in:
parent
0dd1e9a2af
commit
2a99309f16
43 changed files with 168 additions and 1671 deletions
|
@ -15,10 +15,10 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
|
||||||
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
/*
|
/* Hey, Emacs, open this file with -*- coding: cp1250 -*-
|
||||||
|
*
|
||||||
* Czech resources for SETUPAPI
|
* Czech resources for SETUPAPI
|
||||||
*
|
*
|
||||||
* Copyright 2001 Andreas Mohr
|
* Copyright 2001 Andreas Mohr
|
||||||
|
@ -16,10 +17,12 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
|
||||||
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
||||||
|
|
|
@ -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
|
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
|
||||||
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
||||||
|
|
|
@ -15,10 +15,10 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
|
||||||
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
LANGUAGE LANG_ESPERANTO, SUBLANG_DEFAULT
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
|
||||||
|
|
|
@ -15,10 +15,10 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
|
||||||
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Hungaruan resources for SETUPAPI
|
* Hungarian resources for SETUPAPI
|
||||||
*
|
*
|
||||||
* Copyright 2001 Andreas Mohr
|
* Copyright 2001 Andreas Mohr
|
||||||
* Copyright 2005 Robert Horvath (talley at cubeclub.hu) - Hungarian translation
|
* 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
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
|
||||||
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
||||||
|
|
|
@ -16,10 +16,10 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
|
||||||
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
|
||||||
|
|
|
@ -15,10 +15,10 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
|
||||||
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
||||||
|
|
|
@ -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:
|
|
|
@ -15,10 +15,10 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
|
||||||
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL
|
||||||
|
|
|
@ -15,10 +15,10 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
|
||||||
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
|
||||||
|
|
|
@ -15,10 +15,10 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
|
||||||
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
||||||
|
|
|
@ -15,10 +15,10 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
COPYFILEDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 20, 20, 208, 105
|
||||||
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
STYLE DS_MODALFRAME | DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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"
|
#include "setupapi_private.h"
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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"
|
#include "setupapi_private.h"
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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"
|
#include "setupapi_private.h"
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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"
|
#include "setupapi_private.h"
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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:
|
* FIXME:
|
||||||
* - return values ???
|
* - return values ???
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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"
|
#include "setupapi_private.h"
|
||||||
|
@ -453,6 +453,9 @@ static BOOL do_register_dll( const struct register_dll_info *info, const WCHAR *
|
||||||
HMODULE module;
|
HMODULE module;
|
||||||
HRESULT res;
|
HRESULT res;
|
||||||
SP_REGISTER_CONTROL_STATUSW status;
|
SP_REGISTER_CONTROL_STATUSW status;
|
||||||
|
#ifdef __WINESRC__
|
||||||
|
IMAGE_NT_HEADERS *nt;
|
||||||
|
#endif
|
||||||
|
|
||||||
status.cbSize = sizeof(status);
|
status.cbSize = sizeof(status);
|
||||||
status.FileName = path;
|
status.FileName = path;
|
||||||
|
@ -482,6 +485,47 @@ static BOOL do_register_dll( const struct register_dll_info *info, const WCHAR *
|
||||||
goto done;
|
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)
|
if (flags & FLG_REGSVR_DLLREGISTER)
|
||||||
{
|
{
|
||||||
const char *entry_point = info->unregister ? "DllUnregisterServer" : "DllRegisterServer";
|
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;
|
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
|
* 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 ))
|
if (!iterate_section_fields( hinf, section, RegisterDlls, register_dlls_callback, &info ))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
#ifdef __WINESRC__
|
||||||
|
if (!iterate_section_fields( hinf, section, WineFakeDlls, fake_dlls_callback, NULL ))
|
||||||
|
return FALSE;
|
||||||
|
#endif // __WINESRC__
|
||||||
}
|
}
|
||||||
if (flags & SPINST_UNREGSVR)
|
if (flags & SPINST_UNREGSVR)
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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"
|
#include "setupapi_private.h"
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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"
|
#include "setupapi_private.h"
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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"
|
#include "setupapi_private.h"
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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"
|
#include "setupapi_private.h"
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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"
|
#include "setupapi_private.h"
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
#ifndef __RPC_PRIVATE_H
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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>
|
#include <windows.h>
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
#ifndef __SETUPAPI_PRIVATE_H
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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
|
* Many useful traces are commented in code, uncomment them if you have
|
||||||
|
|
|
@ -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
|
|
|
@ -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 */
|
|
|
@ -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);
|
|
||||||
}
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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"
|
#include "setupapi_private.h"
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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"
|
#include "setupapi_private.h"
|
||||||
|
@ -58,6 +58,7 @@ BOOL WINAPI SetupCopyOEMInfW(PCWSTR sourceinffile, PCWSTR sourcemedialoc,
|
||||||
DWORD destnamesize, PDWORD required,
|
DWORD destnamesize, PDWORD required,
|
||||||
PWSTR *destinfnamecomponent)
|
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),
|
FIXME("stub: source %s location %s ...\n", debugstr_w(sourceinffile),
|
||||||
debugstr_w(sourcemedialoc));
|
debugstr_w(sourcemedialoc));
|
||||||
//return FALSE;
|
//return FALSE;
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
* License along with this library; if not, write to the Free Software
|
* 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.
|
* FIXME: we now rely on builtin setupapi.dll for dialog resources.
|
||||||
* This is bad ! We ought to have 16bit resource handling working.
|
* This is bad ! We ought to have 16bit resource handling working.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue