Rolled in various changes from others
[reactos.git] / reactos / lib / advapi32 / token / token.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * FILE: lib/advapi32/token/token.c
5 * PURPOSE: Registry functions
6 * PROGRAMMER: Ariadne ( ariadne@xs4all.nl)
7 * UPDATE HISTORY:
8 * Created 01/11/98
9 */
10 WINBOOL
11 STDCALL
12 AdjustTokenGroups (
13 HANDLE TokenHandle,
14 WINBOOL ResetToDefault,
15 PTOKEN_GROUPS NewState,
16 DWORD BufferLength,
17 PTOKEN_GROUPS PreviousState,
18 PDWORD ReturnLength
19 )
20 {
21 NTSTATUS errCode;
22 errCode = NtAdjustGroupsToken(TokenHandle,ResetToDefault,NewState,
23 BufferLength, PreviousState, ReturnLength );
24 if ( !NT_SUCCESS(errCode) ) {
25 SetLastError(RtlNtStatusToDosError(errCode));
26 return FALSE;
27 }
28 return TRUE;
29 }
30
31 WINBOOL
32 STDCALL
33 AdjustTokenPrivileges (
34 HANDLE TokenHandle,
35 WINBOOL DisableAllPrivileges,
36 PTOKEN_PRIVILEGES NewState,
37 DWORD BufferLength,
38 PTOKEN_PRIVILEGES PreviousState,
39 PDWORD ReturnLength
40 )
41 { NTSTATUS errCode;
42 errCode = NtAdjustPrivilegesToken(TokenHandle,ResetToDefault,NewState,
43 BufferLength, PreviousState, ReturnLength );
44 if ( !NT_SUCCESS(errCode) ) {
45 SetLastError(RtlNtStatusToDosError(errCode));
46 return FALSE;
47 }
48 return TRUE;
49 }
50
51
52 WINBOOL
53 STDCALL
54 GetTokenInformation (
55 HANDLE TokenHandle,
56 TOKEN_INFORMATION_CLASS TokenInformationClass,
57 LPVOID TokenInformation,
58 DWORD TokenInformationLength,
59 PDWORD ReturnLength
60 )
61 {
62 NTSTATUS errCode;
63 errCode = NtQueryInformationToken(TokenHandle,TokenInformationClass,TokenInformation,
64 TokenInformationLength, ReturnLength);
65 if ( !NT_SUCCESS(errCode) ) {
66 SetLastError(RtlNtStatusToDosError(errCode));
67 return FALSE;
68 }
69 return TRUE;
70 }
71
72 WINBOOL
73 STDCALL
74 SetTokenInformation (
75 HANDLE TokenHandle,
76 TOKEN_INFORMATION_CLASS TokenInformationClass,
77 LPVOID TokenInformation,
78 DWORD TokenInformationLength
79 )
80 {
81 NTSTATUS errCode;
82 errCode = NtSetnformationToken(TokenHandle,TokenInformationClass,TokenInformation,
83 TokenInformationLength);
84 if ( !NT_SUCCESS(errCode) ) {
85 SetLastError(RtlNtStatusToDosError(errCode));
86 return FALSE;
87 }
88 return TRUE;
89 }
90
91 WINBOOL
92 STDCALL
93 AccessCheck (
94 PSECURITY_DESCRIPTOR pSecurityDescriptor,
95 HANDLE ClientToken,
96 DWORD DesiredAccess,
97 PGENERIC_MAPPING GenericMapping,
98 PPRIVILEGE_SET PrivilegeSet,
99 LPDWORD PrivilegeSetLength,
100 LPDWORD GrantedAccess,
101 LPBOOL AccessStatus
102 )
103 {
104 NTSTATUS errCode;
105 errCode = NtAccessCheck( pSecurityDescriptor,
106 ClientToken,
107 DesiredAccess,
108 GenericMapping,
109 PrivilegeSet,
110 PrivilegeSetLength,
111 GrantedAccess,
112 AccessStatus);
113 if ( !NT_SUCCESS(errCode) ) {
114 SetLastError(RtlNtStatusToDosError(errCode));
115 return FALSE;
116 }
117 return TRUE;
118 }
119
120
121
122 WINBOOL
123 STDCALL
124 OpenProcessToken (
125 HANDLE ProcessHandle,
126 DWORD DesiredAccess,
127 PHANDLE TokenHandle
128 )
129 {
130 NTSTATUS errCode;
131 errCode = NtOpenProcessToken(ProcessHandle,DesiredAccess,TokenHandle);
132 if ( !NT_SUCCESS(errCode) ) {
133 SetLastError(RtlNtStatusToDosError(errCode));
134 return FALSE;
135 }
136 return TRUE;
137 }
138
139
140
141 WINBOOL
142 STDCALL
143 OpenThreadToken (
144 HANDLE ThreadHandle,
145 DWORD DesiredAccess,
146 WINBOOL OpenAsSelf,
147 PHANDLE TokenHandle
148 )
149 {
150 NTSTATUS errCode;
151 errCode = NtOpenThreadToken(ThreadHandle,DesiredAccess,OpenAsSelf,TokenHandle);
152 if ( !NT_SUCCESS(errCode) ) {
153 SetLastError(RtlNtStatusToDosError(errCode));
154 return FALSE;
155 }
156 return TRUE;
157 }
158
159