kernel32/tests: DuplicateTokenEx not present on all platforms

Detlef Riekenberg wine.dev at web.de
Fri Mar 16 16:37:46 CDT 2007


kernel32/tests: DuplicateTokenEx not present on all platforms


-- 
 
By by ... Detlef

-------------- next part --------------
>From 41d5b605c84f0c1a96b5a65a28866a7150b4f40f Mon Sep 17 00:00:00 2001
From: Detlef Riekenberg <wine.dev at web.de>
Date: Fri, 16 Mar 2007 22:35:45 +0100
Subject: [PATCH] kernel32/tests: DuplicateTokenEx 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 PIPENAME "\\\\.\\PiPe\\tests_pip
 #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(D
     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;
-- 
1.4.1



More information about the wine-patches mailing list