17 #define SXS_SUPPORT_FIXME 31 DPRINT(
"BasepNotifyCsrOfThread: Thread: %p, Handle %p\n",
42 sizeof(*CreateThreadRequest));
45 DPRINT1(
"Failed to tell CSRSS about new thread: %lx\n", ApiMessage.
Status);
95 RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME ActivationFrame;
98 ActivationFrame.Size =
sizeof(ActivationFrame);
102 if (ActivationContext == INVALID_ACTIVATION_CONTEXT)
177 ACTIVATION_CONTEXT_BASIC_INFORMATION ActCtxInfo;
182 DPRINT(
"CreateRemoteThread: hProcess: %p dwStackSize: %lu lpStartAddress" 183 ": %p lpParameter: %p, dwCreationFlags: %lx\n",
hProcess,
184 dwStackSize, lpStartAddress,
lpParameter, dwCreationFlags);
241 sizeof(ThreadBasicInfo),
246 DPRINT1(
"SXS: %s - Failing thread create because " 247 "NtQueryInformationThread() failed with status %08lx\n",
257 DPRINT1(
"SXS: %s - Failing thread create because " 258 "RtlAllocateActivationContextStack() failed with status %08lx\n",
271 ActivationContextBasicInformation,
278 DPRINT1(
"SXS: %s - Failing thread create because " 279 "RtlQueryInformationActivationContext() failed with status %08lx\n",
285 if ((ActCtxInfo.hActCtx) && !(ActCtxInfo.dwFlags & 1))
295 DPRINT1(
"SXS: %s - Failing thread create because " 296 "RtlActivateActivationContextEx() failed with status %08lx\n",
320 "CsrCreateRemoteThread");
335 if (ActivationContextStack)
568 ULONG PreviousResumeCount;
578 return PreviousResumeCount;
643 ULONG PreviousSuspendCount;
653 return PreviousSuspendCount;
668 AffinityMask = (
KAFFINITY)dwThreadAffinityMask;
702 LONG Prio = nPriority;
804 IN BOOL bDisablePriorityBoost)
834 DESCRIPTOR_TABLE_ENTRY DescriptionTableEntry;
838 DescriptionTableEntry.Selector = dwSelector;
841 &DescriptionTableEntry,
842 sizeof(DESCRIPTOR_TABLE_ENTRY),
852 *lpSelectorEntry = DescriptionTableEntry.Descriptor;
855 DPRINT1(
"Calling GetThreadSelectorEntry!\n");
952 ACTIVATION_CONTEXT_BASIC_INFORMATION ActCtxInfo;
959 ActivationContextBasicInformation,
966 DbgPrint(
"SXS: %s failing because RtlQueryInformationActivationContext()" 977 (ActCtxInfo.dwFlags & 1) ?
978 INVALID_ACTIVATION_CONTEXT : ActCtxInfo.hActCtx);
997 ULONG GuaranteedStackBytes;
1000 if (!StackSizeInBytes)
1012 *StackSizeInBytes = GuaranteedStackBytes;
1050 *lpIOIsPending = IoPending ?
TRUE :
FALSE;
1101 if (
Index != 0xFFFFFFFF)
1111 if (
Index != 0xFFFFFFFF)
PRTL_BITMAP TlsExpansionBitmap
LANGID WINAPI SetThreadUILanguage(IN LANGID LangId)
#define ERROR_INVALID_PARAMETER
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
IN CINT OUT PVOID IN ULONG OUT PULONG ReturnLength
NTSTATUS WINAPI BaseCreateStack(_In_ HANDLE hProcess, _In_opt_ SIZE_T StackCommit, _In_opt_ SIZE_T StackReserve, _Out_ PINITIAL_TEB InitialTeb)
BASE_CREATE_THREAD CreateThreadRequest
VOID WINAPI BaseInitializeContext(IN PCONTEXT Context, IN PVOID Parameter, IN PVOID StartAddress, IN PVOID StackAddress, IN ULONG ContextType)
BOOL NTAPI GetThreadTimes(IN HANDLE hThread, OUT LPFILETIME lpCreationTime, OUT LPFILETIME lpExitTime, OUT LPFILETIME lpKernelTime, OUT LPFILETIME lpUserTime)
#define THREAD_ALL_ACCESS
BOOL WINAPI SwitchToThread(VOID)
DWORD(WINAPI * LPTHREAD_START_ROUTINE)(LPVOID)
BOOL WINAPI SetThreadContext(IN HANDLE hThread, IN CONST CONTEXT *lpContext)
NTSTATUS NTAPI NtOpenThread(OUT PHANDLE ThreadHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN PCLIENT_ID ClientId OPTIONAL)
PPEB ProcessEnvironmentBlock
_In_ CDROM_SCAN_FOR_SPECIAL_INFO _In_ PCDROM_SCAN_FOR_SPECIAL_HANDLER Function
BOOL WINAPI TerminateThread(IN HANDLE hThread, IN DWORD dwExitCode)
BOOL WINAPI TlsSetValue(IN DWORD Index, IN LPVOID Value)
struct _FILETIME * LPFILETIME
#define STATUS_INVALID_PARAMETER
#define STATUS_NO_YIELD_PERFORMED
#define TLS_EXPANSION_SLOTS
NTSTATUS NTAPI CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage, IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer OPTIONAL, IN CSR_API_NUMBER ApiNumber, IN ULONG DataLength)
#define THREAD_PRIORITY_ERROR_RETURN
#define ERROR_INVALID_HANDLE
#define NtCurrentThread()
NTSYSAPI NTSTATUS NTAPI RtlQueueWorkItem(_In_ WORKERCALLBACKFUNC Function, _In_opt_ PVOID Context, _In_ ULONG Flags)
static HANDLE ULONG_PTR dwData
VOID WINAPI ExitProcess(IN UINT uExitCode)
_In_ BOOL _In_ HANDLE hProcess
VOID NTAPI RtlReleasePebLock(VOID)
DWORD WINAPI GetThreadId(IN HANDLE Thread)
struct _ThreadInfo ThreadInfo
BOOL WINAPI GetThreadIOPendingFlag(IN HANDLE hThread, OUT PBOOL lpIOIsPending)
NTSTATUS NTAPI NtSuspendThread(IN HANDLE ThreadHandle, OUT PULONG PreviousSuspendCount OPTIONAL)
#define RTL_ACTIVATE_ACTIVATION_CONTEXT_EX_FLAG_RELEASE_ON_STACK_DEALLOCATION
NTSTATUS NTAPI NtQueueApcThread(IN HANDLE ThreadHandle, IN PKNORMAL_ROUTINE ApcRoutine, IN PVOID NormalContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
NTSYSAPI NTSTATUS WINAPI RtlQueryInformationActivationContext(ULONG, HANDLE, PVOID, ULONG, PVOID, SIZE_T, SIZE_T *)
BOOL WINAPI GetExitCodeThread(IN HANDLE hThread, OUT LPDWORD lpExitCode)
BOOL WINAPI GetThreadContext(IN HANDLE hThread, OUT LPCONTEXT lpContext)
union _BASE_API_MESSAGE::@3488 Data
DWORD WINAPI QueueUserAPC(IN PAPCFUNC pfnAPC, IN HANDLE hThread, IN ULONG_PTR dwData)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
_In_ WDFREQUEST _In_ NTSTATUS _In_ CCHAR PriorityBoost
static BOOL bInheritHandle
BOOL NTAPI SetThreadPriorityBoost(IN HANDLE hThread, IN BOOL bDisablePriorityBoost)
LONG WINAPI UnhandledExceptionFilter(IN PEXCEPTION_POINTERS ExceptionInfo)
#define _SEH2_GetExceptionInformation()
#define EXCEPTION_EXECUTE_HANDLER
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
DWORD_PTR WINAPI SetThreadAffinityMask(IN HANDLE hThread, IN DWORD_PTR dwThreadAffinityMask)
NTSYSAPI ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP, ULONG, ULONG)
BOOL WINAPI GetThreadPriorityBoost(IN HANDLE hThread, OUT PBOOL pDisablePriorityBoost)
#define RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_FORMAT_WHISTLER
VOID WINAPI ExitThread(IN DWORD uExitCode)
DWORD BaseSetLastNTError(IN NTSTATUS Status)
NTSTATUS NTAPI NtSetInformationThread(IN HANDLE ThreadHandle, IN THREADINFOCLASS ThreadInformationClass, IN PVOID ThreadInformation, IN ULONG ThreadInformationLength)
DWORD WINAPI GetCurrentThreadId(VOID)
BOOL WINAPI SetThreadPriority(IN HANDLE hThread, IN int nPriority)
#define NtCurrentProcess()
#define CSR_CREATE_API_NUMBER(ServerId, ApiId)
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
#define DECLSPEC_HOTPATCH
ULONG GuaranteedStackBytes
NTSTATUS NtTerminateThread(IN HANDLE ThreadHandle OPTIONAL, IN NTSTATUS ExitStatus)
NTSTATUS NTAPI NtResumeThread(IN HANDLE ThreadHandle, OUT PULONG SuspendCount OPTIONAL)
_Must_inspect_result_ _In_ ULONG Flags
_Out_ PCLIENT_ID ClientId
BOOLEAN BaseRunningInServerProcess
#define BASESRV_SERVERDLL_INDEX
BOOL WINAPI TlsFree(IN DWORD Index)
#define NT_SUCCESS(StatCode)
VOID NTAPI BaseDispatchApc(IN PAPCFUNC ApcRoutine, IN PVOID Data, IN PACTIVATION_CONTEXT ActivationContext)
NTSTATUS NTAPI NtYieldExecution(VOID)
_In_ WDFCOLLECTION _In_ ULONG Index
#define STACK_SIZE_PARAM_IS_A_RESERVATION
_In_opt_ PVOID _Out_ PLARGE_INTEGER Cookie
BOOL WINAPI SetThreadStackGuarantee(IN OUT PULONG StackSizeInBytes)
VOID WINAPI BaseFreeThreadStack(_In_ HANDLE hProcess, _In_ PINITIAL_TEB InitialTeb)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
PRTL_ACTIVATION_CONTEXT_STACK_FRAME FASTCALL RtlDeactivateActivationContextUnsafeFast(IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame)
DWORD WINAPI SetThreadIdealProcessor(IN HANDLE hThread, IN DWORD dwIdealProcessor)
NTSTATUS NTAPI NtQueryInformationThread(IN HANDLE ThreadHandle, IN THREADINFOCLASS ThreadInformationClass, OUT PVOID ThreadInformation, IN ULONG ThreadInformationLength, OUT PULONG ReturnLength OPTIONAL)
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE ApcRoutine
BOOL WINAPI QueueUserWorkItem(IN LPTHREAD_START_ROUTINE Function, IN PVOID Context, IN ULONG Flags)
#define THREAD_PRIORITY_TIME_CRITICAL
NTSTATUS NTAPI CsrCreateRemoteThread(IN HANDLE hThread, IN PCLIENT_ID ClientId)
#define THREAD_PRIORITY_IDLE
DWORD WINAPI SuspendThread(IN HANDLE hThread)
HANDLE WINAPI OpenThread(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwThreadId)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
DWORD WINAPI TlsAlloc(VOID)
NTSYSAPI void WINAPI RtlReleaseActivationContext(HANDLE)
POBJECT_ATTRIBUTES WINAPI BaseFormatObjectAttributes(OUT POBJECT_ATTRIBUTES ObjectAttributes, IN PSECURITY_ATTRIBUTES SecurityAttributes OPTIONAL, IN PUNICODE_STRING ObjectName)
static NTSTATUS(WINAPI *pNtQueryInformationThread)(HANDLE
NTSTATUS NTAPI CsrNewThread(VOID)
NTSYSAPI void WINAPI RtlClearBits(PRTL_BITMAP, ULONG, ULONG)
IN PFCB IN PFILE_OBJECT FileObject IN ULONG AllocationSize
NTSTATUS WINAPI BasepNotifyCsrOfThread(IN HANDLE ThreadHandle, IN PCLIENT_ID ClientId)
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
DWORD WINAPI GetProcessIdOfThread(IN HANDLE Thread)
BOOL WINAPI GetThreadSelectorEntry(IN HANDLE hThread, IN DWORD dwSelector, OUT LPLDT_ENTRY lpSelectorEntry)
NTSTATUS NTAPI NtSetContextThread(IN HANDLE ThreadHandle, IN PCONTEXT ThreadContext)
NTSTATUS NTAPI NtCreateThread(OUT PHANDLE ThreadHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN HANDLE ProcessHandle, OUT PCLIENT_ID ClientId, IN PCONTEXT ThreadContext, IN PINITIAL_TEB InitialTeb, IN BOOLEAN CreateSuspended)
VOID NTAPI RtlAcquirePebLock(VOID)
#define RTL_QUERY_ACTIVATION_CONTEXT_FLAG_USE_ACTIVE_ACTIVATION_CONTEXT
NTSTATUS(NTAPI * PCSR_CREATE_REMOTE_THREAD)(IN HANDLE ThreadHandle, IN PCLIENT_ID ClientId)
LPVOID WINAPI TlsGetValue(IN DWORD Index)
PRTL_ACTIVATION_CONTEXT_STACK_FRAME FASTCALL RtlActivateActivationContextUnsafeFast(IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame, IN PVOID Context)
VOID(NTAPI * WORKERCALLBACKFUNC)(_In_ PVOID Context)
NTSTATUS NTAPI RtlActivateActivationContextEx(ULONG flags, PTEB tebAddress, HANDLE handle, PULONG_PTR cookie)
struct tagContext Context
NTSTATUS NTAPI RtlAllocateActivationContextStack(IN PACTIVATION_CONTEXT_STACK *Stack)
DWORD WINAPI ResumeThread(IN HANDLE hThread)
#define RtlZeroMemory(Destination, Length)
#define InitializeObjectAttributes(p, n, a, r, s)
#define GetProcAddress(x, y)
PVOID * TlsExpansionSlots
#define _SEH2_EXCEPT(...)
PVOID ActivationContextStackPointer
#define _SEH2_GetExceptionCode()
VOID(NTAPI * PKNORMAL_ROUTINE)(IN PVOID NormalContext OPTIONAL, IN PVOID SystemArgument1 OPTIONAL, IN PVOID SystemArgument2 OPTIONAL)
#define UNIMPLEMENTED_ONCE
NTSTATUS NTAPI LdrShutdownThread(VOID)
int WINAPI GetThreadPriority(IN HANDLE hThread)
NTSTATUS NTAPI NtGetContextThread(IN HANDLE ThreadHandle, IN OUT PCONTEXT ThreadContext)
#define TLS_MINIMUM_AVAILABLE
HANDLE WINAPI CreateRemoteThread(IN HANDLE hProcess, IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
NTSYSAPI BOOLEAN WINAPI RtlAreBitsSet(PCRTL_BITMAP, ULONG, ULONG)
VOID NTAPI RtlFreeActivationContextStack(IN PACTIVATION_CONTEXT_STACK Stack)