mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-01 19:26:16 +00:00
[WIN32CSR/CSRSRV]: Make the outdated CSR_PLUGIN architecture as close to the CSR_SERVER_DLL architecture as possible for easier migration later. Main changes are return values/number of parameters, importing csrsrv functions instead of using a manual export table, and other similar small changes. Also, add win32csr.dll to the registry command-line for CSRSS, but still load it hard-coded for now.
svn path=/trunk/; revision=55665
This commit is contained in:
@@ -1077,7 +1077,7 @@ HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Kmode",0x000
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Optional",0x00010000,"Posix"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Posix",0x00020000,"%SystemRoot%\system32\psxss.exe"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Required",0x00010000,"Debug","Windows"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=win32csr:Win32CsrInitialization,2 ProfileControl=Off MaxRequestThreads=16"
|
||||
|
||||
; WOW Support
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Wow","",0x00000000,""
|
||||
|
||||
@@ -793,7 +793,7 @@ HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Kmode",0x000
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Optional",0x00010000,"Posix"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Posix",0x00020000,"%SystemRoot%\system32\psxss.exe"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Required",0x00010000,"Debug","Windows"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=win32csr:Win32CsrInitialization,2 ProfileControl=Off MaxRequestThreads=16"
|
||||
|
||||
; WOW Support
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Wow","",0x00000000,""
|
||||
|
||||
@@ -1228,7 +1228,7 @@ HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Kmode",0x000
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Optional",0x00010000,"Posix"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Posix",0x00020000,"%SystemRoot%\system32\psxss.exe"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Required",0x00010000,"Debug","Windows"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16"
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems","Windows",0x00020000,"%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=win32csr:Win32CsrInitialization,2 ProfileControl=Off MaxRequestThreads=16"
|
||||
|
||||
; WOW Support
|
||||
HKLM,"SYSTEM\CurrentControlSet\Control\Wow","",0x00000000,""
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
extern NTSTATUS CallProcessInherit(PCSR_PROCESS, PCSR_PROCESS);
|
||||
extern NTSTATUS CallProcessCreated(PCSR_PROCESS, PCSR_PROCESS);
|
||||
extern NTSTATUS CallProcessDeleted(PCSR_PROCESS);
|
||||
|
||||
/* GLOBALS *******************************************************************/
|
||||
@@ -154,11 +154,9 @@ CSR_API(CsrCreateProcess)
|
||||
{
|
||||
NewProcessData->ParentConsole = ProcessData->Console;
|
||||
NewProcessData->bInheritHandles = Request->Data.CreateProcessRequest.bInheritHandles;
|
||||
if (Request->Data.CreateProcessRequest.bInheritHandles)
|
||||
{
|
||||
CallProcessInherit(ProcessData, NewProcessData);
|
||||
}
|
||||
}
|
||||
|
||||
CallProcessCreated(ProcessData, NewProcessData);
|
||||
|
||||
if (Request->Data.CreateProcessRequest.Flags & CREATE_NEW_PROCESS_GROUP)
|
||||
{
|
||||
|
||||
@@ -97,20 +97,20 @@ CsrApiCallHandler(PCSR_PROCESS ProcessData,
|
||||
Request->Status = STATUS_INVALID_SYSTEM_SERVICE;
|
||||
}
|
||||
|
||||
BOOL
|
||||
CallHardError(IN PCSR_PROCESS ProcessData,
|
||||
VOID
|
||||
CallHardError(IN PCSR_THREAD ThreadData,
|
||||
IN PHARDERROR_MSG HardErrorMessage);
|
||||
|
||||
static
|
||||
VOID
|
||||
NTAPI
|
||||
CsrHandleHardError(IN PCSR_PROCESS ProcessData,
|
||||
CsrHandleHardError(IN PCSR_THREAD ThreadData,
|
||||
IN OUT PHARDERROR_MSG Message)
|
||||
{
|
||||
DPRINT1("CSR: received hard error %lx\n", Message->Status);
|
||||
|
||||
/* Call the hard error handler in win32csr */
|
||||
(VOID)CallHardError(ProcessData, Message);
|
||||
CallHardError(ThreadData, Message);
|
||||
}
|
||||
|
||||
/*++
|
||||
@@ -935,7 +935,9 @@ ClientConnectionThread(IN PVOID Parameter)
|
||||
if (MessageType == LPC_ERROR_EVENT)
|
||||
{
|
||||
/* Call the Handler */
|
||||
CsrHandleHardError(ProcessData, (PHARDERROR_MSG)Request);
|
||||
PCSR_THREAD Thread;
|
||||
Thread = CsrLocateThreadByClientId(NULL, &Request->Header.ClientId);
|
||||
CsrHandleHardError(Thread, (PHARDERROR_MSG)Request);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
;@ stdcall CsrDereferenceWait(ptr)
|
||||
;@ stdcall CsrDestroyProcess(ptr long)
|
||||
;@ stdcall CsrDestroyThread(ptr)
|
||||
@ stdcall CsrEnumProcesses(ptr ptr) ; Temporary hack
|
||||
;@ stdcall CsrExecServerThread(ptr long)
|
||||
@ stdcall CsrGetProcessLuid(ptr ptr)
|
||||
@ stdcall CsrImpersonateClient(ptr)
|
||||
|
||||
@@ -64,26 +64,22 @@ CsrpAddServerProcs(CSRPLUGIN_SERVER_PROCS *Procs)
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
BOOL
|
||||
CallHardError(IN PCSR_PROCESS ProcessData,
|
||||
VOID
|
||||
CallHardError(IN PCSR_THREAD ThreadData,
|
||||
IN PHARDERROR_MSG HardErrorMessage)
|
||||
{
|
||||
BOOL Ok;
|
||||
unsigned i;
|
||||
|
||||
DPRINT("CSR: %s called\n", __FUNCTION__);
|
||||
|
||||
Ok = TRUE;
|
||||
for (i = 0; i < ServerProcCount && Ok; i++)
|
||||
for (i = 0; i < ServerProcCount; i++)
|
||||
{
|
||||
Ok = (*ServerProcs[i].HardErrorProc)(ProcessData, HardErrorMessage);
|
||||
ServerProcs[i].HardErrorProc(ThreadData, HardErrorMessage);
|
||||
}
|
||||
|
||||
return Ok;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
CallProcessInherit(IN PCSR_PROCESS SourceProcessData,
|
||||
CallProcessCreated(IN PCSR_PROCESS SourceProcessData,
|
||||
IN PCSR_PROCESS TargetProcessData)
|
||||
{
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
@@ -91,8 +87,11 @@ CallProcessInherit(IN PCSR_PROCESS SourceProcessData,
|
||||
|
||||
DPRINT("CSR: %s called\n", __FUNCTION__);
|
||||
|
||||
for (i = 0; i < ServerProcCount && NT_SUCCESS(Status); i++)
|
||||
Status = (*ServerProcs[i].ProcessInheritProc)(SourceProcessData, TargetProcessData);
|
||||
for (i = 0; i < ServerProcCount; i++)
|
||||
{
|
||||
Status = ServerProcs[i].ProcessInheritProc(SourceProcessData, TargetProcessData);
|
||||
if (!NT_SUCCESS(Status)) break;
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
@@ -100,15 +99,15 @@ CallProcessInherit(IN PCSR_PROCESS SourceProcessData,
|
||||
NTSTATUS
|
||||
CallProcessDeleted(IN PCSR_PROCESS ProcessData)
|
||||
{
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
ULONG Result = 0;
|
||||
unsigned i;
|
||||
|
||||
DPRINT("CSR: %s called\n", __FUNCTION__);
|
||||
|
||||
for (i = 0; i < ServerProcCount && NT_SUCCESS(Status); i++)
|
||||
Status = (*ServerProcs[i].ProcessDeletedProc)(ProcessData);
|
||||
for (i = 0; i < ServerProcCount; i++)
|
||||
Result = ServerProcs[i].ProcessDeletedProc(ProcessData, 0, FALSE);
|
||||
|
||||
return Status;
|
||||
return Result;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
@@ -131,7 +130,6 @@ CsrpInitWin32Csr (VOID)
|
||||
HINSTANCE hInst;
|
||||
ANSI_STRING ProcName;
|
||||
CSRPLUGIN_INITIALIZE_PROC InitProc;
|
||||
CSRSS_EXPORTED_FUNCS Exports;
|
||||
PCSRSS_API_DEFINITION ApiDefinitions;
|
||||
CSRPLUGIN_SERVER_PROCS ServerProcs;
|
||||
|
||||
@@ -149,8 +147,8 @@ CsrpInitWin32Csr (VOID)
|
||||
{
|
||||
return Status;
|
||||
}
|
||||
Exports.CsrEnumProcessesProc = CsrEnumProcesses;
|
||||
if (! (*InitProc)(&ApiDefinitions, &ServerProcs, &Exports, CsrHeap))
|
||||
|
||||
if (! (*InitProc)(&ApiDefinitions, &ServerProcs))
|
||||
{
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
@@ -312,6 +312,7 @@ extern SYSTEM_BASIC_INFORMATION CsrNtSysInfo;
|
||||
extern PVOID CsrSrvSharedSectionHeap;
|
||||
extern PVOID *CsrSrvSharedStaticServerData;
|
||||
extern HANDLE CsrInitializationEvent;
|
||||
extern PCSR_SERVER_DLL CsrLoadedServerDll[CSR_SERVER_DLL_MAX];
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
|
||||
@@ -31,13 +31,13 @@ typedef struct tagCSRSS_EXPORTED_FUNCS
|
||||
|
||||
typedef BOOL (WINAPI *CSRPLUGIN_INIT_COMPLETE_PROC)(void);
|
||||
|
||||
typedef BOOL (WINAPI *CSRPLUGIN_HARDERROR_PROC)(IN PCSR_PROCESS ProcessData,
|
||||
typedef VOID (WINAPI *CSRPLUGIN_HARDERROR_PROC)(IN PCSR_THREAD ThreadData,
|
||||
IN PHARDERROR_MSG HardErrorMessage);
|
||||
|
||||
typedef NTSTATUS (WINAPI *CSRPLUGIN_PROCESS_INHERIT_PROC)(IN PCSR_PROCESS SourceProcessData,
|
||||
IN PCSR_PROCESS TargetProcessData);
|
||||
|
||||
typedef NTSTATUS (WINAPI *CSRPLUGIN_PROCESS_DELETED_PROC)(IN PCSR_PROCESS ProcessData);
|
||||
typedef ULONG (WINAPI *CSRPLUGIN_PROCESS_DELETED_PROC)(IN PCSR_PROCESS ProcessData, IN ULONG Unused, IN BOOLEAN Flag);
|
||||
|
||||
typedef struct tagCSRSS_SERVER_PROCS
|
||||
{
|
||||
@@ -48,8 +48,6 @@ typedef struct tagCSRSS_SERVER_PROCS
|
||||
} CSRPLUGIN_SERVER_PROCS, *PCSRPLUGIN_SERVER_PROCS;
|
||||
|
||||
typedef BOOL (WINAPI *CSRPLUGIN_INITIALIZE_PROC)(PCSRSS_API_DEFINITION *ApiDefinitions,
|
||||
PCSRPLUGIN_SERVER_PROCS ServerProcs,
|
||||
PCSRSS_EXPORTED_FUNCS Exports,
|
||||
HANDLE CsrssApiHeap);
|
||||
PCSRPLUGIN_SERVER_PROCS ServerProcs);
|
||||
|
||||
/* EOF */
|
||||
|
||||
@@ -319,7 +319,7 @@ CSR_API(CsrFreeConsole)
|
||||
Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE);
|
||||
Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
|
||||
|
||||
return Win32CsrReleaseConsole(ProcessData);
|
||||
return Win32CsrReleaseConsole(ProcessData, 0, 0);
|
||||
}
|
||||
|
||||
VOID WINAPI
|
||||
|
||||
@@ -21,7 +21,6 @@ extern RTL_CRITICAL_SECTION Win32CsrDefineDosDeviceCritSec;
|
||||
|
||||
HANDLE Win32CsrApiHeap;
|
||||
HINSTANCE Win32CsrDllHandle = NULL;
|
||||
static CSRSS_EXPORTED_FUNCS CsrExports;
|
||||
|
||||
static CSRSS_API_DEFINITION Win32CsrApiDefinitions[] =
|
||||
{
|
||||
@@ -306,13 +305,7 @@ NTSTATUS FASTCALL
|
||||
Win32CsrEnumProcesses(CSRSS_ENUM_PROCESS_PROC EnumProc,
|
||||
PVOID Context)
|
||||
{
|
||||
return (CsrExports.CsrEnumProcessesProc)(EnumProc, Context);
|
||||
}
|
||||
|
||||
static BOOL WINAPI
|
||||
Win32CsrInitComplete(void)
|
||||
{
|
||||
return TRUE;
|
||||
return CsrEnumProcesses(EnumProc, Context);
|
||||
}
|
||||
|
||||
VOID
|
||||
@@ -331,18 +324,20 @@ CreateSystemThreads(PVOID pParam)
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL WINAPI
|
||||
NTSTATUS
|
||||
WINAPI
|
||||
#if 0
|
||||
Win32CsrInitialization(IN PCSR_SERVER_DLL ServerDll)
|
||||
#else
|
||||
Win32CsrInitialization(PCSRSS_API_DEFINITION *ApiDefinitions,
|
||||
PCSRPLUGIN_SERVER_PROCS ServerProcs,
|
||||
PCSRSS_EXPORTED_FUNCS Exports,
|
||||
HANDLE CsrHeap)
|
||||
PCSRPLUGIN_SERVER_PROCS ServerProcs)
|
||||
#endif
|
||||
{
|
||||
HANDLE ServerThread;
|
||||
CLIENT_ID ClientId;
|
||||
NTSTATUS Status;
|
||||
|
||||
CsrExports = *Exports;
|
||||
Win32CsrApiHeap = CsrHeap;
|
||||
Win32CsrApiHeap = RtlGetProcessHeap();
|
||||
|
||||
CsrpInitVideo();
|
||||
|
||||
@@ -351,11 +346,20 @@ Win32CsrInitialization(PCSRSS_API_DEFINITION *ApiDefinitions,
|
||||
PrivateCsrssManualGuiCheck(0);
|
||||
CsrInitConsoleSupport();
|
||||
|
||||
/* HACK */
|
||||
#if 0
|
||||
ServerDll->DispatchTable = (PVOID)Win32CsrApiDefinitions;
|
||||
ServerDll->HighestApiSupported = 0xDEADBABE;
|
||||
|
||||
ServerDll->HardErrorCallback = Win32CsrHardError;
|
||||
ServerDll->NewProcessCallback = Win32CsrDuplicateHandleTable;
|
||||
ServerDll->ShutdownProcessCallback = Win32CsrReleaseConsole;
|
||||
#else
|
||||
*ApiDefinitions = Win32CsrApiDefinitions;
|
||||
ServerProcs->InitCompleteProc = Win32CsrInitComplete;
|
||||
ServerProcs->HardErrorProc = Win32CsrHardError;
|
||||
ServerProcs->ProcessInheritProc = Win32CsrDuplicateHandleTable;
|
||||
ServerProcs->ProcessDeletedProc = Win32CsrReleaseConsole;
|
||||
#endif
|
||||
|
||||
RtlInitializeCriticalSection(&Win32CsrDefineDosDeviceCritSec);
|
||||
InitializeListHead(&DosDeviceHistory);
|
||||
|
||||
@@ -132,10 +132,10 @@ Win32CsrUnlockObject(Object_t *Object)
|
||||
ConioDeleteConsole(&Console->Header);
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
ULONG
|
||||
WINAPI
|
||||
Win32CsrReleaseConsole(
|
||||
PCSR_PROCESS ProcessData)
|
||||
PCSR_PROCESS ProcessData, ULONG Flags, BOOLEAN First)
|
||||
{
|
||||
PCSRSS_CONSOLE Console;
|
||||
ULONG i;
|
||||
@@ -161,10 +161,10 @@ Win32CsrReleaseConsole(
|
||||
//CloseHandle(ProcessData->ConsoleEvent);
|
||||
//ProcessData->ConsoleEvent = NULL;
|
||||
RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
|
||||
return STATUS_SUCCESS;
|
||||
return 0;
|
||||
}
|
||||
RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
return -1;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
@@ -223,6 +223,9 @@ Win32CsrDuplicateHandleTable(
|
||||
PCSR_PROCESS TargetProcessData)
|
||||
{
|
||||
ULONG i;
|
||||
|
||||
/* Only inherit if the flag was set */
|
||||
if (!TargetProcessData->bInheritHandles) return STATUS_SUCCESS;
|
||||
|
||||
if (TargetProcessData->HandleTableSize)
|
||||
{
|
||||
|
||||
@@ -500,12 +500,13 @@ CsrpMessageBox(
|
||||
return ResponseNotHandled;
|
||||
}
|
||||
|
||||
BOOL
|
||||
VOID
|
||||
WINAPI
|
||||
Win32CsrHardError(
|
||||
IN PCSR_PROCESS ProcessData,
|
||||
IN PCSR_THREAD ThreadData,
|
||||
IN PHARDERROR_MSG Message)
|
||||
{
|
||||
PCSR_PROCESS ProcessData = ThreadData->Process;
|
||||
ULONG_PTR Parameters[MAXIMUM_HARDERROR_PARAMETERS];
|
||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
UNICODE_STRING TextU, CaptionU;
|
||||
@@ -514,6 +515,7 @@ Win32CsrHardError(
|
||||
ULONG Size;
|
||||
|
||||
/* Default to not handled */
|
||||
ASSERT(ProcessData != NULL);
|
||||
Message->Response = ResponseNotHandled;
|
||||
|
||||
/* Make sure we don't have too many parameters */
|
||||
@@ -532,7 +534,7 @@ Win32CsrHardError(
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("NtOpenProcess failed with code: %lx\n", Status);
|
||||
return FALSE;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Capture all string parameters from the process memory */
|
||||
@@ -540,7 +542,7 @@ Win32CsrHardError(
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
NtClose(hProcess);
|
||||
return FALSE;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Format the caption and message box text */
|
||||
@@ -557,7 +559,7 @@ Win32CsrHardError(
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
return FALSE;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Display the message box */
|
||||
@@ -569,6 +571,6 @@ Win32CsrHardError(
|
||||
RtlFreeUnicodeString(&TextU);
|
||||
RtlFreeUnicodeString(&CaptionU);
|
||||
|
||||
return TRUE;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,10 +23,10 @@
|
||||
/* shared header with console.dll */
|
||||
#include "console.h"
|
||||
|
||||
BOOL
|
||||
VOID
|
||||
WINAPI
|
||||
Win32CsrHardError(
|
||||
IN PCSR_PROCESS ProcessData,
|
||||
IN PCSR_THREAD ThreadData,
|
||||
IN PHARDERROR_MSG Message);
|
||||
|
||||
/* EOF */
|
||||
|
||||
@@ -54,7 +54,7 @@ NTSTATUS FASTCALL Win32CsrLockObject(PCSR_PROCESS ProcessData,
|
||||
VOID FASTCALL Win32CsrUnlockObject(Object_t *Object);
|
||||
NTSTATUS FASTCALL Win32CsrReleaseObject(PCSR_PROCESS ProcessData,
|
||||
HANDLE Object);
|
||||
NTSTATUS WINAPI Win32CsrReleaseConsole(PCSR_PROCESS ProcessData);
|
||||
ULONG WINAPI Win32CsrReleaseConsole(PCSR_PROCESS ProcessData, ULONG Flags, BOOLEAN First);
|
||||
NTSTATUS WINAPI Win32CsrDuplicateHandleTable(PCSR_PROCESS SourceProcessData,
|
||||
PCSR_PROCESS TargetProcessData);
|
||||
CSR_API(CsrGetHandle);
|
||||
|
||||
@@ -1 +1 @@
|
||||
@ stdcall Win32CsrInitialization(ptr ptr ptr ptr)
|
||||
@ stdcall Win32CsrInitialization(ptr ptr)
|
||||
|
||||
Reference in New Issue
Block a user