REGISTER_SYSCLASS DefaultServerClasses[] =
{
-/* { ((PWSTR)((ULONG_PTR)(WORD)(0x8001))),
+ { ((PWSTR)((ULONG_PTR)(WORD)(0x8001))),
CS_GLOBALCLASS|CS_DBLCLKS,
NULL,
0,
IDC_ARROW,
- (HBRUSH)(COLOR_BACKGROUND+1),
+ (HBRUSH)(COLOR_BACKGROUND + 1),
FNID_DESKTOP,
ICLS_DESKTOP
- },*/
+ },
{ ((PWSTR)((ULONG_PTR)(WORD)(0x8003))),
CS_VREDRAW|CS_HREDRAW|CS_SAVEBITS,
NULL, // Use User32 procs
/* FIXME - Don't limit to 64 characters! use SEH when allocating memory! */
if (ClassName->Length / sizeof(WCHAR) >= sizeof(szBuf) / sizeof(szBuf[0]))
{
- SetLastWin32Error(ERROR_INVALID_PARAMETER);
+ EngSetLastError(ERROR_INVALID_PARAMETER);
return (RTL_ATOM)0;
}
}
else
{
- SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY);
+ EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
}
}
return Class;
IN OUT PCLS *BaseClassLink,
IN OUT PCLS *CloneLink)
{
- PCLS Clone, BaseClass;
+ PCLS Clone;
ASSERT(Class->pclsBase != Class);
ASSERT(Class->pclsBase->pclsClone != NULL);
*CloneLink = Class->pclsNext;
Class->pclsClone = Class->pclsBase->pclsClone;
- BaseClass = Class->pclsBase;
-
/* update the class information to make it a base class */
Class->pclsBase = Class;
Class->pclsNext = (*BaseClassLink)->pclsNext;
if (!Ret)
{
DPRINT1("Failed to move process classes from desktop 0x%p to the shared heap!\n", Desktop);
- SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY);
+ EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
}
return Ret;
IntDeregisterClassAtom(Atom);
- SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY);
+ EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
}
return Class;
/* FIXME - Don't limit to 64 characters! use SEH when allocating memory! */
if (ClassName->Length / sizeof(WCHAR) >= sizeof(szBuf) / sizeof(szBuf[0]))
{
- SetLastWin32Error(ERROR_INVALID_PARAMETER);
+ EngSetLastError(ERROR_INVALID_PARAMETER);
return (RTL_ATOM)0;
}
{
if (Status == STATUS_OBJECT_NAME_NOT_FOUND)
{
- SetLastWin32Error(ERROR_CLASS_DOES_NOT_EXIST);
+ EngSetLastError(ERROR_CLASS_DOES_NOT_EXIST);
}
else
{
Link);
if (Class == NULL)
{
- SetLastWin32Error(ERROR_CLASS_DOES_NOT_EXIST);
+ EngSetLastError(ERROR_CLASS_DOES_NOT_EXIST);
return (RTL_ATOM)0;
}else{DPRINT("Step 4: 0x%x\n",Class );}
DPRINT1("Class \"%wZ\" not found\n", ClassName);
}
- SetLastWin32Error(ERROR_CANNOT_FIND_WND_CLASS);
+ EngSetLastError(ERROR_CANNOT_FIND_WND_CLASS);
return NULL;
}
DPRINT("ClassAtom %x\n", ClassAtom);
{
// local class already exists
DPRINT("Local Class 0x%p does already exist!\n", ClassAtom);
- SetLastWin32Error(ERROR_CLASS_ALREADY_EXISTS);
+ EngSetLastError(ERROR_CLASS_ALREADY_EXISTS);
return (RTL_ATOM)0;
}
if (Class != NULL && Class->Global)
{
DPRINT("Global Class 0x%p does already exist!\n", ClassAtom);
- SetLastWin32Error(ERROR_CLASS_ALREADY_EXISTS);
+ EngSetLastError(ERROR_CLASS_ALREADY_EXISTS);
return (RTL_ATOM)0;
}
}
Class->pclsClone != NULL)
{
DPRINT("UserUnregisterClass: Class has a Window. Ct %d : Clone 0x%x\n", Class->cWndReferenceCount, Class->pclsClone);
- SetLastWin32Error(ERROR_CLASS_HAS_WINDOWS);
+ EngSetLastError(ERROR_CLASS_HAS_WINDOWS);
return FALSE;
}
}
/* allocate a temporary buffer that can hold the unicode class name */
- szTemp = ExAllocatePool(PagedPool,
- BufLen);
+ szTemp = ExAllocatePoolWithTag(PagedPool,
+ BufLen,
+ USERTAG_CLASS);
if (szTemp == NULL)
{
- SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY);
+ EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
_SEH2_LEAVE;
}
}
}
else
- SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY);
+ EngSetLastError(ERROR_NOT_ENOUGH_MEMORY);
}
else
{
if (Index + sizeof(ULONG_PTR) < Index ||
Index + sizeof(ULONG_PTR) > Class->cbclsExtra)
{
- SetLastWin32Error(ERROR_INVALID_PARAMETER);
+ EngSetLastError(ERROR_INVALID_PARAMETER);
return 0;
}
break;
case GCL_CBCLSEXTRA:
- SetLastWin32Error(ERROR_INVALID_PARAMETER);
+ EngSetLastError(ERROR_INVALID_PARAMETER);
break;
case GCLP_HBRBACKGROUND:
}
default:
- SetLastWin32Error(ERROR_INVALID_INDEX);
+ EngSetLastError(ERROR_INVALID_INDEX);
break;
}
IN BOOL Ansi,
HINSTANCE hInstance)
{
- PPROCESSINFO pi;
-
if (!Class) return FALSE;
lpwcx->style = Class->style;
if (Class->fnid)
lpwcx->style &= ~CS_GLOBALCLASS;
- pi = GetW32ProcessInfo();
-
lpwcx->lpfnWndProc = IntGetClassWndProc(Class, Ansi);
lpwcx->cbClsExtra = Class->cbclsExtra;
if (Flags & ~(CSF_ANSIPROC))
{
DPRINT1("NtUserRegisterClassExWOW Bad Flags!\n");
- SetLastWin32Error(ERROR_INVALID_FLAGS);
+ EngSetLastError(ERROR_INVALID_FLAGS);
return Ret;
}
{
DPRINT1("NtUserRegisterClassExWOW MenuName Error!\n");
InvalidParameter:
- SetLastWin32Error(ERROR_INVALID_PARAMETER);
+ EngSetLastError(ERROR_INVALID_PARAMETER);
_SEH2_LEAVE;
}
BOOL Ansi)
{
PPROCESSINFO pi;
- PWINDOW_OBJECT Window;
+ PWND Window;
ULONG_PTR Ret = 0;
UserEnterExclusive();
Window = UserGetWindowObject(hWnd);
if (Window != NULL)
{
- if (Window->pti->ppi != pi)
+ if (Window->head.pti->ppi != pi)
{
- SetLastWin32Error(ERROR_ACCESS_DENIED);
+ EngSetLastError(ERROR_ACCESS_DENIED);
goto Cleanup;
}
else if (Offset == GCLP_MENUNAME && !IS_INTRESOURCE(Value.Buffer))
{
InvalidParameter:
- SetLastWin32Error(ERROR_INVALID_PARAMETER);
+ EngSetLastError(ERROR_INVALID_PARAMETER);
_SEH2_LEAVE;
}
}
dwNewLong = (ULONG_PTR)&Value;
}
- Ret = UserSetClassLongPtr(Window->Wnd->pcls,
+ Ret = UserSetClassLongPtr(Window->pcls,
Offset,
dwNewLong,
Ansi);
if (!IS_ATOM(CapturedClassName.Buffer))
{
InvalidParameter:
- SetLastWin32Error(ERROR_INVALID_PARAMETER);
+ EngSetLastError(ERROR_INVALID_PARAMETER);
_SEH2_LEAVE;
}
}
if (CapturedClassName.Length & 1)
{
- goto InvalidParameter;
+ EngSetLastError(ERROR_INVALID_PARAMETER);
+ Ret = FALSE;
+ _SEH2_LEAVE;
}
if (CapturedClassName.Length != 0)
if (!IS_ATOM(CapturedClassName.Buffer))
{
ERR("NtUserGetClassInfo() got ClassName instead of Atom!\n");
- goto InvalidParameter;
+ EngSetLastError(ERROR_INVALID_PARAMETER);
+ Ret = FALSE;
+ _SEH2_LEAVE;
}
SafeClassName.Buffer = CapturedClassName.Buffer;
SafeClassName.MaximumLength = 0;
}
- if (ProbeForReadUint(&lpWndClassEx->cbSize) != sizeof(WNDCLASSEXW))
- {
-InvalidParameter:
- SetLastWin32Error(ERROR_INVALID_PARAMETER);
- Ret = FALSE;
- _SEH2_LEAVE;
- }
-
ProbeForWrite( lpWndClassEx, sizeof(WNDCLASSEXW), sizeof(ULONG));
RtlCopyMemory( &Safewcexw, lpWndClassEx, sizeof(WNDCLASSEXW));
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
- SetLastWin32Error(ERROR_CLASS_DOES_NOT_EXIST);
+ SetLastNtError(_SEH2_GetExceptionCode());
Ret = FALSE;
}
_SEH2_END;
}
else
{
- SetLastWin32Error(ERROR_CLASS_DOES_NOT_EXIST);
+ EngSetLastError(ERROR_CLASS_DOES_NOT_EXIST);
Ret = FALSE;
}
}
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
- SetLastWin32Error(ERROR_CLASS_DOES_NOT_EXIST);
+ EngSetLastError(ERROR_CLASS_DOES_NOT_EXIST);
Ret = FALSE;
}
_SEH2_END;
OUT PUNICODE_STRING ClassName,
IN BOOL Ansi)
{
- PWINDOW_OBJECT Window;
+ PWND Window;
UNICODE_STRING CapturedClassName;
INT Ret = 0;
CapturedClassName = *ClassName;
/* get the class name */
- Ret = UserGetClassName(Window->Wnd->pcls,
+ Ret = UserGetClassName(Window->pcls,
&CapturedClassName,
Ansi);
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
- SetLastWin32Error(ERROR_CLASS_DOES_NOT_EXIST);
+ EngSetLastError(ERROR_CLASS_DOES_NOT_EXIST);
Hit = TRUE;
}
_SEH2_END;
NULL);
if (!ClassAtom)
{
- SetLastWin32Error(ERROR_CLASS_DOES_NOT_EXIST);
+ EngSetLastError(ERROR_CLASS_DOES_NOT_EXIST);
}
}