mirror of
https://github.com/reactos/reactos.git
synced 2025-05-07 02:41:22 +00:00
- Add callback for client side thread startup. This is for bug 4785.
svn path=/trunk/; revision=42750
This commit is contained in:
parent
96e5d9e878
commit
2e771a7968
5 changed files with 53 additions and 1 deletions
|
@ -232,6 +232,8 @@ Init(VOID)
|
|||
(PVOID)User32CallEventProcFromKernel;
|
||||
NtCurrentPeb()->KernelCallbackTable[USER32_CALLBACK_LOADMENU] =
|
||||
(PVOID)User32CallLoadMenuFromKernel;
|
||||
NtCurrentPeb()->KernelCallbackTable[USER32_CALLBACK_CLIENTTHREADSTARTUP] =
|
||||
(PVOID)User32CallClientThreadSetupFromKernel;
|
||||
|
||||
NtUserProcessConnect( NtCurrentProcess(),
|
||||
&UserCon,
|
||||
|
@ -353,3 +355,12 @@ GetConnected(VOID)
|
|||
gHandleEntries = SharedPtrToUser(gHandleTable->handles);
|
||||
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
WINAPI
|
||||
User32CallClientThreadSetupFromKernel(PVOID Arguments, ULONG ArgumentLength)
|
||||
{
|
||||
ERR("GetConnected\n");
|
||||
return ZwCallbackReturn(NULL, 0, STATUS_SUCCESS);
|
||||
}
|
||||
|
||||
|
|
|
@ -8,7 +8,8 @@
|
|||
#define USER32_CALLBACK_HOOKPROC (4)
|
||||
#define USER32_CALLBACK_EVENTPROC (5)
|
||||
#define USER32_CALLBACK_LOADMENU (6)
|
||||
#define USER32_CALLBACK_MAXIMUM (6)
|
||||
#define USER32_CALLBACK_CLIENTTHREADSTARTUP (7)
|
||||
#define USER32_CALLBACK_MAXIMUM (7)
|
||||
|
||||
typedef struct _WINDOWPROC_CALLBACK_ARGUMENTS
|
||||
{
|
||||
|
@ -84,5 +85,7 @@ NTSTATUS WINAPI
|
|||
User32CallEventProcFromKernel(PVOID Arguments, ULONG ArgumentLength);
|
||||
NTSTATUS WINAPI
|
||||
User32CallLoadMenuFromKernel(PVOID Arguments, ULONG ArgumentLength);
|
||||
NTSTATUS WINAPI
|
||||
User32CallClientThreadSetupFromKernel(PVOID Arguments, ULONG ArgumentLength);
|
||||
|
||||
#endif /* __INCLUDE_USER32_CALLBACK_H */
|
||||
|
|
|
@ -56,4 +56,6 @@ IntCbFreeMemory(PVOID Data);
|
|||
|
||||
HMENU APIENTRY co_IntCallLoadMenu(HINSTANCE,PUNICODE_STRING);
|
||||
|
||||
NTSTATUS APIENTRY co_IntClientThreadSetup(VOID);
|
||||
|
||||
#endif /* _WIN32K_CALLBACK_H */
|
||||
|
|
|
@ -703,4 +703,29 @@ co_IntCallLoadMenu( HINSTANCE hModule,
|
|||
return (HMENU)Result;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
APIENTRY
|
||||
co_IntClientThreadSetup(VOID)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
ULONG ArgumentLength, ResultLength;
|
||||
PVOID Argument, ResultPointer;
|
||||
|
||||
ArgumentLength = ResultLength = 0;
|
||||
Argument = ResultPointer = NULL;
|
||||
|
||||
UserLeaveCo();
|
||||
|
||||
Status = KeUserModeCallback(USER32_CALLBACK_CLIENTTHREADSTARTUP,
|
||||
Argument,
|
||||
ArgumentLength,
|
||||
&ResultPointer,
|
||||
&ResultLength);
|
||||
|
||||
UserEnterCo();
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -94,6 +94,8 @@ UserInitialize(
|
|||
HANDLE hPowerRequestEvent,
|
||||
HANDLE hMediaRequestEvent)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
// Set W32PF_Flags |= (W32PF_READSCREENACCESSGRANTED | W32PF_IOWINSTA)
|
||||
// Create Object Directory,,, Looks like create workstation. "\\Windows\\WindowStations"
|
||||
// Create Event for Diconnect Desktop.
|
||||
|
@ -105,6 +107,15 @@ UserInitialize(
|
|||
// Initialize User Screen.
|
||||
// }
|
||||
// Create ThreadInfo for this Thread!
|
||||
// {
|
||||
|
||||
GetW32ThreadInfo();
|
||||
|
||||
// Callback to User32 Client Thread Setup
|
||||
|
||||
Status = co_IntClientThreadSetup();
|
||||
|
||||
// }
|
||||
// Set Global SERVERINFO Error flags.
|
||||
// Load Resources.
|
||||
|
||||
|
|
Loading…
Reference in a new issue