Lei Zhang : userenv: Initial implementation of CreateEnvironmentBlock.

Alexandre Julliard julliard at winehq.org
Wed Apr 30 06:57:32 CDT 2008


Module: wine
Branch: master
Commit: bca84d5467bc0242da027d24082871d8df3053fd
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=bca84d5467bc0242da027d24082871d8df3053fd

Author: Lei Zhang <thestig at google.com>
Date:   Tue Apr 29 18:19:05 2008 -0700

userenv: Initial implementation of CreateEnvironmentBlock.

---

 dlls/userenv/Makefile.in     |    2 +-
 dlls/userenv/tests/userenv.c |    4 ++--
 dlls/userenv/userenv_main.c  |   14 +++++++++++++-
 3 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/dlls/userenv/Makefile.in b/dlls/userenv/Makefile.in
index 946d210..07bba8f 100644
--- a/dlls/userenv/Makefile.in
+++ b/dlls/userenv/Makefile.in
@@ -3,7 +3,7 @@ TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = userenv.dll
-IMPORTS   = kernel32
+IMPORTS   = kernel32 ntdll
 IMPORTLIB = userenv
 
 C_SRCS = \
diff --git a/dlls/userenv/tests/userenv.c b/dlls/userenv/tests/userenv.c
index 9f9425a..c50b0a2 100644
--- a/dlls/userenv/tests/userenv.c
+++ b/dlls/userenv/tests/userenv.c
@@ -41,7 +41,7 @@ static void test_create_env(void)
     expect(FALSE, r);
 
     r = CreateEnvironmentBlock((LPVOID) &env, NULL, FALSE);
-    todo_wine expect(TRUE, r);
+    expect(TRUE, r);
 
     r = OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY|TOKEN_DUPLICATE, &htok);
     expect(TRUE, r);
@@ -50,7 +50,7 @@ static void test_create_env(void)
     expect(FALSE, r);
 
     r = CreateEnvironmentBlock((LPVOID) &env2, htok, FALSE);
-    todo_wine expect(TRUE, r);
+    expect(TRUE, r);
 }
 
 START_TEST(userenv)
diff --git a/dlls/userenv/userenv_main.c b/dlls/userenv/userenv_main.c
index 0efea5c..1eaaa71 100644
--- a/dlls/userenv/userenv_main.c
+++ b/dlls/userenv/userenv_main.c
@@ -20,9 +20,12 @@
 
 #include <stdarg.h>
 
+#include "ntstatus.h"
+#define WIN32_NO_STATUS
 #include "windef.h"
 #include "winbase.h"
 #include "winreg.h"
+#include "winternl.h"
 #include "userenv.h"
 
 #include "wine/debug.h"
@@ -49,7 +52,16 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 BOOL WINAPI CreateEnvironmentBlock( LPVOID* lpEnvironment,
                      HANDLE hToken, BOOL bInherit )
 {
-    FIXME("%p %p %d\n", lpEnvironment, hToken, bInherit );
+    NTSTATUS r;
+
+    TRACE("%p %p %d\n", lpEnvironment, hToken, bInherit );
+
+    if (!lpEnvironment)
+        return FALSE;
+
+    r = RtlCreateEnvironment(bInherit, (WCHAR **)lpEnvironment);
+    if (r == STATUS_SUCCESS)
+        return TRUE;
     return FALSE;
 }
 




More information about the wine-cvs mailing list