60 sizeof(BasePriority));
95 sizeof(BasePriority));
441 CurrentCid = CurrentThread->
ClientId;
593 CsrThread->
Flags = 0;
768 NextEntry = NextEntry->
Flink;
938 if (!CsrThread) CsrThread = CurrentThread;
949 CsrThread->ThreadHandle,
956 DPRINT1(
"CSRSS: Can't impersonate client thread - Status = %lx\n",
Status);
1020 NextEntry = NextEntry->
Flink;
1069 DPRINT1(
"CSRSS: CsrRevertToSelf called while not impersonating\n");
1083 &ImpersonationToken,
1084 sizeof(ImpersonationToken));
1118 sizeof(ProcessPriority));
1149 sizeof(ProcessPriority));
1186 NextEntry = NextEntry->
Flink;
1247 if (ReturnCsrProcess)
1253 return ReturnCsrProcess;
1302 NextEntry = NextEntry->
Flink;
1353 DPRINT1(
"Process %x cancelled forced shutdown (Dll = %d)\n",
NTSTATUS NTAPI NtImpersonateThread(IN HANDLE ThreadHandle, IN HANDLE ThreadToImpersonateHandle, IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService)
#define CsrGetClientThread()
NTSTATUS NTAPI CsrCreateProcess(IN HANDLE hProcess, IN HANDLE hThread, IN PCLIENT_ID ClientId, IN PCSR_NT_SESSION NtSession, IN ULONG Flags, IN PCLIENT_ID DebugCid)
#define STATUS_BAD_IMPERSONATION_LEVEL
_In_ ULONG _In_ ULONG _In_ ULONG Length
BOOLEAN NTAPI CsrRevertToSelf(VOID)
NTSTATUS NTAPI CsrGetProcessLuid(IN HANDLE hProcess OPTIONAL, OUT PLUID Luid)
BOOLEAN NTAPI CsrNotifyWaitBlock(IN PCSR_WAIT_BLOCK WaitBlock, IN PLIST_ENTRY WaitList, IN PVOID WaitArgument1, IN PVOID WaitArgument2, IN ULONG WaitFlags, IN BOOLEAN DereferenceThread)
PCSR_THREAD NTAPI CsrAllocateThread(IN PCSR_PROCESS CsrProcess)
RTL_CRITICAL_SECTION CsrProcessLock
#define STATUS_THREAD_IS_TERMINATING
NTSTATUS NTAPI CsrInitializeProcessStructure(VOID)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
#define NtCurrentThread()
NTSTATUS NTAPI CsrLockProcessByClientId(IN HANDLE Pid, OUT PCSR_PROCESS *CsrProcess)
NTSYSAPI NTSTATUS NTAPI RtlAdjustPrivilege(_In_ ULONG Privilege, _In_ BOOLEAN NewValue, _In_ BOOLEAN ForThread, _Out_ PBOOLEAN OldValue)
_In_ BOOL _In_ HANDLE hProcess
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR Level
NTSTATUS NTAPI NtOpenProcessToken(IN HANDLE ProcessHandle, IN ACCESS_MASK DesiredAccess, OUT PHANDLE TokenHandle)
#define InsertTailList(ListHead, Entry)
ULONG CsrProcessSequenceCount
#define CsrReleaseWaitLock()
#define CSR_SERVER_DLL_MAX
#define CsrReleaseProcessLock()
NTSTATUS NTAPI CsrDestroyProcess(IN PCLIENT_ID Cid, IN NTSTATUS ExitStatus)
static int Link(const char **args)
struct _CSR_PROCESS CSR_PROCESS
#define RtlMoveMemory(Destination, Source, Length)
#define STATUS_BUFFER_TOO_SMALL
LIST_ENTRY CsrThreadHashTable[NUMBER_THREAD_HASH_BUCKETS]
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
#define ProcessStructureListLocked()
PCSR_DISCONNECT_CALLBACK DisconnectCallback
VOID NTAPI CsrLockedReferenceProcess(IN PCSR_PROCESS CsrProcess)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
BOOLEAN NTAPI CsrImpersonateClient(IN PCSR_THREAD CsrThread)
VOID NTAPI CsrDeallocateThread(IN PCSR_THREAD CsrThread)
VOID NTAPI DbgBreakPoint(VOID)
#define RtlEqualLuid(Luid1, Luid2)
NTSTATUS NTAPI CsrDebugProcess(IN PCSR_PROCESS CsrProcess)
VOID NTAPI CsrDereferenceNtSession(IN PCSR_NT_SESSION Session, IN NTSTATUS ExitStatus)
VOID NTAPI CsrLockedDereferenceThread(IN PCSR_THREAD CsrThread)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
NTSTATUS NTAPI CsrDebugProcessStop(IN PCSR_PROCESS CsrProcess)
NTSTATUS NTAPI NtSetInformationThread(IN HANDLE ThreadHandle, IN THREADINFOCLASS ThreadInformationClass, IN PVOID ThreadInformation, IN ULONG ThreadInformationLength)
NTSTATUS NTAPI CsrInsertThread(IN PCSR_PROCESS Process, IN PCSR_THREAD Thread)
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 NtCurrentProcess()
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
SECURITY_QUALITY_OF_SERVICE CsrSecurityQos
struct _LIST_ENTRY * Flink
_Must_inspect_result_ __kernel_entry NTSTATUS NTAPI NtQueryInformationToken(_In_ HANDLE TokenHandle, _In_ TOKEN_INFORMATION_CLASS TokenInformationClass, _Out_writes_bytes_to_opt_(TokenInformationLength, *ReturnLength) PVOID TokenInformation, _In_ ULONG TokenInformationLength, _Out_ PULONG ReturnLength)
Queries a specific type of information in regard of an access token based upon the information class....
_Must_inspect_result_ _In_ ULONG Flags
_Out_ PCLIENT_ID ClientId
NTSTATUS NTAPI NtOpenThreadToken(_In_ HANDLE ThreadHandle, _In_ ACCESS_MASK DesiredAccess, _In_ BOOLEAN OpenAsSelf, _Out_ PHANDLE TokenHandle)
Opens a token that is tied to a thread handle.
BOOLEAN NTAPI ProtectHandle(IN HANDLE ObjectHandle)
NTSYSAPI NTSTATUS NTAPI RtlInitializeCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
#define NT_SUCCESS(StatCode)
PCSR_PROCESS CsrRootProcess
VOID NTAPI CsrDeallocateProcess(IN PCSR_PROCESS CsrProcess)
#define STATUS_ACCESS_DENIED
PCSR_PROCESS NTAPI FindProcessForShutdown(IN PLUID CallerLuid)
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)
VOID NTAPI CsrProcessRefcountZero(IN PCSR_PROCESS CsrProcess)
#define STATUS_UNSUCCESSFUL
#define CsrAcquireProcessLock()
#define PROCESS_PRIORITY_NORMAL_FOREGROUND
VOID NTAPI CsrSetBackgroundPriority(IN PCSR_PROCESS CsrProcess)
VOID NTAPI CsrRemoveProcess(IN PCSR_PROCESS CsrProcess)
VOID NTAPI CsrDereferenceProcess(IN PCSR_PROCESS CsrProcess)
PCSR_PROCESS NTAPI CsrAllocateProcess(VOID)
#define SE_INC_BASE_PRIORITY_PRIVILEGE
NTSTATUS NTAPI CsrUnlockProcess(IN PCSR_PROCESS CsrProcess)
VOID NTAPI CsrReferenceNtSession(IN PCSR_NT_SESSION Session)
PCSR_THREAD NTAPI CsrLocateThreadByClientId(OUT PCSR_PROCESS *Process OPTIONAL, IN PCLIENT_ID ClientId)
PCSR_SHUTDOWNPROCESS_CALLBACK ShutdownProcessCallback
RTL_CRITICAL_SECTION CsrWaitListsLock
#define NUMBER_THREAD_HASH_BUCKETS
#define CsrAcquireWaitLock()
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
NTSTATUS NTAPI NtSetInformationProcess(IN HANDLE ProcessHandle, IN PROCESSINFOCLASS ProcessInformationClass, IN PVOID ProcessInformation, IN ULONG ProcessInformationLength)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
struct _CSR_WAIT_BLOCK * WaitBlock
NTSTATUS NTAPI CsrShutdownProcesses(IN PLUID CallerLuid, IN ULONG Flags)
#define InitializeListHead(ListHead)
#define SECURITY_STATIC_TRACKING
VOID NTAPI CsrSetToNormalPriority(VOID)
struct _SECURITY_QUALITY_OF_SERVICE SECURITY_QUALITY_OF_SERVICE
VOID NTAPI CsrSetToShutdownPriority(VOID)
VOID NTAPI CsrLockedDereferenceProcess(PCSR_PROCESS CsrProcess)
VOID NTAPI CsrInsertProcess(IN PCSR_PROCESS ParentProcess OPTIONAL, IN PCSR_PROCESS CsrProcess)
PCSR_NEWPROCESS_CALLBACK NewProcessCallback
ULONG CsrTotalPerProcessDataLength
#define CsrProcessPriorityFlags
VOID NTAPI CsrSetForegroundPriority(IN PCSR_PROCESS CsrProcess)
PCSR_SERVER_DLL CsrLoadedServerDll[CSR_SERVER_DLL_MAX]
PULONG MinorVersion OPTIONAL