43 *PrivilegeState =
NULL;
67 State->NewPrivileges->PrivilegeCount = 1;
83 if (!
State->OldPrivileges)
104 *PrivilegeState =
State;
131 State->OldPrivileges,
161 InputLength =
Input->Length;
169 while (
Length < InputLength)
171 if (*
p >
L' ')
break;
187 while (
Length < InputLength)
189 if (*pp <=
L' ')
break;
196 while (
Length < InputLength)
198 if (*pp >
L' ')
break;
254 sizeof(
L"\\system32;");
255 RtlInitEmptyUnicodeString(&FullPathString,
258 if (FullPathString.
Buffer)
270 CmdLineCopy = *CommandLine;
307 RtlInitEmptyUnicodeString(&PathString,
328 RtlInitEmptyUnicodeString(&PathString,
346 DPRINT1(
"SMSS: %wZ environment variable not defined.\n", &EnvString);
390 DPRINT1(
"SMSS: Unable to translate %ws into an NT File Name\n",
400 if (FilePart <= PathBuffer)
424 PVOID BootStatusDataHandle;
428 *ShutdownOkay =
FALSE;
490 sizeof(ShutdownOkay),
#define STATUS_PRIVILEGE_NOT_HELD
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define NT_SUCCESS(StatCode)
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
NTSYSAPI ULONG NTAPI RtlDosSearchPath_U(_In_ PCWSTR Path, _In_ PCWSTR FileName, _In_ PCWSTR Extension, _In_ ULONG BufferSize, _Out_ PWSTR Buffer, _Out_ PWSTR *PartName)
_In_ BOOLEAN _In_ USHORT Directory
NTSYSAPI NTSTATUS NTAPI RtlQueryEnvironmentVariable_U(_In_opt_ PWSTR Environment, _In_ PCUNICODE_STRING Name, _Out_ PUNICODE_STRING Value)
NTSYSAPI BOOLEAN NTAPI RtlDosPathNameToNtPathName_U(_In_opt_z_ PCWSTR DosPathName, _Out_ PUNICODE_STRING NtPathName, _Out_opt_ PCWSTR *NtFileNamePart, _Out_opt_ PRTL_RELATIVE_NAME_U DirectoryInfo)
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PUNICODE_STRING Source)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
#define NtCurrentProcess()
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
_In_ ULONG _In_ ULONG _In_ ULONG Length
NTSTATUS NTAPI NtOpenProcessToken(IN HANDLE ProcessHandle, IN ACCESS_MASK DesiredAccess, OUT PHANDLE TokenHandle)
#define STATUS_NOT_ALL_ASSIGNED
#define STATUS_OBJECT_PATH_INVALID
NTSTRSAFEAPI RtlStringCbCopyW(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cbDest, _In_ NTSTRSAFE_PCWSTR pszSrc)
NTSTATUS NTAPI RtlLockBootStatusData(_Out_ PHANDLE FileHandle)
NTSTATUS NTAPI RtlGetSetBootStatusData(_In_ HANDLE FileHandle, _In_ BOOLEAN Read, _In_ RTL_BSD_ITEM_TYPE DataClass, _In_ PVOID Buffer, _In_ ULONG BufferSize, _Out_opt_ PULONG ReturnLength)
NTSTATUS NTAPI RtlUnlockBootStatusData(_In_ HANDLE FileHandle)
#define STATUS_BUFFER_TOO_SMALL
UNICODE_STRING SmpDefaultLibPath
PWCHAR SmpDefaultEnvironment
UNICODE_STRING SmpSystemRoot
NTSTATUS NTAPI SmpParseToken(IN PUNICODE_STRING Input, IN BOOLEAN SecondPass, OUT PUNICODE_STRING Token)
UNICODE_STRING SmpAutoChkKeyword
struct _SMP_PRIVILEGE_STATE * PSMP_PRIVILEGE_STATE
VOID NTAPI SmpReleasePrivilege(IN PVOID PrivState)
NTSTATUS NTAPI SmpParseCommandLine(IN PUNICODE_STRING CommandLine, OUT PULONG Flags, OUT PUNICODE_STRING FileName, OUT PUNICODE_STRING Directory, OUT PUNICODE_STRING Arguments)
UNICODE_STRING SmpDebugKeyword
struct _SMP_PRIVILEGE_STATE SMP_PRIVILEGE_STATE
NTSTATUS NTAPI SmpAcquirePrivilege(IN ULONG Privilege, OUT PVOID *PrivilegeState)
BOOLEAN NTAPI SmpSaveAndClearBootStatusData(OUT PBOOLEAN BootOkay, OUT PBOOLEAN ShutdownOkay)
UNICODE_STRING SmpASyncKeyword
VOID NTAPI SmpRestoreBootStatusData(IN BOOLEAN BootOkay, IN BOOLEAN ShutdownOkay)
int TokenLength(const char *pc)
TOKEN_PRIVILEGES NewBuffer
PTOKEN_PRIVILEGES NewPrivileges
PTOKEN_PRIVILEGES OldPrivileges
_Must_inspect_result_ __kernel_entry NTSTATUS NTAPI NtAdjustPrivilegesToken(_In_ HANDLE TokenHandle, _In_ BOOLEAN DisableAllPrivileges, _In_opt_ PTOKEN_PRIVILEGES NewState, _In_ ULONG BufferLength, _Out_writes_bytes_to_opt_(BufferLength, *ReturnLength) PTOKEN_PRIVILEGES PreviousState, _When_(PreviousState!=NULL, _Out_) PULONG ReturnLength)
Removes a certain amount of privileges of a token based upon the request by the caller.
#define RtlCopyMemory(Destination, Source, Length)
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
#define STATUS_OBJECT_NAME_NOT_FOUND
BOOL Privilege(LPTSTR pszPrivilege, BOOL bEnable)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
_Must_inspect_result_ _In_ ULONG Flags
FORCEINLINE LUID NTAPI_INLINE RtlConvertUlongToLuid(_In_ ULONG Val)
#define TOKEN_ADJUST_PRIVILEGES
struct _TOKEN_PRIVILEGES * PTOKEN_PRIVILEGES
#define SE_PRIVILEGE_ENABLED