3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS system libraries
5 * FILE: lib/advapi32/token/privilege.c
6 * PURPOSE: advapi32.dll token's privilege handling
7 * PROGRAMMER: E.Aliberti
12 #include <ddk/ntddk.h>
15 /**********************************************************************
16 * LookupPrivilegeValueA EXPORTED
17 * LookupPrivilegeValueW EXPORTED
21 BOOL STDCALL LookupPrivilegeValueA (
28 DWORD le = ERROR_SUCCESS;
30 ANSI_STRING SystemNameA;
31 UNICODE_STRING SystemNameW;
35 HANDLE ProcessHeap = GetProcessHeap ();
39 if (NULL != lpSystemName)
45 RtlAnsiStringToUnicodeString (
51 /* Check the privilege name is not NULL */
58 RtlAnsiStringToUnicodeString (
66 SetLastError (ERROR_INVALID_PARAMETER);
70 * Forward the call to the UNICODE version
73 if (FALSE == (rv = LookupPrivilegeValueW (
74 (lpSystemName ? SystemNameW.Buffer : NULL),
84 if (NULL != lpSystemName)
99 * Set the last error, if any reported by
102 if (ERROR_SUCCESS != le)
110 BOOL STDCALL LookupPrivilegeValueW (
111 LPCWSTR lpSystemName,
116 SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
121 /**********************************************************************
122 * LookupPrivilegeDisplayNameA EXPORTED
123 * LookupPrivilegeDisplayNameW EXPORTED
127 BOOL STDCALL LookupPrivilegeDisplayNameA (
131 LPDWORD cbDisplayName,
135 SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
143 BOOL STDCALL LookupPrivilegeDisplayNameW (
144 LPCWSTR lpSystemName,
146 LPWSTR lpDisplayName,
147 LPDWORD cbDisplayName,
151 SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
156 /**********************************************************************
157 * LookupPrivilegeNameA EXPORTED
158 * LookupPrivilegeNameW EXPORTED
162 BOOL STDCALL LookupPrivilegeNameA (
169 SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
176 BOOL STDCALL LookupPrivilegeNameW (
177 LPCWSTR lpSystemName,
183 SetLastError (ERROR_CALL_NOT_IMPLEMENTED);
188 /**********************************************************************
189 * PrivilegeCheck EXPORTED
194 PrivilegeCheck (HANDLE ClientToken,
195 PPRIVILEGE_SET RequiredPrivileges,
201 Status = NtPrivilegeCheck (ClientToken,
204 if (!NT_SUCCESS (Status))
206 SetLastError (RtlNtStatusToDosError (Status));
210 *pfResult = (BOOL) Result;