Detlef Riekenberg : kernel32/tests: DuplicateTokenEx is not present on all platforms.

Alexandre Julliard julliard at wine.codeweavers.com
Sat Mar 17 14:35:21 CDT 2007


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

Author: Detlef Riekenberg <wine.dev at web.de>
Date:   Fri Mar 16 22:37:46 2007 +0100

kernel32/tests: DuplicateTokenEx is not present on all platforms.

---

 dlls/kernel32/tests/pipe.c |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/dlls/kernel32/tests/pipe.c b/dlls/kernel32/tests/pipe.c
index 2356a96..0cbcafc 100644
--- a/dlls/kernel32/tests/pipe.c
+++ b/dlls/kernel32/tests/pipe.c
@@ -36,6 +36,9 @@
 #define NB_SERVER_LOOPS 8
 
 static HANDLE alarm_event;
+static BOOL (WINAPI *pDuplicateTokenEx)(HANDLE,DWORD,LPSECURITY_ATTRIBUTES,
+                                        SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
+
 
 static void test_CreateNamedPipe(int pipemode)
 {
@@ -907,7 +910,7 @@ static HANDLE make_impersonation_token(DWORD Access, SECURITY_IMPERSONATION_LEVE
     ret = OpenProcessToken(GetCurrentProcess(), TOKEN_DUPLICATE, &ProcessToken);
     ok(ret, "OpenProcessToken failed with error %d\n", GetLastError());
 
-    ret = DuplicateTokenEx(ProcessToken, Access, NULL, ImpersonationLevel, TokenImpersonation, &Token);
+    ret = pDuplicateTokenEx(ProcessToken, Access, NULL, ImpersonationLevel, TokenImpersonation, &Token);
     ok(ret, "DuplicateToken failed with error %d\n", GetLastError());
 
     CloseHandle(ProcessToken);
@@ -1196,6 +1199,11 @@ static void test_impersonation(void)
     HANDLE hProcessToken;
     BOOL ret;
 
+    if( !pDuplicateTokenEx ) {
+        skip("DuplicateTokenEx not found\n");
+        return;
+    }
+
     ret = OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hProcessToken);
     if (!ret)
     {
@@ -1246,6 +1254,11 @@ static void test_impersonation(void)
 
 START_TEST(pipe)
 {
+    HMODULE hmod;
+
+    hmod = GetModuleHandle("advapi32.dll");
+    pDuplicateTokenEx = (void *) GetProcAddress(hmod, "DuplicateTokenEx");
+
     trace("test 1 of 7:\n");
     if (test_DisconnectNamedPipe())
         return;




More information about the wine-cvs mailing list