* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Win32k subsystem
* PURPOSE: Native User stubs
- * FILE: subsystems/win32/win32k/ntuser/ntstubs.c
+ * FILE: win32ss/user/ntuser/ntstubs.c
* PROGRAMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
*/
return 0;
}
-BOOL
-APIENTRY
-NtUserDdeGetQualityOfService(
- IN HWND hwndClient,
- IN HWND hWndServer,
- OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev)
-{
- STUB
-
- return 0;
-}
-
-DWORD
-APIENTRY
-NtUserDdeInitialize(
- DWORD Unknown0,
- DWORD Unknown1,
- DWORD Unknown2,
- DWORD Unknown3,
- DWORD Unknown4)
-{
- STUB
-
- return 0;
-}
-
-BOOL
-APIENTRY
-NtUserDdeSetQualityOfService(
- IN HWND hwndClient,
- IN PSECURITY_QUALITY_OF_SERVICE pqosNew,
- OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev)
-{
- STUB
-
- return 0;
-}
-
DWORD
APIENTRY
NtUserDragObject(
return 0;
}
-DWORD
-APIENTRY
-NtUserExcludeUpdateRgn(
- HDC hDC,
- HWND hWnd)
-{
- STUB
-
- return 0;
-}
-
BOOL
APIENTRY
NtUserGetAltTabInfo(
return 0;
}
-DWORD
-APIENTRY
-NtUserGetImeHotKey(
- DWORD Unknown0,
- DWORD Unknown1,
- DWORD Unknown2,
- DWORD Unknown3)
-{
- STUB
-
- return 0;
-}
-
-BOOL
-APIENTRY
-NtUserImpersonateDdeClientWindow(
- HWND hWndClient,
- HWND hWndServer)
-{
- STUB
-
- return 0;
-}
-
NTSTATUS
APIENTRY
NtUserInitializeClientPfnArrays(
return 0;
}
-DWORD
-APIENTRY
-NtUserNotifyIMEStatus(
- DWORD Unknown0,
- DWORD Unknown1,
- DWORD Unknown2)
-{
- STUB
-
- return 0;
-}
-
DWORD
APIENTRY
NtUserQueryUserCounters(
DWORD Unknown0,
DWORD Unknown1)
{
- STUB
+ STUB;
return 0;
}
DWORD
APIENTRY
-NtUserSetImeHotKey(
- DWORD Unknown0,
- DWORD Unknown1,
- DWORD Unknown2,
- DWORD Unknown3,
- DWORD Unknown4)
+NtUserSetDbgTagCount(
+ DWORD Unknown0)
{
- STUB
+ STUB;
+
+ return 0;
+}
+
+DWORD
+APIENTRY
+NtUserSetRipFlags(
+ DWORD Unknown0)
+{
+ STUB;
return 0;
}
+DWORD
+APIENTRY
+NtUserDbgWin32HeapFail(
+ DWORD Unknown0,
+ DWORD Unknown1)
+{
+ STUB
+
+ return 0;
+}
DWORD
APIENTRY
-NtUserSetRipFlags(
- DWORD Unknown0,
- DWORD Unknown1)
+NtUserDbgWin32HeapStat(
+ DWORD Unknown0,
+ DWORD Unknown1)
{
STUB
return 0;
}
-
-DWORD
-APIENTRY
-NtUserCheckImeHotKey(
- DWORD dwUnknown1,
- DWORD dwUnknown2)
-{
- STUB;
- return 0;
-}
-
-NTSTATUS
-APIENTRY
-NtUserConsoleControl(
- IN CONSOLECONTROL ConsoleCtrl,
- IN PVOID ConsoleCtrlInfo,
- IN ULONG ConsoleCtrlInfoLength)
-{
- NTSTATUS Status = STATUS_SUCCESS;
-
- /* Allow only Console Server to perform this operation (via CSRSS) */
- if (PsGetCurrentProcess() != gpepCSRSS)
- return STATUS_ACCESS_DENIED;
-
- UserEnterExclusive();
-
- switch (ConsoleCtrl)
- {
- case GuiConsoleWndClassAtom:
- {
- if (ConsoleCtrlInfoLength != sizeof(ATOM))
- {
- Status = STATUS_INFO_LENGTH_MISMATCH;
- break;
- }
-
- _SEH2_TRY
- {
- ProbeForRead(ConsoleCtrlInfo, ConsoleCtrlInfoLength, 1);
- gaGuiConsoleWndClass = *(ATOM*)ConsoleCtrlInfo;
- }
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
- {
- Status = _SEH2_GetExceptionCode();
- }
- _SEH2_END;
-
- break;
- }
-
- case ConsoleMakePalettePublic:
- {
- HPALETTE hPalette;
-
- if (ConsoleCtrlInfoLength != sizeof(HPALETTE))
- {
- Status = STATUS_INFO_LENGTH_MISMATCH;
- break;
- }
-
- _SEH2_TRY
- {
- ProbeForRead(ConsoleCtrlInfo, ConsoleCtrlInfoLength, 1);
- hPalette = *(HPALETTE*)ConsoleCtrlInfo;
- }
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
- {
- Status = _SEH2_GetExceptionCode();
- }
- _SEH2_END;
-
- /* Make the palette handle public */
- GreSetObjectOwnerEx(hPalette,
- GDI_OBJ_HMGR_PUBLIC,
- GDIOBJFLAG_IGNOREPID);
-
- break;
- }
-
- case ConsoleAcquireDisplayOwnership:
- {
- ERR("NtUserConsoleControl - ConsoleAcquireDisplayOwnership is UNIMPLEMENTED\n");
- Status = STATUS_NOT_IMPLEMENTED;
- break;
- }
-
- default:
- ERR("Calling invalid control %lu in NtUserConsoleControl\n", ConsoleCtrl);
- Status = STATUS_INVALID_INFO_CLASS;
- break;
- }
-
- UserLeave();
-
- return Status;
-}
-
DWORD
APIENTRY
NtUserCreateInputContext(
return 0;
}
-DWORD
-APIENTRY
-NtUserDisableThreadIme(
- DWORD dwUnknown1)
-{
- STUB;
- return 0;
-}
-
-DWORD
-APIENTRY
-NtUserGetAppImeLevel(
- DWORD dwUnknown1)
-{
- STUB;
- return 0;
-}
-
-DWORD
-APIENTRY
-NtUserGetImeInfoEx(
- DWORD dwUnknown1,
- DWORD dwUnknown2)
-{
- STUB;
- return 0;
-}
-
DWORD
APIENTRY
NtUserGetRawInputBuffer(
ULONG dwUnknown,
ULONG CreateFlags)
{
- STUB;
+ // STUB;
+ TRACE("NtUserNotifyProcessCreate is UNIMPLEMENTED\n");
return FALSE;
}
{
// FIXME: Check that pUserConnect->ulVersion == USER_VERSION;
+ ProbeForWrite(pUserConnect, sizeof(*pUserConnect), sizeof(PVOID));
pUserConnect->siClient.psi = gpsi;
pUserConnect->siClient.aheList = gHandleTable;
pUserConnect->siClient.ulSharedDelta =
return 0;
}
-DWORD
-APIENTRY
-NtUserResolveDesktop(
- DWORD dwUnknown1,
- DWORD dwUnknown2,
- DWORD dwUnknown3,
- DWORD dwUnknown4)
-{
- STUB;
- return 0;
-}
-
-DWORD
-APIENTRY
-NtUserSetAppImeLevel(
- DWORD dwUnknown1,
- DWORD dwUnknown2)
-{
- STUB;
- return 0;
-}
-
-DWORD
-APIENTRY
-NtUserSetImeInfoEx(
- DWORD dwUnknown1)
+DWORD APIENTRY
+NtUserResolveDesktopForWOW(DWORD Unknown0)
{
- STUB;
+ STUB
return 0;
}
{
case UserThreadInitiateShutdown:
{
+ ULONG CapturedFlags = 0;
+
ERR("Shutdown initiated\n");
- STUB;
- Status = STATUS_NOT_IMPLEMENTED;
+
+ if (ThreadInformationLength != sizeof(ULONG))
+ {
+ Status = STATUS_INFO_LENGTH_MISMATCH;
+ break;
+ }
+
+ /* Capture the caller value */
+ Status = STATUS_SUCCESS;
+ _SEH2_TRY
+ {
+ ProbeForWrite(ThreadInformation, sizeof(CapturedFlags), sizeof(PVOID));
+ CapturedFlags = *(PULONG)ThreadInformation;
+ }
+ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ {
+ Status = _SEH2_GetExceptionCode();
+ _SEH2_YIELD(break);
+ }
+ _SEH2_END;
+
+ Status = UserInitiateShutdown(Thread, &CapturedFlags);
+
+ /* Return the modified value to the caller */
+ _SEH2_TRY
+ {
+ *(PULONG)ThreadInformation = CapturedFlags;
+ }
+ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ {
+ Status = _SEH2_GetExceptionCode();
+ }
+ _SEH2_END;
+
break;
}
case UserThreadEndShutdown:
{
+ NTSTATUS ShutdownStatus;
+
ERR("Shutdown ended\n");
- STUB;
- Status = STATUS_NOT_IMPLEMENTED;
+
+ if (ThreadInformationLength != sizeof(ShutdownStatus))
+ {
+ Status = STATUS_INFO_LENGTH_MISMATCH;
+ break;
+ }
+
+ /* Capture the caller value */
+ Status = STATUS_SUCCESS;
+ _SEH2_TRY
+ {
+ ProbeForRead(ThreadInformation, sizeof(ShutdownStatus), sizeof(PVOID));
+ ShutdownStatus = *(NTSTATUS*)ThreadInformation;
+ }
+ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ {
+ Status = _SEH2_GetExceptionCode();
+ _SEH2_YIELD(break);
+ }
+ _SEH2_END;
+
+ Status = UserEndShutdown(Thread, ShutdownStatus);
break;
}
case UserThreadCsrApiPort:
{
+ HANDLE CsrPortHandle;
+
ERR("Set CSR API Port for Win32k\n");
- if (ThreadInformationLength != sizeof(HANDLE))
+ if (ThreadInformationLength != sizeof(CsrPortHandle))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
break;
}
- Status = InitCsrApiPort(*(PHANDLE)ThreadInformation);
+
+ /* Capture the caller value */
+ Status = STATUS_SUCCESS;
+ _SEH2_TRY
+ {
+ ProbeForRead(ThreadInformation, sizeof(CsrPortHandle), sizeof(PVOID));
+ CsrPortHandle = *(PHANDLE)ThreadInformation;
+ }
+ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ {
+ Status = _SEH2_GetExceptionCode();
+ _SEH2_YIELD(break);
+ }
+ _SEH2_END;
+
+ Status = InitCsrApiPort(CsrPortHandle);
break;
}
return 0;
}
-DWORD
-APIENTRY
-NtUserPaintMenuBar(
- DWORD dwUnknown1,
- DWORD dwUnknown2,
- DWORD dwUnknown3,
- DWORD dwUnknown4,
- DWORD dwUnknown5,
- DWORD dwUnknown6)
-{
- STUB;
- return 0;
-}
-
-
DWORD
APIENTRY
NtUserRemoteConnect(
return 0;
}
-/*
- * @unimplemented
- */
-DWORD
-APIENTRY
-NtUserDrawMenuBarTemp(
- HWND hWnd,
- HDC hDC,
- PRECT hRect,
- HMENU hMenu,
- HFONT hFont)
-{
- /* We'll use this function just for caching the menu bar */
- STUB
- return 0;
-}
-
-/*
- * FillWindow: Called from User; Dialog, Edit and ListBox procs during a WM_ERASEBKGND.
- */
-/*
- * @unimplemented
- */
-BOOL APIENTRY
-NtUserFillWindow(HWND hWndPaint,
- HWND hWndPaint1,
- HDC hDC,
- HBRUSH hBrush)
-{
- STUB
-
- return 0;
-}
-
/*
* @unimplemented
*/
return 0;
}
-/*
- * @unimplemented
- */
-DWORD APIENTRY
-NtUserSetImeOwnerWindow(DWORD Unknown0,
- DWORD Unknown1)
-{
- STUB
-
- return 0;
-}
-
-BOOL
-APIENTRY
-NtUserGetLayeredWindowAttributes(
- HWND hwnd,
- COLORREF *pcrKey,
- BYTE *pbAlpha,
- DWORD *pdwFlags)
-{
- STUB;
- return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL APIENTRY
-NtUserSetLayeredWindowAttributes(HWND hwnd,
- COLORREF crKey,
- BYTE bAlpha,
- DWORD dwFlags)
-{
- STUB;
- return FALSE;
-}
-
-/*
- * @unimplemented
- */
-BOOL
-APIENTRY
-NtUserUpdateLayeredWindow(
- HWND hwnd,
- HDC hdcDst,
- POINT *pptDst,
- SIZE *psize,
- HDC hdcSrc,
- POINT *pptSrc,
- COLORREF crKey,
- BLENDFUNCTION *pblend,
- DWORD dwFlags,
- RECT *prcDirty)
-{
- STUB
-
- return 0;
-}
-
-/*
- * NtUserResolveDesktopForWOW
- *
- * Status
- * @unimplemented
- */
-
-DWORD APIENTRY
-NtUserResolveDesktopForWOW(DWORD Unknown0)
-{
- STUB
- return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL APIENTRY
-NtUserEndMenu(VOID)
-{
- STUB
-
- return 0;
-}
-
-/*
- * @implemented
- */
-/* NOTE: unused function */
-BOOL APIENTRY
-NtUserTrackPopupMenuEx(
- HMENU hMenu,
- UINT fuFlags,
- int x,
- int y,
- HWND hWnd,
- LPTPMPARAMS lptpm)
-{
- STUB
-
- return FALSE;
-}
-
DWORD APIENTRY
NtUserQuerySendMessage(DWORD Unknown0)
{
return 0;
}
-/*
- * @unimplemented
- */
-DWORD APIENTRY
-NtUserAlterWindowStyle(DWORD Unknown0,
- DWORD Unknown1,
- DWORD Unknown2)
-{
- STUB
-
- return(0);
-}
-
-/*
- * NtUserSetWindowStationUser
- *
- * Status
- * @unimplemented
- */
-
-DWORD APIENTRY
-NtUserSetWindowStationUser(
- DWORD Unknown0,
- DWORD Unknown1,
- DWORD Unknown2,
- DWORD Unknown3)
-{
- STUB
-
- return 0;
-}
-
BOOL APIENTRY NtUserAddClipboardFormatListener(
HWND hwnd
)
return FALSE;
}
-/*
- * @unimplemented
- */
+// Yes, I know, these do not belong here, just tell me where to put them
BOOL
APIENTRY
-NtUserSetSystemCursor(
- HCURSOR hcur,
- DWORD id)
+NtGdiMakeObjectXferable(
+ _In_ HANDLE hHandle,
+ _In_ DWORD dwProcessId)
{
- return FALSE;
+ STUB;
+ return 0;
+}
+
+DWORD
+APIENTRY
+NtDxEngGetRedirectionBitmap(
+ DWORD Unknown0)
+{
+ STUB;
+ return 0;
}
+
/* EOF */