43 #define SMSS_CHECKPOINT(x, y) \ 45 SmpInitProgressByLine = __LINE__; \ 46 SmpInitReturnStatus = (y); \ 47 SmpInitLastCall = (x); \ 75 NextEntry = ListAddress->
Flink;
76 while (NextEntry != ListAddress)
96 NextEntry = NextEntry->
Flink;
178 RtlInitEmptyAnsiString(&AnsiValueString,
200 while (NextEntry !=
List)
209 NextEntry = NextEntry->
Flink;
311 DPRINT(
"Creating: %wZ directory\n", &SearchString);
318 DPRINT1(
"SMSS: Unable to create %wZ object directory - Status == %lx\n",
399 DPRINT(
"Excluded DLL: %S\n", DllName);
406 DllName +=
wcslen(DllName) + 1;
495 DPRINT(
"Setting %wZ = %wZ\n", &ValueString, &DataString);
499 DPRINT1(
"SMSS: 'SET %wZ = %wZ' failed - Status == %lx\n",
500 &ValueString, &DataString,
Status);
557 while (*SubsystemName)
560 DPRINT(
"Found subsystem: %S\n", SubsystemName);
565 DPRINT1(
"SMSS: Invalid subsystem name - %ws\n", SubsystemName);
588 SubsystemName +=
wcslen(SubsystemName) + 1;
612 L"AllowProtectedRenames",
622 L"ObjectDirectories",
625 L"\\Windows\0\\RPC Control\0",
635 L"autocheck AutoChk.exe *\0",
652 L"PendingFileRenameOperations",
662 L"PendingFileRenameOperations2",
672 L"ExcludeFromKnownDlls",
682 L"Memory Management",
695 L"?:\\pagefile.sys\0",
810 DPRINT1(
"SMSS: Cannot open system setup key for reading: 0x%x\n",
Status);
826 DPRINT1(
"SMSS: Cannot query SystemPartition value (Type %lu, Status 0x%x)\n",
827 PartialInfo->Type,
Status);
833 (
PWCHAR)PartialInfo->Data,
834 PartialInfo->DataLength);
842 RtlInitEmptyUnicodeString(&
LinkTarget, LinkBuffer,
sizeof(LinkBuffer));
845 sizeof(DirInfoBuffer),
852 DPRINT1(
"SMSS: Cannot find drive letter for system partition\n");
861 (DirInfo->Name.Length == 2 *
sizeof(
WCHAR)) &&
862 (DirInfo->Name.Buffer[1] ==
L':'))
900 sizeof(DirInfoBuffer),
908 DPRINT1(
"SMSS: Cannot find drive letter for system partition\n");
914 L"\\Registry\\Machine\\Software\\Microsoft\\Windows\\CurrentVersion\\Setup");
923 DPRINT1(
"SMSS: Cannot open software setup key for writing: 0x%x\n",
929 wcsncpy(LinkBuffer, DirInfo->Name.Buffer, 2);
930 LinkBuffer[2] =
L'\\';
931 LinkBuffer[3] =
L'\0';
943 DPRINT1(
"SMSS: couldn't write BootDir value: 0x%x\n",
Status);
1020 0, 0, 0, 0, 0, 0, 0,
1043 0, 0, 0, 0, 0, 0, 0,
1054 0, 0, 0, 0, 0, 0, 0,
1058 RestrictedSid =
NULL;
1065 0, 0, 0, 0, 0, 0, 0,
1149 if (!ProtectionRequired)
goto Quickie;
1244 if (OwnerSid)
RtlFreeHeap(RtlGetProcessHeap(), 0, OwnerSid);
1247 if (SystemSid)
RtlFreeHeap(RtlGetProcessHeap(), 0, SystemSid);
1248 if (RestrictedSid)
RtlFreeHeap(RtlGetProcessHeap(), 0, RestrictedSid);
1276 DPRINT1(
"SMSS: Unable to open %wZ directory - Status == %lx\n",
1336 DPRINT1(
"SMSS: Unable to create %wZ => %wZ symbolic link object - Status == 0x%lx\n",
1363 PWCHAR DllName, DllValue;
1369 if (!
_stricmp(ImportName,
"ntdll.dll"))
return;
1373 RtlInitEmptyUnicodeString(&ImportUnicodeString,
Buffer,
sizeof(
Buffer));
1388 DllValue = ImportUnicodeString.
Buffer;
1413 USHORT ImageCharacteristics;
1416 DirFileHandle =
NULL;
1432 DPRINT1(
"SMSS: Unable to create %wZ directory - Status == %lx\n",
1441 DPRINT1(
"SMSS: Unable to to convert %wZ to an Nt path\n",
Path);
1461 DPRINT1(
"SMSS: Unable to open a handle to the KnownDll directory (%wZ)" 1462 "- Status == %lx\n",
1495 DPRINT1(
"SMSS: Unable to create %wZ symbolic link - Status == %lx\n",
1502 Status1 =
NtClose(LinkHandle);
1511 NextEntry = NextEntry->
Flink;
1544 &ImageCharacteristics);
1549 L"Verification of a KnownDLL failed.");
1550 ErrorParameters[0] = (
ULONG_PTR)&ErrorResponse;
1551 ErrorParameters[1] =
Status;
1559 L"Non-DLL file included in KnownDLL list.");
1560 ErrorParameters[0] = (
ULONG_PTR)&ErrorResponse;
1594 Status1 =
NtClose(SectionHandle);
1600 DPRINT1(
"SMSS: CreateSection for KnownDll %wZ failed - Status == %lx\n",
1618 Status1 =
NtClose(DirFileHandle);
1682 DPRINT1(
"SMSS: Unable to query system basic information - %x\n",
Status);
1689 sizeof(ProcessorInfo),
1694 DPRINT1(
"SMSS: Unable to query system processor information - %x\n",
Status);
1700 L"\\Registry\\Machine\\System\\CurrentControlSet\\" 1701 L"Control\\Session Manager\\Environment");
1727 DPRINT1(
"SMSS: Failed writing %wZ environment variable - %x\n",
1765 DPRINT1(
"SMSS: Failed writing %wZ environment variable - %x\n",
1783 DPRINT1(
"SMSS: Failed writing %wZ environment variable - %x\n",
1791 L"\\Registry\\Machine\\Hardware\\Description\\System\\" 1792 L"CentralProcessor\\0");
1812 sizeof(ValueBuffer),
1819 DPRINT1(
"SMSS: Unable to read %wZ\\%wZ (Type %lu, Status 0x%x)\n",
1827 (
PWCHAR)PartialInfo->Data,
1828 sizeof(ValueBuffer) -
1831 PartialInfo->DataLength,
1841 sizeof(ValueBuffer2),
1867 DPRINT1(
"SMSS: Failed writing %wZ environment variable - %x\n",
1909 DPRINT1(
"SMSS: Failed writing %wZ environment variable - %x\n",
1927 DPRINT1(
"SMSS: Failed writing %wZ environment variable - %x\n",
1935 L"\\Registry\\Machine\\System\\CurrentControlSet\\" 1936 L"Control\\Safeboot\\Option");
1951 sizeof(ValueBuffer),
1956 (PartialInfo->DataLength >=
sizeof(
ULONG)))
1960 switch (*(
PULONG)PartialInfo->Data)
1963 wcscpy(ValueBuffer,
L"MINIMAL");
1966 wcscpy(ValueBuffer,
L"NETWORK");
1969 wcscpy(ValueBuffer,
L"DSREPAIR");
1983 DPRINT1(
"SMSS: Failed writing %wZ environment variable - %x\n",
1991 DPRINT1(
"SMSS: Failed to query SAFEBOOT option (Type %lu, Status 0x%x)\n",
1992 PartialInfo->Type,
Status);
2026 DPRINT1(
"SMSS: FIXME: Handle SFC-protected file renames!\n");
2064 Length =
sizeof(DeleteInformation);
2118 DPRINT(
"\nSMSS: '%wZ' => '%wZ' failed - Status == %x, Possible readonly target\n",
2139 DPRINT1(
" SMSS: Open Existing file Failed - Status == %x\n",
2145 DPRINT(
" SMSS: Open Existing Success\n");
2157 DPRINT1(
" SMSS: Set To NORMAL Failed - Status == %x\n",
2163 DPRINT(
" SMSS: Set To NORMAL OK\n");
2172 DPRINT1(
" SMSS: Re-Rename Failed - Status == %x\n",
2178 DPRINT(
" SMSS: Re-Rename Worked OK\n");
2191 DPRINT1(
"SMSS: '%wZ' => '%wZ' failed - Status == %x\n",
2223 PVOID OriginalEnvironment;
2224 ULONG MuSessionId = 0;
2253 DPRINT1(
"SMSS: Unable to allocate default environment - Status == %X\n",
2261 L"\\Registry\\Machine\\System\\CurrentControlSet\\" 2262 L"Control\\MiniNT");
2281 L"\\Registry\\Machine\\System\\CurrentControlSet\\" 2282 L"Control\\Session Manager\\Environment");
2298 OriginalEnvironment =
NtCurrentPeb()->ProcessParameters->Environment;
2306 NtCurrentPeb()->ProcessParameters->Environment = OriginalEnvironment;
2310 DPRINT1(
"SMSS: RtlQueryRegistryValues failed - Status == %lx\n",
Status);
2320 DPRINT1(
"SMSS: Unable to initialize DosDevices configuration - Status == %lx\n",
2339 DPRINT1(
"SMSS: Unable to create %wZ object directory - Status == %lx\n",
2370 DPRINT1(
"SMSS: Unable to initialize KnownDll configuration - Status == %lx\n",
2416 ASSERT(MuSessionId == 0);
2430 ULONG HardErrorMode;
2437 SmpHeap = RtlGetProcessHeap();
2440 HardErrorMode =
TRUE;
2444 sizeof(HardErrorMode));
2524 DPRINT1(
"SMSS: Unable to create %wZ event - Status == %lx\n",
2525 &EventName, Status2);
HANDLE SmpDosDevicesObjectDirectory
#define CM_BOOT_FLAG_SMSS
#define STATUS_OBJECT_NAME_COLLISION
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
LIST_ENTRY SmpBootExecuteList
_Must_inspect_result_ typedef _In_ PVOID Unused
#define SECURITY_LOCAL_SYSTEM_RID
NTSYSAPI NTSTATUS NTAPI NtQuerySystemInformation(IN SYSTEM_INFORMATION_CLASS SystemInfoClass, OUT PVOID SystemInfoBuffer, IN ULONG SystemInfoBufferSize, OUT PULONG BytesReturned OPTIONAL)
SECURITY_DESCRIPTOR SmpPrimarySDBody
_In_ ULONG _In_ ULONG _In_ ULONG Length
NTSTATUS NTAPI NtCreateSection(OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN PLARGE_INTEGER MaximumSize OPTIONAL, IN ULONG SectionPageProtection OPTIONAL, IN ULONG AllocationAttributes, IN HANDLE FileHandle OPTIONAL)
NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID)
NTSTATUS NTAPI NtCreateSymbolicLinkObject(OUT PHANDLE LinkHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN PUNICODE_STRING LinkTarget)
#define OBJ_CASE_INSENSITIVE
#define SMSS_CHECKPOINT(x, y)
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
NTSTATUS NTAPI SmpSaveRegistryValue(IN PLIST_ENTRY ListAddress, IN PWSTR Name, IN PWCHAR Value, IN BOOLEAN Flags)
IN BOOLEAN OUT PSTR Buffer
PISECURITY_DESCRIPTOR SmpPrimarySecurityDescriptor
UNICODE_STRING SmpDefaultLibPath
NTSTATUS NTAPI SmpConfigureProtectionMode(IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext)
#define FILE_DIRECTORY_FILE
PISECURITY_DESCRIPTOR SmpApiPortSecurityDescriptor
NTSTATUS NTAPI NtOpenDirectoryObject(OUT PHANDLE DirectoryHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
LIST_ENTRY SmpExcludeKnownDllsList
#define RTL_QUERY_REGISTRY_TOPKEY
SECURITY_DESCRIPTOR SmpKnownDllsSDBody
HANDLE SmpWindowsSubSysProcess
#define STATUS_OBJECT_NAME_EXISTS
static SID_IDENTIFIER_AUTHORITY WorldAuthority
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
#define SE_RESTORE_PRIVILEGE
NTSTATUS NTAPI SmpConfigureKnownDlls(IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext)
NTSTATUS NTAPI NtCreateEvent(OUT PHANDLE EventHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN EVENT_TYPE EventType, IN BOOLEAN InitialState)
ULONG NTAPI SmpApiLoop(IN PVOID Parameter)
#define RTL_QUERY_REGISTRY_NOEXPAND
NTSTATUS NTAPI SmpConfigureEnvironment(IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext)
NTSYSAPI NTSTATUS NTAPI RtlAdjustPrivilege(_In_ ULONG Privilege, _In_ BOOLEAN NewValue, _In_ BOOLEAN ForThread, _Out_ PBOOLEAN OldValue)
LIST_ENTRY SmpDosDevicesList
LIST_ENTRY SmpPagingFileList
NTSTATUS NTAPI NtQuerySymbolicLinkObject(IN HANDLE LinkHandle, OUT PUNICODE_STRING LinkTarget, OUT PULONG ResultLength OPTIONAL)
NTSTATUS NTAPI NtMakeTemporaryObject(IN HANDLE ObjectHandle)
NTSYSAPI NTSTATUS NTAPI RtlGetAce(PACL Acl, ULONG AceIndex, PVOID *Ace)
NTSYSAPI NTSTATUS NTAPI RtlCreateSecurityDescriptor(_Out_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ ULONG Revision)
NTSTATUS NTAPI SmpInit(IN PUNICODE_STRING InitialCommand, OUT PHANDLE ProcessHandle)
WDF_EXTERN_C_START typedef _Must_inspect_result_ _In_opt_ PCUNICODE_STRING UnicodeString
_Must_inspect_result_ NTSTRSAFEAPI RtlStringCbLengthW(_In_reads_or_z_(cbMax/sizeof(wchar_t)) STRSAFE_LPCWSTR psz, _In_ _In_range_(1, NTSTRSAFE_MAX_CCH *sizeof(wchar_t)) size_t cbMax, _Out_opt_ _Deref_out_range_(<, cbMax - 1) size_t *pcbLength)
LIST_ENTRY NativeProcessList
#define RTL_REGISTRY_CONTROL
#define InsertTailList(ListHead, Entry)
NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL, DWORD, DWORD, PSID)
NTSTATUS NTAPI NtQueryDirectoryObject(IN HANDLE DirectoryHandle, OUT PVOID Buffer, IN ULONG BufferLength, IN BOOLEAN ReturnSingleEntry, IN BOOLEAN RestartScan, IN OUT PULONG Context, OUT PULONG ReturnLength OPTIONAL)
NTSYSAPI NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR, BOOLEAN, PACL, BOOLEAN)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG _Out_opt_ PULONG _Out_opt_ PULONG ValueType
NTSYSAPI NTSTATUS NTAPI RtlAllocateAndInitializeSid(IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, IN UCHAR SubAuthorityCount, IN ULONG SubAuthority0, IN ULONG SubAuthority1, IN ULONG SubAuthority2, IN ULONG SubAuthority3, IN ULONG SubAuthority4, IN ULONG SubAuthority5, IN ULONG SubAuthority6, IN ULONG SubAuthority7, OUT PSID *Sid)
#define SYMBOLIC_LINK_ALL_ACCESS
NTSTATUS NTAPI LdrVerifyImageMatchesChecksum(IN HANDLE FileHandle, IN PLDR_CALLBACK Callback, IN PVOID CallbackContext, OUT PUSHORT ImageCharacteristics)
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
#define FILE_WRITE_ATTRIBUTES
struct _FILE_RENAME_INFORMATION FILE_RENAME_INFORMATION
BOOLEAN RegPosixSingleInstance
NTSYSAPI NTSTATUS NTAPI RtlCreateAcl(PACL Acl, ULONG AclSize, ULONG AclRevision)
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
#define PROCESSOR_ARCHITECTURE_IA64
UNICODE_STRING SmpASyncKeyword
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
VOID NTAPI SmpPagingFileInitialize(VOID)
#define SECURITY_DESCRIPTOR_REVISION
_Inout_ PUNICODE_STRING LinkTarget
HANDLE SmpWindowsSubSysProcessId
#define SECTION_ALL_ACCESS
#define RTL_QUERY_REGISTRY_DELETE
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
PWCHAR SmpDefaultEnvironment
NTSTATUS NTAPI NtInitializeRegistry(IN USHORT Flag)
PISECURITY_DESCRIPTOR SmpLiberalSecurityDescriptor
WORD SECURITY_DESCRIPTOR_CONTROL
NTSTATUS NTAPI SmpConfigureAllowProtectedRenames(IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext)
NTSTATUS NTAPI SmpInitializeKnownDllPath(IN PUNICODE_STRING DllPath, IN PWCHAR Buffer, IN ULONG Length)
NTSTATUS NTAPI SmpConfigureExcludeKnownDlls(IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext)
NTSTRSAFEAPI RtlStringCbCopyNW(_Out_writes_bytes_(cbDest) NTSTRSAFE_PWSTR pszDest, _In_ size_t cbDest, _In_reads_bytes_(cbToCopy) STRSAFE_LPCWSTR pszSrc, _In_ size_t cbToCopy)
LIST_ENTRY SmpSubSystemsToLoad
_In_ PCWSTR _Inout_ _At_ QueryTable EntryContext
_Out_ _Inout_ POEM_STRING DestinationString
#define RTL_QUERY_REGISTRY_SUBKEY
NTSYSAPI NTSTATUS NTAPI RtlSetEnvironmentVariable(_In_z_ PWSTR *Environment, _In_ PUNICODE_STRING Name, _In_ PUNICODE_STRING Value)
FORCEINLINE PLIST_ENTRY RemoveHeadList(_Inout_ PLIST_ENTRY ListHead)
NTSYSAPI ULONG NTAPI RtlLengthSid(IN PSID Sid)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
_CRTIMP wchar_t *__cdecl _wcsupr(_Inout_z_ wchar_t *_String)
#define SECURITY_NT_AUTHORITY
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
#define SE_DACL_DEFAULTED
UNICODE_STRING SmpKnownDllPath
#define NtCurrentProcess()
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
NTSYSAPI NTSTATUS NTAPI NtDeleteValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName)
LIST_ENTRY SmpSetupExecuteList
#define CONTAINER_INHERIT_ACE
enum _FILE_INFORMATION_CLASS FILE_INFORMATION_CLASS
struct _LIST_ENTRY * Flink
NTSYSAPI NTSTATUS NTAPI NtOpenFile(OUT PHANDLE phFile, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG ShareMode, IN ULONG OpenMode)
NTSYSAPI NTSTATUS NTAPI NtQueryValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, IN PVOID KeyValueInformation, IN ULONG Length, IN PULONG ResultLength)
NTSTATUS NTAPI SmpCreateDynamicEnvironmentVariables(VOID)
struct _FILE_RENAME_INFORMATION * PFILE_RENAME_INFORMATION
#define FILE_LIST_DIRECTORY
_Must_inspect_result_ _In_ ULONG Flags
NTSTATUS NTAPI NtCreatePort(OUT PHANDLE PortHandle, IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG MaxConnectInfoLength, IN ULONG MaxDataLength, IN ULONG MaxPoolUsage)
#define SECURITY_BUILTIN_DOMAIN_RID
NTSTATUS NTAPI NtSetEvent(IN HANDLE EventHandle, OUT PLONG PreviousState OPTIONAL)
NTSTATUS NTAPI SmpProcessFileRenames(VOID)
NTSTATUS SmpInitReturnStatus
NTSYSAPI NTSTATUS NTAPI RtlInitializeCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
#define NT_SUCCESS(StatCode)
VOID NTAPI SmpTranslateSystemPartitionInformation(VOID)
#define SECURITY_WORLD_SID_AUTHORITY
NTSTRSAFEVAPI RtlStringCbPrintfW(_Out_writes_bytes_(cbDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cbDest, _In_ _Printf_format_string_ NTSTRSAFE_PCWSTR pszFormat,...)
_In_ GUID _In_ PVOID ValueData
NTSTATUS NTAPI SmpConfigureFileRenames(IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext)
LIST_ENTRY SmpFileRenameList
#define SECURITY_WORLD_RID
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
#define PROCESSOR_ARCHITECTURE_AMD64
static PPARTENTRY SystemPartition
#define SECURITY_CREATOR_OWNER_RID
UNICODE_STRING SmpDebugKeyword
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
#define FILE_ATTRIBUTE_NORMAL
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define FILE_SHARE_DELETE
PISECURITY_DESCRIPTOR SmpKnownDllsSecurityDescriptor
_Out_ _Inout_ POEM_STRING _In_ PCUNICODE_STRING SourceString
static SID_IDENTIFIER_AUTHORITY NtAuthority
ULONG RtlCompareUnicodeString(PUNICODE_STRING s1, PUNICODE_STRING s2, BOOLEAN UpCase)
_Must_inspect_result_ _In_ WDFCMRESLIST List
NTSTATUS NTAPI SmpCreatePagingFiles(VOID)
#define FILE_NON_DIRECTORY_FILE
NTSYSAPI NTSTATUS NTAPI RtlCreateUserThread(_In_ PVOID ThreadContext, _Out_ HANDLE *OutThreadHandle, _Reserved_ PVOID Reserved1, _Reserved_ PVOID Reserved2, _Reserved_ PVOID Reserved3, _Reserved_ PVOID Reserved4, _Reserved_ PVOID Reserved5, _Reserved_ PVOID Reserved6, _Reserved_ PVOID Reserved7, _Reserved_ PVOID Reserved8)
int _cdecl swprintf(const WCHAR *,...)
LIST_ENTRY SmpSessionListHead
NTSTATUS NTAPI SmpLoadSubSystemsForMuSession(IN PULONG MuSessionId, OUT PHANDLE ProcessId, IN PUNICODE_STRING InitialCommand)
NTSTATUS NTAPI SmpExecuteCommand(IN PUNICODE_STRING CommandLine, IN ULONG MuSessionId, OUT PHANDLE ProcessId, IN ULONG Flags)
NTSTATUS NTAPI SmpInitializeKnownDllsInternal(IN PUNICODE_STRING Directory, IN PUNICODE_STRING Path)
LIST_ENTRY SmpExecuteList
RTL_CRITICAL_SECTION SmpSessionListLock
struct _OBJECT_DIRECTORY_INFORMATION OBJECT_DIRECTORY_INFORMATION
NTSYSAPI NTSTATUS NTAPI RtlCreateEnvironment(_In_ BOOLEAN Inherit, _Out_ PWSTR *Environment)
#define PROCESSOR_ARCHITECTURE_INTEL
NTSTATUS NTAPI SmpConfigureMemoryMgmt(IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext)
struct _FileName FileName
UNICODE_STRING SmpSubsystemName
NTSTATUS NTAPI NtCreateDirectoryObject(OUT PHANDLE DirectoryHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
ULONG SmpInitProgressByLine
ULONG SmpAllowProtectedRenames
PRTL_UNICODE_STRING_BUFFER Path
RTL_QUERY_REGISTRY_TABLE SmpRegistryConfigurationTable[]
#define STATUS_INVALID_IMPORT_OF_NON_DLL
HANDLE SmpSessionsObjectDirectory
_CRTIMP wchar_t *__cdecl wcsncpy(wchar_t *_Dest, const wchar_t *_Source, size_t _Count)
NTSTATUS NTAPI NtSetInformationProcess(IN HANDLE ProcessHandle, IN PROCESSINFOCLASS ProcessInformationClass, IN PVOID ProcessInformation, IN ULONG ProcessInformationLength)
NTSTATUS NTAPI SmpInitializeKnownDlls(VOID)
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
struct _KEY_VALUE_PARTIAL_INFORMATION KEY_VALUE_PARTIAL_INFORMATION
static const char const char * DllPath
ULONG SmpNextSessionIdScanMode
#define InitializeListHead(ListHead)
#define DIRECTORY_ALL_ACCESS
NTSTATUS NTAPI SmpConfigureSubSystems(IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext)
#define FIELD_OFFSET(t, f)
#define STATUS_OBJECT_NAME_INVALID
static OUT PIO_STATUS_BLOCK IoStatusBlock
VOID NTAPI SmpProcessModuleImports(IN PVOID Unused, IN PCHAR ImportName)
NTSTATUS NTAPI SmpConfigureObjectDirectories(IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext)
#define SECURITY_RESTRICTED_CODE_RID
LIST_ENTRY SmpSubSystemsToDefer
NTSYSAPI NTSTATUS NTAPI NtSetValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN ULONG TitleIndex OPTIONAL, IN ULONG Type, IN PVOID Data, IN ULONG DataSize)
NTSYSAPI BOOLEAN NTAPI RtlPrefixUnicodeString(IN PUNICODE_STRING String1, IN PUNICODE_STRING String2, IN BOOLEAN CaseInSensitive)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
NTSTATUS NTAPI SmpTerminate(IN PULONG_PTR Parameters, IN ULONG ParameterMask, IN ULONG ParameterCount)
#define FILE_SYNCHRONOUS_IO_NONALERT
NTSYSAPI NTSTATUS NTAPI NtOpenKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
NTSTATUS NTAPI SmpConfigureDosDevices(IN PWSTR ValueName, IN ULONG ValueType, IN PVOID ValueData, IN ULONG ValueLength, IN PVOID Context, IN PVOID EntryContext)
SECURITY_DESCRIPTOR SmpLiberalSDBody
NTSTATUS NTAPI SmpCreateSecurityDescriptors(IN BOOLEAN InitialCall)
struct tagContext Context
PSMP_REGISTRY_VALUE NTAPI SmpFindRegistryValue(IN PLIST_ENTRY List, IN PWSTR ValueName)
SECURITY_DESCRIPTOR SmpApiPortSDBody
base for all directory entries
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
#define InitializeObjectAttributes(p, n, a, r, s)
NTSTATUS NTAPI NtOpenSymbolicLinkObject(OUT PHANDLE LinkHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
#define RtlCopyMemory(Destination, Source, Length)
LIST_ENTRY SmpSubSystemList
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
NTSTATUS NTAPI SmpInitializeDosDevices(VOID)
PWCHAR SmpDefaultLibPathBuffer
ULONG NTAPI RtlCreateTagHeap(_In_ HANDLE HeapHandle, _In_ ULONG Flags, _In_opt_ PWSTR TagName, _In_ PWSTR TagSubName)
_In_ FILTER_INFORMATION_CLASS InformationClass
_In_ HANDLE ProcessHandle
unsigned short MaximumLength
UNICODE_STRING SmpAutoChkKeyword
#define DOMAIN_ALIAS_RID_ADMINS
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
NTSTATUS NTAPI SmpCreatePagingFileDescriptor(IN PUNICODE_STRING PageFileToken)
#define OBJECT_INHERIT_ACE
LIST_ENTRY SmpKnownDllsList
base of all file and directory entries
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
NTSTATUS NTAPI SmpLoadDataFromRegistry(OUT PUNICODE_STRING InitialCommand)
NTSYSAPI NTSTATUS NTAPI NtSetInformationFile(IN HANDLE hFile, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN PVOID FileInformationBuffer, IN ULONG FileInformationBufferLength, IN FILE_INFORMATION_CLASS FileInfoClass)
RTL_CRITICAL_SECTION SmpKnownSubSysLock
#define SECURITY_CREATOR_SID_AUTHORITY
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)
LIST_ENTRY SmpKnownSubSysHead
IN PUNICODE_STRING PortName
_Out_ PHANDLE EventHandle
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG ValueLength