Questions about using native vs implementing our own

Eric Pouech eric.pouech at wanadoo.fr
Wed Apr 11 11:32:29 CDT 2007


Tom Spear a écrit :
> Hi again all, before I go and file another needless bug, I thought I
> would ask for opinions.
>
> I decided to try to run Process Explorer today with wine.  When I
> first ran it, I got a dialog about missing a function.  So I looked
> back thru the traces and it was because we were missing acledit.dll..
> So I imported that from my windows xp install, and got the dialog
> again.  Turned out I was also missing netui0.dll, netui1.dll, and
> netui2.dll and those in turn needed netrap.dll and samlib.dll.
>
> Once I got all of those imported from XP, Process Explorer now runs 
> beautifully.
>
> I looked at the version information, and here is the description of 
> each dll
>
> acledit is an access control list editor
> netui0 is NT LM UI Common Code - GUI Classes
> netui1 is NT LM UI Common Code - Networking classes
> netui2 is NT LM UI Common Code - GUI Classes
> netrap is Net Remote Admin Protocol DLL
> and samlib is SAM Library DLL
>
> I assume SAM is the Security Accounts Manager service, so that last
> dll would go for that and most likely would never be implemented with
> wine.  But, how about the others?  Is doing one of these something
> possibly feasible for a SoC project? I'm sure that there are other
> projects that use these dll's as well, but I dont know of them..
>
> My biggest question is when is it appropriate for us to build our own
> DLL's vs just saying to use native?
>
> I would personally like to at least see the NTLM stuff get built since
> I know one of the developers is working on NTLM right now
>
> Also, should I file a bug for Process Explorer needing native dll's,
> or should I maybe file a bug to build our own versions of these dll's,
> OR should I just leave it alone altogether?
>
> I am creating an AppDB page for the program now.  Does anyone object
> to me putting notes about which native dll's are needed on that page?
>
>
don't remember why I didn't send it earlier :-/
it seems it might be useful
A+

-- 
Eric Pouech
"The problem with designing something completely foolproof is to underestimate the ingenuity of a complete idiot." (Douglas Adams)

-------------- next part --------------
[AclEdit]: stubbed out acledit DLL (new in XP)

From: Eric Pouech <eric.pouech at wanadoo.fr>

- needed by Sysinternals' process explorer
---

 Makefile.in               |    2 ++
 configure                 |    3 +++
 configure.ac              |    1 +
 dlls/Makefile.in          |    5 ++++
 dlls/acledit/Makefile.in  |   14 ++++++++++++
 dlls/acledit/acledit.spec |    8 +++++++
 dlls/acledit/main.c       |   52 +++++++++++++++++++++++++++++++++++++++++++++
 7 files changed, 85 insertions(+), 0 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index 7fa8ef0..541ff0d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -157,6 +157,7 @@ ALL_MAKEFILES = \
 	dlls/Maketest.rules \
 	programs/Makeprog.rules \
 	dlls/Makefile \
+	dlls/acledit/Makefile \
 	dlls/activeds/Makefile \
 	dlls/advapi32/Makefile \
 	dlls/advapi32/tests/Makefile \
@@ -498,6 +499,7 @@ dlls/Maketest.rules: dlls/Maketest.rules
 programs/Makeprog.rules: programs/Makeprog.rules.in Make.rules
 Makefile: Makefile.in Make.rules
 dlls/Makefile: dlls/Makefile.in Make.rules
+dlls/acledit/Makefile: dlls/acledit/Makefile.in dlls/Makedll.rules
 dlls/activeds/Makefile: dlls/activeds/Makefile.in dlls/Makedll.rules
 dlls/advapi32/Makefile: dlls/advapi32/Makefile.in dlls/Makedll.rules
 dlls/advapi32/tests/Makefile: dlls/advapi32/tests/Makefile.in dlls/Maketest.rules
diff --git a/configure b/configure
index e240093..4fd1069 100755
--- a/configure
+++ b/configure
@@ -20202,6 +20202,8 @@ ac_config_files="$ac_config_files Makefi
 
 ac_config_files="$ac_config_files dlls/Makefile"
 
+ac_config_files="$ac_config_files dlls/acledit/Makefile"
+
 ac_config_files="$ac_config_files dlls/activeds/Makefile"
 
 ac_config_files="$ac_config_files dlls/advapi32/Makefile"
@@ -21421,6 +21423,7 @@ do
     "programs/Makeprog.rules") CONFIG_FILES="$CONFIG_FILES programs/Makeprog.rules" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "dlls/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/Makefile" ;;
+    "dlls/acledit/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/acledit/Makefile" ;;
     "dlls/activeds/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/activeds/Makefile" ;;
     "dlls/advapi32/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/advapi32/Makefile" ;;
     "dlls/advapi32/tests/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/advapi32/tests/Makefile" ;;
diff --git a/configure.ac b/configure.ac
index 6d9e2cf..beea1df 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1491,6 +1491,7 @@ AC_CONFIG_FILES([dlls/Maketest.rules])
 AC_CONFIG_FILES([programs/Makeprog.rules])
 AC_CONFIG_FILES([Makefile])
 AC_CONFIG_FILES([dlls/Makefile])
+AC_CONFIG_FILES([dlls/acledit/Makefile])
 AC_CONFIG_FILES([dlls/activeds/Makefile])
 AC_CONFIG_FILES([dlls/advapi32/Makefile])
 AC_CONFIG_FILES([dlls/advapi32/tests/Makefile])
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index a0dcea0..0571524 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -16,6 +16,7 @@ EXTRADIRS = @GLU32FILES@ @OPENGLFILES@ @
 # Subdir list
 
 BASEDIRS = \
+	acledit \
 	activeds \
 	advapi32 \
 	advpack \
@@ -455,6 +456,7 @@ IMPORT_LIBS = \
 	strmiids/libstrmiids.a \
 	uuid/libuuid.a \
 	winecrt0/libwinecrt0.a \
+	acledit/libacledit.$(IMPLIBEXT) \
 	activeds/libactiveds.$(IMPLIBEXT) \
 	advapi32/libadvapi32.$(IMPLIBEXT) \
 	advpack/libadvpack.$(IMPLIBEXT) \
@@ -580,6 +582,9 @@ implib: $(IMPORT_LIBS)
 
 .PHONY: implib
 
+acledit/libacledit.$(IMPLIBEXT): acledit/acledit.spec $(WINEBUILD)
+	@cd acledit && $(MAKE) libacledit.$(IMPLIBEXT)
+
 activeds/libactiveds.$(IMPLIBEXT): activeds/activeds.spec $(WINEBUILD)
 	@cd activeds && $(MAKE) libactiveds.$(IMPLIBEXT)
 
diff --git a/dlls/acledit/Makefile.in b/dlls/acledit/Makefile.in
new file mode 100644
index 0000000..83565b7
--- /dev/null
+++ b/dlls/acledit/Makefile.in
@@ -0,0 +1,14 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = acledit.dll
+IMPORTLIB = libacledit.$(IMPLIBEXT)
+IMPORTS   = kernel32
+
+C_SRCS = \
+	main.c
+
+ at MAKE_DLL_RULES@
+
+ at DEPENDENCIES@  # everything below this line is overwritten by make depend
diff --git a/dlls/acledit/acledit.spec b/dlls/acledit/acledit.spec
new file mode 100644
index 0000000..9448623
--- /dev/null
+++ b/dlls/acledit/acledit.spec
@@ -0,0 +1,8 @@
+#4 stdcall DllMain
+1 stub EditAuditInfo
+2 stub EditOwnerInfo
+3 stub EditPermissionInfo
+5 stub FMExtensionProcW
+6 stub SedDiscretionaryAclEditor
+7 stub SedSystemAclEditor
+8 stub SedTakeOwnership
diff --git a/dlls/acledit/main.c b/dlls/acledit/main.c
new file mode 100644
index 0000000..b73a8e3
--- /dev/null
+++ b/dlls/acledit/main.c
@@ -0,0 +1,52 @@
+/*
+ * Implementation of the AclEdit Interface
+ *
+ * Copyright 2006 Eric Pouech
+ *
+ * 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
+ */
+
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "winreg.h"
+#include "winver.h"
+#include "winnls.h"
+
+#include "wine/unicode.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(acledit);
+
+/*****************************************************
+ * DllMain
+ */
+BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
+{
+    TRACE("(%p, %d, %p)\n", hinstDLL, fdwReason, lpvReserved);
+
+    switch (fdwReason)
+    {
+    case DLL_WINE_PREATTACH:
+        return FALSE;  /* prefer native version */
+    case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls( hinstDLL );
+        break;
+    }
+    return TRUE;
+}
+


More information about the wine-devel mailing list