Module: wine Branch: master Commit: 439b852dcac6856160a7bd451b2edfb96676b7f4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=439b852dcac6856160a7bd451b...
Author: Detlef Riekenberg wine.dev@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;