[PATCH 2/2] ntdll: Add a stub for TokenElevation in NtQueryInformationToken

Detlef Riekenberg wine.dev at web.de
Sun Aug 22 04:32:46 CDT 2010


This allow the GameExplorerManager to start

--
Detlef Riekenberg
---
 dlls/ntdll/nt.c |   60 ++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 42 insertions(+), 18 deletions(-)

diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index a2b1023..8355e31 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -232,6 +232,38 @@ NTSTATUS WINAPI NtAdjustPrivilegesToken(
     return ret;
 }
 
+static ULONG informationtoken_len [] = {0,
+  0,    /* TokenUser */
+  0,    /* TokenGroups */
+  0,    /* TokenPrivileges */
+  0,    /* TokenOwner */
+  0,    /* TokenPrimaryGroup */
+  0,    /* TokenDefaultDacl */
+  sizeof(TOKEN_SOURCE), /* TokenSource */
+  sizeof(TOKEN_TYPE),  /* TokenType */
+  sizeof(SECURITY_IMPERSONATION_LEVEL), /* TokenImpersonationLevel */
+  sizeof(TOKEN_STATISTICS), /* TokenStatistics */
+  0,    /* TokenRestrictedSids */
+  0,    /* TokenSessionId */
+  0,    /* TokenGroupsAndPrivileges */
+  0,    /* TokenSessionReference */
+  0,    /* TokenSandBoxInert */
+  0,    /* TokenAuditPolicy */
+  0,    /* TokenOrigin */
+  0,    /* TokenElevationType */
+  0,    /* TokenLinkedToken */
+  sizeof(DWORD), /* TokenElevation */
+  0,    /* TokenHasRestrictions */
+  0,    /* TokenAccessInformation */
+  0,    /* TokenVirtualizationAllowed */
+  0,    /* TokenVirtualizationEnabled */
+  0,    /* TokenIntegrityLevel */
+  0,    /* TokenUIAccess */
+  0,    /* TokenMandatoryPolicy */
+  0     /* TokenLogonSid */
+};
+
+
 /******************************************************************************
 *  NtQueryInformationToken		[NTDLL.@]
 *  ZwQueryInformationToken		[NTDLL.@]
@@ -249,29 +281,14 @@ NTSTATUS WINAPI NtQueryInformationToken(
 	ULONG tokeninfolength,
 	PULONG retlen )
 {
-    ULONG len;
+    ULONG len = 0;
     NTSTATUS status = STATUS_SUCCESS;
 
     TRACE("(%p,%d,%p,%d,%p)\n",
           token,tokeninfoclass,tokeninfo,tokeninfolength,retlen);
 
-    switch (tokeninfoclass)
-    {
-    case TokenSource:
-        len = sizeof(TOKEN_SOURCE);
-        break;
-    case TokenType:
-        len = sizeof (TOKEN_TYPE);
-        break;
-    case TokenImpersonationLevel:
-        len = sizeof(SECURITY_IMPERSONATION_LEVEL);
-        break;
-    case TokenStatistics:
-        len = sizeof(TOKEN_STATISTICS);
-        break;
-    default:
-        len = 0;
-    }
+    if (tokeninfoclass < MaxTokenInfoClass)
+        len = informationtoken_len[tokeninfoclass];
 
     if (retlen) *retlen = len;
 
@@ -489,6 +506,13 @@ NTSTATUS WINAPI NtQueryInformationToken(
         }
         SERVER_END_REQ;
         break;
+    case TokenElevation:
+        {
+            TOKEN_ELEVATION *elevation = tokeninfo;
+            FIXME("QueryInformationToken( ..., TokenElevation, ...) semi-stub\n");
+            elevation->TokenIsElevated = TRUE;
+        }
+        break;
     default:
         {
             ERR("Unhandled Token Information class %d!\n", tokeninfoclass);
-- 
1.7.0.4




More information about the wine-patches mailing list