indent with astyle v1.15.3: --style=ansi -c -s3 -S --convert-tabs

svn path=/trunk/; revision=17730
This commit is contained in:
Gunnar Dalsnes 2005-09-07 21:25:42 +00:00
parent 5d8ed11b10
commit 7c6de62098
34 changed files with 16907 additions and 16601 deletions

View file

@ -322,10 +322,14 @@ co_IntTranslateAccelerator(
DPRINT("NtUserGetKeyState(VK_MENU) = 0x%x\n",
UserGetKeyState(VK_MENU));
if (UserGetKeyState(VK_SHIFT) & 0x8000) mask |= FSHIFT;
if (UserGetKeyState(VK_CONTROL) & 0x8000) mask |= FCONTROL;
if (UserGetKeyState(VK_MENU) & 0x8000) mask |= FALT;
if (mask == (fVirt & (FSHIFT | FCONTROL | FALT))) goto found;
if (UserGetKeyState(VK_SHIFT) & 0x8000)
mask |= FSHIFT;
if (UserGetKeyState(VK_CONTROL) & 0x8000)
mask |= FCONTROL;
if (UserGetKeyState(VK_MENU) & 0x8000)
mask |= FALT;
if (mask == (fVirt & (FSHIFT | FCONTROL | FALT)))
goto found;
DPRINT("but incorrect SHIFT/CTRL/ALT-state\n");
}
else
@ -346,7 +350,7 @@ co_IntTranslateAccelerator(
return FALSE;
found:
found:
if (message == WM_KEYUP || message == WM_SYSKEYUP)
mesg = 1;
else if (IntGetCaptureWindow())
@ -424,6 +428,7 @@ co_IntTranslateAccelerator(
DPRINT1("menu search not implemented");
mesg = WM_COMMAND;
#endif
}
if (mesg == WM_COMMAND)
@ -540,10 +545,13 @@ NtUserTranslateAccelerator(
CLEANUP:
if (Window) UserDerefObjectCo(Window);
if (Accel) UserDerefObjectCo(Accel);
if (Window)
UserDerefObjectCo(Window);
if (Accel)
UserDerefObjectCo(Accel);
if (WindowStation) ObDereferenceObject(WindowStation);
if (WindowStation)
ObDereferenceObject(WindowStation);
DPRINT("NtUserTranslateAccelerator(hWnd %x, Table %x, Message %p) = %i end\n",
hWnd, hAccel, Message, 0);

View file

@ -44,7 +44,8 @@ typedef struct _INT_CALLBACK_HEADER
{
/* list entry in the W32THREAD structure */
LIST_ENTRY ListEntry;
} INT_CALLBACK_HEADER, *PINT_CALLBACK_HEADER;
}
INT_CALLBACK_HEADER, *PINT_CALLBACK_HEADER;
PVOID FASTCALL
IntCbAllocateMemory(ULONG Size)

View file

@ -318,7 +318,8 @@ IntCreateClass(
ClassObject->Global = Global;
ClassObject->hIconSm = lpwcx->hIconSm;
ClassObject->Atom = Atom;
if (wpExtra == NULL) {
if (wpExtra == NULL)
{
if (Flags & REGISTERCLASS_ANSI)
{
ClassObject->lpfnWndProcA = lpwcx->lpfnWndProc;
@ -329,7 +330,9 @@ IntCreateClass(
ClassObject->lpfnWndProcW = lpwcx->lpfnWndProc;
ClassObject->lpfnWndProcA = (WNDPROC)IntAddWndProcHandle(lpwcx->lpfnWndProc,TRUE);
}
} else {
}
else
{
if (Flags & REGISTERCLASS_ANSI)
{
ClassObject->lpfnWndProcA = lpwcx->lpfnWndProc;

View file

@ -114,12 +114,12 @@ NtUserEmptyClipboard(VOID)
{
CHECK_LOCK
// if (!hCBData)
// return FALSE;
// if (!hCBData)
// return FALSE;
// FIXME!
// GlobalUnlock(hCBData);
// GlobalFree(hCBData);
// FIXME!
// GlobalUnlock(hCBData);
// GlobalFree(hCBData);
hCBData = NULL;
uCBFormat = 0;
ClipboardWindow = tempClipboardWindow;
@ -251,7 +251,8 @@ NtUserIsClipboardFormatAvailable(UINT format)
{
//UNIMPLEMENTED
if (format != 1 && format != 13) {
if (format != 1 && format != 13)
{
DbgPrint("Clipboard Format unavailable (%d)\n", format);
return FALSE;
}
@ -269,11 +270,12 @@ NtUserIsClipboardFormatAvailable(UINT format)
HANDLE STDCALL
NtUserSetClipboardData(UINT uFormat, HANDLE hMem, DWORD Unknown2)
{
// LPVOID pMem;
// LPVOID pMem;
CHECK_LOCK
if (uFormat != 1 && uFormat != 13) {
if (uFormat != 1 && uFormat != 13)
{
DbgPrint("Clipboard unsupported format (%d)\n", uFormat);
return FALSE;
}

View file

@ -378,7 +378,7 @@ IntFindExistingCurIconObject(PWINSTATION_OBJECT WinStaObject, HMODULE hModule,
Object = CONTAINING_RECORD(CurrentEntry, CURICON_OBJECT, ListEntry);
CurrentEntry = CurrentEntry->Flink;
// if(NT_SUCCESS(ObmReferenceObjectByPointer(Object, otCursorIcon))) //<- huh????
// if(NT_SUCCESS(ObmReferenceObjectByPointer(Object, otCursorIcon))) //<- huh????
ObmReferenceObject( Object);
{
if((Object->hModule == hModule) && (Object->hRsrc == hRsrc))
@ -541,7 +541,7 @@ IntCleanupCurIcons(struct _EPROCESS *Process, PW32PROCESS Win32Process)
ObmReferenceObject(Object);
// if(NT_SUCCESS(ObmReferenceObjectByPointer(Object, otCursorIcon)))
// if(NT_SUCCESS(ObmReferenceObjectByPointer(Object, otCursorIcon)))
{
ProcessEntry = Object->ProcessList.Flink;
while (ProcessEntry != &Object->ProcessList)
@ -760,7 +760,7 @@ NtUserGetCursorIconSize(
BITMAPOBJ_UnlockBitmap(bmp);
done:
done:
IntReleaseCurIconObject(CurIconObject);
ObDereferenceObject(WinStaObject);
RETURN( Ret);
@ -813,6 +813,7 @@ NtUserGetCursorInfo(
UserEnterExclusive();
#if 1
HDC hDC;
/* FIXME - get the screen dc from the window station or desktop */
@ -968,13 +969,13 @@ NtUserDestroyCursorIcon(
ObDereferenceObject(WinStaObject);
RETURN(FALSE);
}
// Status = ObmReferenceObjectByHandle(gHandleTable, Handle, otCursorIcon, (PVOID*)&Object);
// if(!NT_SUCCESS(Status))
// {
// ObDereferenceObject(WinStaObject);
// SetLastNtError(Status);
// RETURN( FALSE);
// }
// Status = ObmReferenceObjectByHandle(gHandleTable, Handle, otCursorIcon, (PVOID*)&Object);
// if(!NT_SUCCESS(Status))
// {
// ObDereferenceObject(WinStaObject);
// SetLastNtError(Status);
// RETURN( FALSE);
// }
if(IntDestroyCurIconObject(WinStaObject, Object, FALSE))
{
@ -1203,7 +1204,7 @@ NtUserSetCursorIconContents(
Ret = TRUE;
done:
done:
IntReleaseCurIconObject(CurIconObject);
ObDereferenceObject(WinStaObject);
RETURN( Ret);
@ -1291,7 +1292,7 @@ NtUserSetCursorIconData(
Ret = TRUE;
}
done:
done:
IntReleaseCurIconObject(CurIconObject);
ObDereferenceObject(WinStaObject);
RETURN( Ret);
@ -1351,9 +1352,11 @@ NtUserDrawIconEx(
HBITMAP hbmOff = (HBITMAP)0;
HGDIOBJ hOldOffBrush = 0, hOldOffBmp = 0, hOldMem;
BOOL Ret = FALSE;
#if CANSTRETCHBLT
#if CANSTRETCHBLT
INT nStretchMode;
#endif
#endif
DECLARE_RETURN(BOOL);
DPRINT("Enter NtUserDrawIconEx\n");
@ -1431,32 +1434,39 @@ NtUserDrawIconEx(
if(!DoFlickerFree)
hdcOff = hdc;
#if CANSTRETCHBLT
#if CANSTRETCHBLT
nStretchMode = NtGdiSetStretchBltMode(hdcOff, STRETCH_DELETESCANS);
#endif
#endif
oldFg = NtGdiSetTextColor(hdcOff, RGB(0, 0, 0));
oldBg = NtGdiSetBkColor(hdcOff, RGB(255, 255, 255));
if(diFlags & DI_MASK)
{
hOldMem = NtGdiSelectObject(hdcMem, hbmMask);
#if CANSTRETCHBLT
#if CANSTRETCHBLT
NtGdiStretchBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
cxWidth, cyWidth, hdcMem, 0, 0, IconSize.cx, IconSize.cy,
((diFlags & DI_IMAGE) ? SRCAND : SRCCOPY));
#else
#else
NtGdiBitBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
cxWidth, cyWidth, hdcMem, 0, 0, ((diFlags & DI_IMAGE) ? SRCAND : SRCCOPY));
#endif
#endif
if(!hbmColor && (bmpMask.bmHeight == 2 * bmpMask.bmWidth) && (diFlags & DI_IMAGE))
{
#if CANSTRETCHBLT
#if CANSTRETCHBLT
NtGdiStretchBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
cxWidth, cyWidth, hdcMem, 0, IconSize.cy, IconSize.cx, IconSize.cy, SRCINVERT);
#else
#else
NtGdiBitBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
cxWidth, cyWidth, hdcMem, 0, IconSize.cy, SRCINVERT);
#endif
#endif
diFlags &= ~DI_IMAGE;
}
NtGdiSelectObject(hdcMem, hOldMem);
@ -1465,15 +1475,18 @@ NtUserDrawIconEx(
if(diFlags & DI_IMAGE)
{
hOldMem = NtGdiSelectObject(hdcMem, (hbmColor ? hbmColor : hbmMask));
#if CANSTRETCHBLT
#if CANSTRETCHBLT
NtGdiStretchBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
cxWidth, cyWidth, hdcMem, 0, (hbmColor ? 0 : IconSize.cy),
IconSize.cx, IconSize.cy, ((diFlags & DI_MASK) ? SRCINVERT : SRCCOPY));
#else
#else
NtGdiBitBlt(hdcOff, (DoFlickerFree ? 0 : xLeft), (DoFlickerFree ? 0 : yTop),
cxWidth, cyWidth, hdcMem, 0, (hbmColor ? 0 : IconSize.cy),
((diFlags & DI_MASK) ? SRCINVERT : SRCCOPY));
#endif
#endif
NtGdiSelectObject(hdcMem, hOldMem);
}
@ -1482,13 +1495,14 @@ NtUserDrawIconEx(
NtGdiSetTextColor(hdcOff, oldFg);
NtGdiSetBkColor(hdcOff, oldBg);
#if CANSTRETCHBLT
#if CANSTRETCHBLT
SetStretchBltMode(hdcOff, nStretchMode);
#endif
#endif
Ret = TRUE;
cleanup:
cleanup:
if(DoFlickerFree)
{
@ -1500,7 +1514,7 @@ NtUserDrawIconEx(
if(hdcMem)
NtGdiDeleteDC(hdcMem);
done:
done:
ObDereferenceObject(WinStaObject);
RETURN( Ret);

View file

@ -46,7 +46,7 @@ BOOL g_PaintDesktopVersion = FALSE;
/* INITALIZATION FUNCTIONS ****************************************************/
static GENERIC_MAPPING IntDesktopMapping =
{
{
STANDARD_RIGHTS_READ | DESKTOP_ENUMERATE | DESKTOP_READOBJECTS,
STANDARD_RIGHTS_WRITE | DESKTOP_CREATEMENU | DESKTOP_CREATEWINDOW | DESKTOP_HOOKCONTROL |
DESKTOP_JOURNALPLAYBACK | DESKTOP_JOURNALRECORD | DESKTOP_WRITEOBJECTS,
@ -54,7 +54,7 @@ static GENERIC_MAPPING IntDesktopMapping =
STANDARD_RIGHTS_REQUIRED | DESKTOP_CREATEMENU | DESKTOP_CREATEWINDOW | DESKTOP_ENUMERATE |
DESKTOP_HOOKCONTROL | DESKTOP_JOURNALPLAYBACK | DESKTOP_JOURNALRECORD |
DESKTOP_READOBJECTS | DESKTOP_SWITCHDESKTOP | DESKTOP_WRITEOBJECTS
};
};
NTSTATUS FASTCALL
InitDesktopImpl(VOID)
@ -473,7 +473,8 @@ PWINDOW_OBJECT FASTCALL UserGetDesktopWindow(VOID)
//temp hack
DeskWnd = IntGetWindowObject(pdo->DesktopWindow);
if (DeskWnd) IntReleaseWindowObject(DeskWnd);
if (DeskWnd)
IntReleaseWindowObject(DeskWnd);
return DeskWnd;
}
@ -552,6 +553,7 @@ IntHideDesktop(PDESKTOP_OBJECT Desktop)
return NotifyCsrss(&Request, &Reply);
#else
PWINDOW_OBJECT DesktopWindow;
DesktopWindow = IntGetWindowObject(Desktop->DesktopWindow);
@ -579,7 +581,8 @@ VOID co_IntShellHookNotify(WPARAM Message, LPARAM lParam)
static UINT MsgType = 0;
if (!MsgType) {
if (!MsgType)
{
/* Too bad, this doesn't work.*/
#if 0
@ -587,6 +590,7 @@ VOID co_IntShellHookNotify(WPARAM Message, LPARAM lParam)
RtlInitUnicodeString(&Str, L"SHELLHOOK");
MsgType = UserRegisterWindowMessage(&Str);
#endif
MsgType = IntAddAtom(L"SHELLHOOK");
DPRINT("MsgType = %x\n", MsgType);
@ -594,7 +598,8 @@ VOID co_IntShellHookNotify(WPARAM Message, LPARAM lParam)
DPRINT1("LastError: %x\n", GetLastNtError());
}
if (!Desktop) {
if (!Desktop)
{
DPRINT1("IntShellHookNotify: No desktop!\n");
return;
}
@ -605,7 +610,8 @@ VOID co_IntShellHookNotify(WPARAM Message, LPARAM lParam)
KeAcquireSpinLock(&Desktop->Lock, &OldLevel);
Entry = Desktop->ShellHookWindows.Flink;
while (Entry != &Desktop->ShellHookWindows) {
while (Entry != &Desktop->ShellHookWindows)
{
Current = CONTAINING_RECORD(Entry, SHELL_HOOK_WINDOW, ListEntry);
KeReleaseSpinLock(&Desktop->Lock, OldLevel);
@ -624,7 +630,8 @@ VOID co_IntShellHookNotify(WPARAM Message, LPARAM lParam)
KeAcquireSpinLock(&Desktop->Lock, &OldLevel);
Entry2 = Desktop->ShellHookWindows.Flink;
while (Entry2 != Entry &&
Entry2 != &Desktop->ShellHookWindows) {
Entry2 != &Desktop->ShellHookWindows)
{
Entry2 = Entry2->Flink;
}
@ -690,9 +697,11 @@ BOOL IntDeRegisterShellHookWindow(HWND hWnd)
KeAcquireSpinLock(&Desktop->Lock, &OldLevel);
Entry = Desktop->ShellHookWindows.Flink;
while (Entry != &Desktop->ShellHookWindows) {
while (Entry != &Desktop->ShellHookWindows)
{
Current = CONTAINING_RECORD(Entry, SHELL_HOOK_WINDOW, ListEntry);
if (Current->hWnd == hWnd) {
if (Current->hWnd == hWnd)
{
RemoveEntryList(Entry);
KeReleaseSpinLock(&Desktop->Lock, OldLevel);
ExFreePool(Entry);
@ -1235,7 +1244,8 @@ NtUserPaintDesktop(HDC hDC)
}
}
if (doPatBlt) {
if (doPatBlt)
{
PreviousBrush = NtGdiSelectObject(hDC, DesktopBrush);
NtGdiPatBlt(hDC, Rect.left, Rect.top, Rect.right, Rect.bottom, PATCOPY);
NtGdiSelectObject(hDC, PreviousBrush);
@ -1245,7 +1255,8 @@ NtUserPaintDesktop(HDC hDC)
* Display system version on the desktop background
*/
if (g_PaintDesktopVersion) {
if (g_PaintDesktopVersion)
{
static WCHAR s_wszVersion[256] = {0};
RECT rect;
@ -1254,8 +1265,10 @@ NtUserPaintDesktop(HDC hDC)
else
len = GetSystemVersionString(s_wszVersion);
if (len) {
if (!UserSystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0)) {
if (len)
{
if (!UserSystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0))
{
rect.right = UserGetSystemMetrics(SM_CXSCREEN);
rect.bottom = UserGetSystemMetrics(SM_CYSCREEN);
}

View file

@ -282,7 +282,8 @@ co_IntSetActiveWindow(PWINDOW_OBJECT Window OPTIONAL)
HWND hWndPrev;
HWND hWnd = 0;
if (Window) ASSERT_REFS_CO(Window);
if (Window)
ASSERT_REFS_CO(Window);
ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetWin32Thread()->MessageQueue;
ASSERT(ThreadQueue != 0);
@ -310,8 +311,8 @@ co_IntSetActiveWindow(PWINDOW_OBJECT Window OPTIONAL)
co_IntSendDeactivateMessages(hWndPrev, hWnd);
co_IntSendActivateMessages(hWndPrev, hWnd, FALSE);
/* FIXME */
/* return IntIsWindow(hWndPrev) ? hWndPrev : 0;*/
/* FIXME */
/* return IntIsWindow(hWndPrev) ? hWndPrev : 0;*/
return hWndPrev;
}

View file

@ -422,12 +422,12 @@ NtUserCallNextHookEx(
// otHookProc, (PVOID *) &HookObj);
ObDereferenceObject(WinStaObj);
// if (! NT_SUCCESS(Status))
// {
// DPRINT1("Invalid handle passed to NtUserCallNextHookEx\n");
// SetLastNtError(Status);
// RETURN( 0);
// }
// if (! NT_SUCCESS(Status))
// {
// DPRINT1("Invalid handle passed to NtUserCallNextHookEx\n");
// SetLastNtError(Status);
// RETURN( 0);
// }
if (!(HookObj = IntGetHookObject(Hook)))
{
@ -569,6 +569,7 @@ NtUserSetWindowsHookEx(
#else
DPRINT1("Not implemented: HookId %d Global %s\n", HookId, Global ? "TRUE" : "FALSE");
#endif
if (NULL != Thread)
{
ObDereferenceObject(Thread);
@ -713,13 +714,13 @@ NtUserUnhookWindowsHookEx(
RETURN( FALSE);
}
// Status = ObmReferenceObjectByHandle(gHandleTable, Hook,
// otHookProc, (PVOID *) &HookObj);
// Status = ObmReferenceObjectByHandle(gHandleTable, Hook,
// otHookProc, (PVOID *) &HookObj);
if (!(HookObj = IntGetHookObject(Hook)))
{
DPRINT1("Invalid handle passed to NtUserUnhookWindowsHookEx\n");
ObDereferenceObject(WinStaObj);
// SetLastNtError(Status);
// SetLastNtError(Status);
RETURN( FALSE);
}
ASSERT(Hook == HookObj->Self);

View file

@ -544,7 +544,8 @@ KeyboardThreadMain(PVOID StartContext)
if (Status == STATUS_ALERTED && !InputThreadsRunning)
goto KeyboardEscape;
} while ((!(NextKeyInput.Flags & KEY_BREAK)) &&
}
while ((!(NextKeyInput.Flags & KEY_BREAK)) &&
NextKeyInput.MakeCode == KeyInput.MakeCode);
/* ^ Ignore repeats, they'll be KEY_MAKE and the same
* code. I'm not caring about the counting, not sure
@ -656,7 +657,8 @@ KeyboardThreadMain(PVOID StartContext)
* (ctrl-alt-del secure attention sequence). Not sure if it
* can happen though.
*/
if (!FocusQueue) continue;
if (!FocusQueue)
continue;
msg.lParam = lParam;
msg.hwnd = FocusQueue->FocusWindow;
@ -876,9 +878,17 @@ IntSwapMouseButton(PWINSTATION_OBJECT WinStaObject, BOOL Swap)
BOOL FASTCALL
IntMouseInput(MOUSEINPUT *mi)
{
const UINT SwapBtnMsg[2][2] = {{WM_LBUTTONDOWN, WM_RBUTTONDOWN},
{WM_LBUTTONUP, WM_RBUTTONUP}};
const WPARAM SwapBtn[2] = {MK_LBUTTON, MK_RBUTTON};
const UINT SwapBtnMsg[2][2] =
{
{
WM_LBUTTONDOWN, WM_RBUTTONDOWN
},
{WM_LBUTTONUP, WM_RBUTTONUP}
};
const WPARAM SwapBtn[2] =
{
MK_LBUTTON, MK_RBUTTON
};
POINT MousePos, OrgPos;
PSYSTEM_CURSORINFO CurInfo;
PWINSTATION_OBJECT WinSta;
@ -891,6 +901,7 @@ IntMouseInput(MOUSEINPUT *mi)
PWINDOW_OBJECT DesktopWindow;
#if 1
HDC hDC;
/* FIXME - get the screen dc from the window station or desktop */
@ -902,6 +913,7 @@ IntMouseInput(MOUSEINPUT *mi)
ASSERT(mi);
#if 0
WinSta = PsGetWin32Process()->WindowStation;
#else
/* FIXME - ugly hack but as long as we're using this dumb callback from the
@ -909,6 +921,7 @@ IntMouseInput(MOUSEINPUT *mi)
process */
WinSta = InputWindowStation;
#endif
ASSERT(WinSta);
CurInfo = IntGetSysCursorInfo(WinSta);
@ -1182,10 +1195,12 @@ NtUserSendInput(
case INPUT_HARDWARE:
break;
#ifndef NDEBUG
default:
DPRINT1("SendInput(): Invalid input type: 0x%x\n", SafeInput.type);
break;
#endif
}
}

View file

@ -63,7 +63,8 @@ BYTE QueueKeyStateTable[256];
/* FUNCTIONS *****************************************************************/
/* Initialization -- Right now, just zero the key state and init the lock */
NTSTATUS FASTCALL InitKeyboardImpl(VOID) {
NTSTATUS FASTCALL InitKeyboardImpl(VOID)
{
ExInitializeFastMutex(&QueueStateLock);
RtlZeroMemory(&QueueKeyStateTable,0x100);
return STATUS_SUCCESS;
@ -73,19 +74,26 @@ NTSTATUS FASTCALL InitKeyboardImpl(VOID) {
/*** Shift state code was out of hand, sorry. --- arty */
static UINT DontDistinguishShifts( UINT ret ) {
if( ret == VK_LSHIFT || ret == VK_RSHIFT ) ret = VK_LSHIFT;
if( ret == VK_LCONTROL || ret == VK_RCONTROL ) ret = VK_LCONTROL;
if( ret == VK_LMENU || ret == VK_RMENU ) ret = VK_LMENU;
static UINT DontDistinguishShifts( UINT ret )
{
if( ret == VK_LSHIFT || ret == VK_RSHIFT )
ret = VK_LSHIFT;
if( ret == VK_LCONTROL || ret == VK_RCONTROL )
ret = VK_LCONTROL;
if( ret == VK_LMENU || ret == VK_RMENU )
ret = VK_LMENU;
return ret;
}
static VOID STDCALL SetKeyState(DWORD key, DWORD vk, DWORD ext, BOOL down) {
static VOID STDCALL SetKeyState(DWORD key, DWORD vk, DWORD ext, BOOL down)
{
ASSERT(vk <= 0xff);
/* Special handling for toggles like numpad and caps lock */
if (vk == VK_CAPITAL || vk == VK_NUMLOCK) {
if (down) QueueKeyStateTable[vk] ^= KS_LOCK_BIT;
if (vk == VK_CAPITAL || vk == VK_NUMLOCK)
{
if (down)
QueueKeyStateTable[vk] ^= KS_LOCK_BIT;
}
if (ext && vk == VK_LSHIFT)
@ -100,47 +108,64 @@ static VOID STDCALL SetKeyState(DWORD key, DWORD vk, DWORD ext, BOOL down) {
else
QueueKeyStateTable[vk] &= ~KS_DOWN_MASK;
if (vk == VK_LSHIFT || vk == VK_RSHIFT) {
if (vk == VK_LSHIFT || vk == VK_RSHIFT)
{
if ((QueueKeyStateTable[VK_LSHIFT] & KS_DOWN_BIT) ||
(QueueKeyStateTable[VK_RSHIFT] & KS_DOWN_BIT)) {
(QueueKeyStateTable[VK_RSHIFT] & KS_DOWN_BIT))
{
QueueKeyStateTable[VK_SHIFT] |= KS_DOWN_BIT;
} else {
}
else
{
QueueKeyStateTable[VK_SHIFT] &= ~KS_DOWN_MASK;
}
}
if (vk == VK_LCONTROL || vk == VK_RCONTROL) {
if (vk == VK_LCONTROL || vk == VK_RCONTROL)
{
if ((QueueKeyStateTable[VK_LCONTROL] & KS_DOWN_BIT) ||
(QueueKeyStateTable[VK_RCONTROL] & KS_DOWN_BIT)) {
(QueueKeyStateTable[VK_RCONTROL] & KS_DOWN_BIT))
{
QueueKeyStateTable[VK_CONTROL] |= KS_DOWN_BIT;
} else {
}
else
{
QueueKeyStateTable[VK_CONTROL] &= ~KS_DOWN_MASK;
}
}
if (vk == VK_LMENU || vk == VK_RMENU) {
if (vk == VK_LMENU || vk == VK_RMENU)
{
if ((QueueKeyStateTable[VK_LMENU] & KS_DOWN_BIT) ||
(QueueKeyStateTable[VK_RMENU] & KS_DOWN_BIT)) {
(QueueKeyStateTable[VK_RMENU] & KS_DOWN_BIT))
{
QueueKeyStateTable[VK_MENU] |= KS_DOWN_BIT;
} else {
}
else
{
QueueKeyStateTable[VK_MENU] &= ~KS_DOWN_MASK;
}
}
}
VOID DumpKeyState( PBYTE KeyState ) {
VOID DumpKeyState( PBYTE KeyState )
{
int i;
DbgPrint( "KeyState { " );
for( i = 0; i < 0x100; i++ ) {
if( KeyState[i] ) DbgPrint( "%02x(%02x) ", i, KeyState[i] );
for( i = 0; i < 0x100; i++ )
{
if( KeyState[i] )
DbgPrint( "%02x(%02x) ", i, KeyState[i] );
}
DbgPrint( "};\n" );
}
static BYTE KeysSet( PKBDTABLES pkKT, PBYTE KeyState,
int FakeModLeft, int FakeModRight ) {
if( !KeyState || !pkKT ) return 0;
int FakeModLeft, int FakeModRight )
{
if( !KeyState || !pkKT )
return 0;
/* Search special codes first */
if( FakeModLeft && KeyState[FakeModLeft] )
@ -155,7 +180,8 @@ static BYTE KeysSet( PKBDTABLES pkKT, PBYTE KeyState,
* want to count on the shift bit not moving, because it can be specified
* in the layout */
static DWORD FASTCALL GetShiftBit( PKBDTABLES pkKT, DWORD Vk ) {
static DWORD FASTCALL GetShiftBit( PKBDTABLES pkKT, DWORD Vk )
{
int i;
for( i = 0; pkKT->pCharModifiers->pVkToBit[i].Vk; i++ )
@ -165,10 +191,12 @@ static DWORD FASTCALL GetShiftBit( PKBDTABLES pkKT, DWORD Vk ) {
return 0;
}
static DWORD ModBits( PKBDTABLES pkKT, PBYTE KeyState ) {
static DWORD ModBits( PKBDTABLES pkKT, PBYTE KeyState )
{
DWORD ModBits = 0;
if( !KeyState ) return 0;
if( !KeyState )
return 0;
/* DumpKeyState( KeyState ); */
@ -241,7 +269,8 @@ static BOOL TryToTranslateChar(WORD wVirtKey,
[ModBits ^
((CapsState & CAPITAL_BIT) ? vkPtr->Attributes : 0)];
if( CapsMod > keyLayout->pVkToWcharTable[nMod].nModifications ) {
if( CapsMod > keyLayout->pVkToWcharTable[nMod].nModifications )
{
DWORD MaxBit = 1;
while( MaxBit <
keyLayout->pVkToWcharTable[nMod].nModifications )
@ -292,7 +321,8 @@ ToUnicodeInner(UINT wVirtKey,
BOOL bDead;
BOOL bLigature;
if( !pkKT ) return 0;
if( !pkKT )
return 0;
if( TryToTranslateChar( wVirtKey,
ModBits( pkKT, lpKeyState ),
@ -307,7 +337,8 @@ ToUnicodeInner(UINT wVirtKey,
return 0;
}
if( cchBuff > 0 ) pwszBuff[0] = wcTranslatedChar;
if( cchBuff > 0 )
pwszBuff[0] = wcTranslatedChar;
return bDead ? -1 : 1;
}
@ -321,7 +352,8 @@ DWORD FASTCALL UserGetKeyState(DWORD key)
DWORD ret = 0;
IntLockQueueState;
if( key < 0x100 ) {
if( key < 0x100 )
{
ret = ((DWORD)(QueueKeyStateTable[key] & KS_DOWN_BIT) << 8 ) |
(QueueKeyStateTable[key] & KS_LOCK_BIT);
}
@ -355,7 +387,8 @@ DWORD FASTCALL UserGetAsyncKeyState(DWORD key)
DWORD ret = 0;
IntLockQueueState;
if( key < 0x100 ) {
if( key < 0x100 )
{
ret = ((DWORD)(QueueKeyStateTable[key] & KS_DOWN_BIT) << 8 ) |
(QueueKeyStateTable[key] & KS_LOCK_BIT);
}
@ -391,7 +424,8 @@ int STDCALL ToUnicodeEx( UINT wVirtKey,
LPWSTR pwszBuff,
int cchBuff,
UINT wFlags,
HKL dwhkl ) {
HKL dwhkl )
{
int ToUnicodeResult = 0;
if (0 == (lpKeyState[wVirtKey] & KS_DOWN_BIT))
@ -420,7 +454,8 @@ int STDCALL ToUnicode( UINT wVirtKey,
PBYTE lpKeyState,
LPWSTR pwszBuff,
int cchBuff,
UINT wFlags ) {
UINT wFlags )
{
return ToUnicodeEx( wVirtKey,
wScanCode,
QueueKeyStateTable,
@ -443,13 +478,15 @@ int STDCALL ToUnicode( UINT wVirtKey,
NTSTATUS NTAPI AppendUnicodeString(PUNICODE_STRING ResultFirst,
PUNICODE_STRING Second,
BOOL Deallocate) {
BOOL Deallocate)
{
NTSTATUS Status;
PWSTR new_string =
ExAllocatePoolWithTag(PagedPool,
(ResultFirst->Length + Second->Length + sizeof(WCHAR)),
TAG_STRING);
if( !new_string ) {
if( !new_string )
{
return STATUS_NO_MEMORY;
}
memcpy( new_string, ResultFirst->Buffer,
@ -457,7 +494,8 @@ NTSTATUS NTAPI AppendUnicodeString(PUNICODE_STRING ResultFirst,
memcpy( new_string + ResultFirst->Length / sizeof(WCHAR),
Second->Buffer,
Second->Length );
if( Deallocate ) RtlFreeUnicodeString(ResultFirst);
if( Deallocate )
RtlFreeUnicodeString(ResultFirst);
ResultFirst->Length += Second->Length;
ResultFirst->MaximumLength = ResultFirst->Length;
new_string[ResultFirst->Length / sizeof(WCHAR)] = 0;
@ -479,7 +517,8 @@ NTSTATUS NTAPI AppendUnicodeString(PUNICODE_STRING ResultFirst,
static NTSTATUS NTAPI ReadRegistryValue( PUNICODE_STRING KeyName,
PUNICODE_STRING ValueName,
PUNICODE_STRING ReturnedValue ) {
PUNICODE_STRING ReturnedValue )
{
NTSTATUS Status;
HANDLE KeyHandle;
OBJECT_ATTRIBUTES KeyAttributes;
@ -491,7 +530,8 @@ static NTSTATUS NTAPI ReadRegistryValue( PUNICODE_STRING KeyName,
InitializeObjectAttributes(&KeyAttributes, KeyName, OBJ_CASE_INSENSITIVE,
NULL, NULL);
Status = ZwOpenKey(&KeyHandle, KEY_ALL_ACCESS, &KeyAttributes);
if( !NT_SUCCESS(Status) ) {
if( !NT_SUCCESS(Status) )
{
return Status;
}
@ -500,7 +540,8 @@ static NTSTATUS NTAPI ReadRegistryValue( PUNICODE_STRING KeyName,
0,
&ResLength);
if( Status != STATUS_BUFFER_TOO_SMALL ) {
if( Status != STATUS_BUFFER_TOO_SMALL )
{
NtClose(KeyHandle);
return Status;
}
@ -510,7 +551,8 @@ static NTSTATUS NTAPI ReadRegistryValue( PUNICODE_STRING KeyName,
ExAllocatePoolWithTag(PagedPool, ResLength, TAG_STRING);
Length = ResLength;
if( !KeyValuePartialInfo ) {
if( !KeyValuePartialInfo )
{
NtClose(KeyHandle);
return STATUS_NO_MEMORY;
}
@ -520,7 +562,8 @@ static NTSTATUS NTAPI ReadRegistryValue( PUNICODE_STRING KeyName,
Length,
&ResLength);
if( !NT_SUCCESS(Status) ) {
if( !NT_SUCCESS(Status) )
{
NtClose(KeyHandle);
ExFreePool(KeyValuePartialInfo);
return Status;
@ -560,9 +603,10 @@ void InitKbdLayout( PVOID *pkKeyboardLayout )
ANSI_STRING kbdProcedureName;
KbdLayerDescriptor layerDescGetFn;
#define XX_STATUS(x) if (!NT_SUCCESS(Status = (x))) continue;
#define XX_STATUS(x) if (!NT_SUCCESS(Status = (x))) continue;
do {
do
{
Status = ZwQueryDefaultLocale(FALSE, &LocaleId);
if (!NT_SUCCESS(Status))
{
@ -586,10 +630,13 @@ void InitKbdLayout( PVOID *pkKeyboardLayout )
Status = ReadRegistryValue(&LayoutKeyName,&LayoutValueName,&LayoutFile);
RtlInitUnicodeString(&FullLayoutPath,SYSTEMROOT_DIR);
if( !NT_SUCCESS(Status) ) {
if( !NT_SUCCESS(Status) )
{
DPRINT1("Got default locale but not layout file. (%08lx)\n",
Status);
} else {
}
else
{
DPRINT("Read registry and got %wZ\n", &LayoutFile);
RtlFreeUnicodeString(&LayoutKeyName);
@ -605,7 +652,8 @@ void InitKbdLayout( PVOID *pkKeyboardLayout )
FullLayoutPath.Length + sizeof(WCHAR),
TAG_STRING);
if( !KeyboardLayoutWSTR ) {
if( !KeyboardLayoutWSTR )
{
DPRINT1("Couldn't allocate a string for the keyboard layout name.\n");
RtlFreeUnicodeString(&FullLayoutPath);
return;
@ -643,19 +691,23 @@ void InitKbdLayout( PVOID *pkKeyboardLayout )
0,
(PVOID*)&layerDescGetFn);
if( layerDescGetFn ) {
if( layerDescGetFn )
{
*pkKeyboardLayout = layerDescGetFn();
}
} while (FALSE);
}
while (FALSE);
if( !*pkKeyboardLayout ) {
if( !*pkKeyboardLayout )
{
DPRINT1("Failed to load the keyboard layout.\n");
}
#undef XX_STATUS
}
PKBDTABLES W32kGetDefaultKeyLayout() {
PKBDTABLES W32kGetDefaultKeyLayout()
{
PKBDTABLES pkKeyboardLayout = 0;
InitKbdLayout( (PVOID) &pkKeyboardLayout );
return pkKeyboardLayout;
@ -757,7 +809,8 @@ NtUserGetKeyboardState(
BOOL Result = TRUE;
IntLockQueueState;
if (lpKeyState) {
if (lpKeyState)
{
if(!NT_SUCCESS(MmCopyToCaller(lpKeyState, QueueKeyStateTable, 256)))
Result = FALSE;
}
@ -773,7 +826,8 @@ NtUserSetKeyboardState(
BOOL Result = TRUE;
IntLockQueueState;
if (lpKeyState) {
if (lpKeyState)
{
if(! NT_SUCCESS(MmCopyFromCaller(QueueKeyStateTable, lpKeyState, 256)))
Result = FALSE;
}
@ -782,37 +836,52 @@ NtUserSetKeyboardState(
return Result;
}
static UINT VkToScan( UINT Code, BOOL ExtCode, PKBDTABLES pkKT ) {
static UINT VkToScan( UINT Code, BOOL ExtCode, PKBDTABLES pkKT )
{
int i;
for( i = 0; i < pkKT->bMaxVSCtoVK; i++ ) {
if( pkKT->pusVSCtoVK[i] == Code ) { return i; }
for( i = 0; i < pkKT->bMaxVSCtoVK; i++ )
{
if( pkKT->pusVSCtoVK[i] == Code )
{
return i;
}
}
return 0;
}
UINT ScanToVk( UINT Code, BOOL ExtKey, PKBDTABLES pkKT ) {
if( !pkKT ) {
UINT ScanToVk( UINT Code, BOOL ExtKey, PKBDTABLES pkKT )
{
if( !pkKT )
{
DPRINT("ScanToVk: No layout\n");
return 0;
}
if( ExtKey ) {
if( ExtKey )
{
int i;
for( i = 0; pkKT->pVSCtoVK_E0[i].Vsc; i++ ) {
for( i = 0; pkKT->pVSCtoVK_E0[i].Vsc; i++ )
{
if( pkKT->pVSCtoVK_E0[i].Vsc == Code )
return pkKT->pVSCtoVK_E0[i].Vk & 0xff;
}
for( i = 0; pkKT->pVSCtoVK_E1[i].Vsc; i++ ) {
for( i = 0; pkKT->pVSCtoVK_E1[i].Vsc; i++ )
{
if( pkKT->pVSCtoVK_E1[i].Vsc == Code )
return pkKT->pVSCtoVK_E1[i].Vk & 0xff;
}
return 0;
} else {
if( Code >= pkKT->bMaxVSCtoVK ) { return 0; }
}
else
{
if( Code >= pkKT->bMaxVSCtoVK )
{
return 0;
}
return pkKT->pusVSCtoVK[Code] & 0xff;
}
}
@ -836,14 +905,19 @@ UINT ScanToVk( UINT Code, BOOL ExtKey, PKBDTABLES pkKT ) {
* @implemented
*/
static UINT IntMapVirtualKeyEx( UINT Code, UINT Type, PKBDTABLES keyLayout ) {
static UINT IntMapVirtualKeyEx( UINT Code, UINT Type, PKBDTABLES keyLayout )
{
UINT ret = 0;
switch( Type ) {
switch( Type )
{
case 0:
if( Code == VK_RSHIFT ) Code = VK_LSHIFT;
if( Code == VK_RMENU ) Code = VK_LMENU;
if( Code == VK_RCONTROL ) Code = VK_LCONTROL;
if( Code == VK_RSHIFT )
Code = VK_LSHIFT;
if( Code == VK_RMENU )
Code = VK_LMENU;
if( Code == VK_RCONTROL )
Code = VK_LCONTROL;
ret = VkToScan( Code, FALSE, keyLayout );
break;
@ -853,13 +927,15 @@ static UINT IntMapVirtualKeyEx( UINT Code, UINT Type, PKBDTABLES keyLayout ) {
(IntMapVirtualKeyEx( Code, 3, keyLayout ) );
break;
case 2: {
case 2:
{
WCHAR wp[2];
ret = VkToScan( Code, FALSE, keyLayout );
ToUnicodeInner( Code, ret, 0, wp, 2, 0, keyLayout );
ret = wp[0];
} break;
}
break;
case 3:
@ -872,11 +948,13 @@ static UINT IntMapVirtualKeyEx( UINT Code, UINT Type, PKBDTABLES keyLayout ) {
UINT
STDCALL
NtUserMapVirtualKeyEx( UINT Code, UINT Type, DWORD keyboardId, HKL dwhkl ) {
NtUserMapVirtualKeyEx( UINT Code, UINT Type, DWORD keyboardId, HKL dwhkl )
{
PKBDTABLES keyLayout = PsGetWin32Thread() ?
PsGetWin32Thread()->KeyboardLayout : 0;
if( !keyLayout ) return 0;
if( !keyLayout )
return 0;
return IntMapVirtualKeyEx( Code, Type, keyLayout );
}
@ -891,7 +969,8 @@ NtUserToUnicodeEx(
LPWSTR pwszBuff,
int cchBuff,
UINT wFlags,
HKL dwhkl ) {
HKL dwhkl )
{
BYTE KeyStateBuf[0x100];
PWCHAR OutPwszBuff = 0;
int ret = 0;
@ -899,12 +978,14 @@ NtUserToUnicodeEx(
if( !NT_SUCCESS(MmCopyFromCaller(KeyStateBuf,
lpKeyState,
sizeof(KeyStateBuf))) ) {
sizeof(KeyStateBuf))) )
{
DPRINT1( "Couldn't copy key state from caller.\n" );
return 0;
}
OutPwszBuff = ExAllocatePoolWithTag(NonPagedPool,sizeof(WCHAR) * cchBuff, TAG_STRING);
if( !OutPwszBuff ) {
if( !OutPwszBuff )
{
DPRINT1( "ExAllocatePool(%d) failed\n", sizeof(WCHAR) * cchBuff);
return 0;
}
@ -924,14 +1005,17 @@ NtUserToUnicodeEx(
return ret;
}
static int W32kSimpleToupper( int ch ) {
if( ch >= 'a' && ch <= 'z' ) ch = ch - 'a' + 'A';
static int W32kSimpleToupper( int ch )
{
if( ch >= 'a' && ch <= 'z' )
ch = ch - 'a' + 'A';
return ch;
}
DWORD
STDCALL
NtUserGetKeyNameText( LONG lParam, LPWSTR lpString, int nSize ) {
NtUserGetKeyNameText( LONG lParam, LPWSTR lpString, int nSize )
{
int i;
DWORD ret = 0;
UINT CareVk = 0;
@ -942,9 +1026,11 @@ NtUserGetKeyNameText( LONG lParam, LPWSTR lpString, int nSize ) {
PsGetWin32Thread() ?
PsGetWin32Thread()->KeyboardLayout : 0;
if( !keyLayout || nSize < 1 ) return 0;
if( !keyLayout || nSize < 1 )
return 0;
if( lParam & (1<<25) ) {
if( lParam & (1<<25) )
{
CareVk = VkCode = ScanToVk( ScanCode, ExtKey, keyLayout );
if( VkCode == VK_LSHIFT || VkCode == VK_RSHIFT )
VkCode = VK_LSHIFT;
@ -952,7 +1038,9 @@ NtUserGetKeyNameText( LONG lParam, LPWSTR lpString, int nSize ) {
VkCode = VK_LCONTROL;
if( VkCode == VK_LMENU || VkCode == VK_RMENU )
VkCode = VK_LMENU;
} else {
}
else
{
VkCode = ScanToVk( ScanCode, ExtKey, keyLayout );
}
@ -966,8 +1054,10 @@ NtUserGetKeyNameText( LONG lParam, LPWSTR lpString, int nSize ) {
else
KeyNames = keyLayout->pKeyNames;
for( i = 0; KeyNames[i].pwsz; i++ ) {
if( KeyNames[i].vsc == ScanCode ) {
for( i = 0; KeyNames[i].pwsz; i++ )
{
if( KeyNames[i].vsc == ScanCode )
{
UINT StrLen = wcslen(KeyNames[i].pwsz);
UINT StrMax = StrLen > (nSize - 1) ? (nSize - 1) : StrLen;
WCHAR null_wc = 0;
@ -976,14 +1066,16 @@ NtUserGetKeyNameText( LONG lParam, LPWSTR lpString, int nSize ) {
StrMax * sizeof(WCHAR) ) ) &&
NT_SUCCESS( MmCopyToCaller( lpString + StrMax,
&null_wc,
sizeof( WCHAR ) ) ) ) {
sizeof( WCHAR ) ) ) )
{
ret = StrMax;
break;
}
}
}
if( ret == 0 ) {
if( ret == 0 )
{
WCHAR UCName[2];
UCName[0] = W32kSimpleToupper(IntMapVirtualKeyEx( VkCode, 2, keyLayout ));
@ -1114,9 +1206,12 @@ W32kKeyProcessMessage(LPMSG Msg,
}
/* We need to unset SYSKEYDOWN if the ALT key is an ALT+Gr */
if( QueueKeyStateTable[VK_RMENU] & KS_DOWN_BIT ) {
if( Msg->message == WM_SYSKEYDOWN ) Msg->message = WM_KEYDOWN;
else Msg->message = WM_KEYUP;
if( QueueKeyStateTable[VK_RMENU] & KS_DOWN_BIT )
{
if( Msg->message == WM_SYSKEYDOWN )
Msg->message = WM_KEYDOWN;
else
Msg->message = WM_KEYUP;
}
IntUnLockQueueState;
@ -1167,7 +1262,8 @@ UserGetKeyboardLayout(
W32Thread = Thread->Tcb.Win32Thread;
}
layout = W32Thread->KeyboardLayout;
if(!layout) return 0;
if(!layout)
return 0;
return (HKL)layout;
}
@ -1236,7 +1332,8 @@ NtUserVkKeyScanEx(
int nMod;
DWORD CapsMod = 0, CapsState = 0;
if(!KeyboardLayout) return -1;
if(!KeyboardLayout)
return -1;
KeyLayout = (PKBDTABLES) KeyboardLayout;
for (nMod = 0; KeyLayout->pVkToWcharTable[nMod].nModifications; nMod++)

View file

@ -139,23 +139,39 @@ DumpMenuItemList(PMENU_ITEM MenuItem)
else
DbgPrint(" %d. NO TEXT dwTypeData==%d\n", ++cnt, (DWORD)MenuItem->Text.Buffer);
DbgPrint(" fType=");
if(MFT_BITMAP & MenuItem->fType) DbgPrint("MFT_BITMAP ");
if(MFT_MENUBARBREAK & MenuItem->fType) DbgPrint("MFT_MENUBARBREAK ");
if(MFT_MENUBREAK & MenuItem->fType) DbgPrint("MFT_MENUBREAK ");
if(MFT_OWNERDRAW & MenuItem->fType) DbgPrint("MFT_OWNERDRAW ");
if(MFT_RADIOCHECK & MenuItem->fType) DbgPrint("MFT_RADIOCHECK ");
if(MFT_RIGHTJUSTIFY & MenuItem->fType) DbgPrint("MFT_RIGHTJUSTIFY ");
if(MFT_SEPARATOR & MenuItem->fType) DbgPrint("MFT_SEPARATOR ");
if(MFT_STRING & MenuItem->fType) DbgPrint("MFT_STRING ");
if(MFT_BITMAP & MenuItem->fType)
DbgPrint("MFT_BITMAP ");
if(MFT_MENUBARBREAK & MenuItem->fType)
DbgPrint("MFT_MENUBARBREAK ");
if(MFT_MENUBREAK & MenuItem->fType)
DbgPrint("MFT_MENUBREAK ");
if(MFT_OWNERDRAW & MenuItem->fType)
DbgPrint("MFT_OWNERDRAW ");
if(MFT_RADIOCHECK & MenuItem->fType)
DbgPrint("MFT_RADIOCHECK ");
if(MFT_RIGHTJUSTIFY & MenuItem->fType)
DbgPrint("MFT_RIGHTJUSTIFY ");
if(MFT_SEPARATOR & MenuItem->fType)
DbgPrint("MFT_SEPARATOR ");
if(MFT_STRING & MenuItem->fType)
DbgPrint("MFT_STRING ");
DbgPrint("\n fState=");
if(MFS_DISABLED & MenuItem->fState) DbgPrint("MFS_DISABLED ");
else DbgPrint("MFS_ENABLED ");
if(MFS_CHECKED & MenuItem->fState) DbgPrint("MFS_CHECKED ");
else DbgPrint("MFS_UNCHECKED ");
if(MFS_HILITE & MenuItem->fState) DbgPrint("MFS_HILITE ");
else DbgPrint("MFS_UNHILITE ");
if(MFS_DEFAULT & MenuItem->fState) DbgPrint("MFS_DEFAULT ");
if(MFS_GRAYED & MenuItem->fState) DbgPrint("MFS_GRAYED ");
if(MFS_DISABLED & MenuItem->fState)
DbgPrint("MFS_DISABLED ");
else
DbgPrint("MFS_ENABLED ");
if(MFS_CHECKED & MenuItem->fState)
DbgPrint("MFS_CHECKED ");
else
DbgPrint("MFS_UNCHECKED ");
if(MFS_HILITE & MenuItem->fState)
DbgPrint("MFS_HILITE ");
else
DbgPrint("MFS_UNHILITE ");
if(MFS_DEFAULT & MenuItem->fState)
DbgPrint("MFS_DEFAULT ");
if(MFS_GRAYED & MenuItem->fState)
DbgPrint("MFS_GRAYED ");
DbgPrint("\n wId=%d\n", MenuItem->wID);
MenuItem = MenuItem->Next;
}
@ -529,13 +545,17 @@ IntGetMenuItemByFlag(PMENU_OBJECT Menu, UINT uSearchBy, UINT fFlag,
}
if(CurItem)
{
if(MenuItem) *MenuItem = CurItem;
if(PrevMenuItem) *PrevMenuItem = PrevItem;
if(MenuItem)
*MenuItem = CurItem;
if(PrevMenuItem)
*PrevMenuItem = PrevItem;
}
else
{
if(MenuItem) *MenuItem = NULL;
if(PrevMenuItem) *PrevMenuItem = NULL; /* ? */
if(MenuItem)
*MenuItem = NULL;
if(PrevMenuItem)
*PrevMenuItem = NULL; /* ? */
return -1;
}
@ -548,8 +568,10 @@ IntGetMenuItemByFlag(PMENU_OBJECT Menu, UINT uSearchBy, UINT fFlag,
{
if(CurItem->wID == uSearchBy)
{
if(MenuItem) *MenuItem = CurItem;
if(PrevMenuItem) *PrevMenuItem = PrevItem;
if(MenuItem)
*MenuItem = CurItem;
if(PrevMenuItem)
*PrevMenuItem = PrevItem;
return p;
}
else if (0 != (CurItem->fType & MF_POPUP))
@ -1700,12 +1722,15 @@ NtUserGetMenuItemRect(
if(!hWnd)
{
if(!UserMenuInfo(Menu, &mi, FALSE)) RETURN( FALSE);
if(mi.Wnd == 0) RETURN( FALSE);
if(!UserMenuInfo(Menu, &mi, FALSE))
RETURN( FALSE);
if(mi.Wnd == 0)
RETURN( FALSE);
referenceHwnd = mi.Wnd;
}
if (lprcItem == NULL) RETURN( FALSE);
if (lprcItem == NULL)
RETURN( FALSE);
*lpRect = mii.Rect;
lpPoints = (LPPOINT)lpRect;
@ -2184,7 +2209,7 @@ NtUserThunkedMenuItemInfo(
/*
* @implemented
*/
/* NOTE: unused function */
/* NOTE: unused function */
BOOL STDCALL
NtUserTrackPopupMenuEx(
HMENU hMenu,

View file

@ -39,7 +39,8 @@ typedef struct
UINT uFlags;
UINT uTimeout;
ULONG_PTR Result;
} DOSENDMESSAGE, *PDOSENDMESSAGE;
}
DOSENDMESSAGE, *PDOSENDMESSAGE;
/* FUNCTIONS *****************************************************************/
@ -63,11 +64,12 @@ IntCleanupMessageImpl(VOID)
#define MMS_FLAG_WRITE 0x02
#define MMS_FLAG_READWRITE (MMS_FLAG_READ | MMS_FLAG_WRITE)
typedef struct tagMSGMEMORY
{
{
UINT Message;
UINT Size;
INT Flags;
} MSGMEMORY, *PMSGMEMORY;
}
MSGMEMORY, *PMSGMEMORY;
static MSGMEMORY MsgMemory[] =
{
@ -88,7 +90,7 @@ static MSGMEMORY MsgMemory[] =
static PMSGMEMORY FASTCALL
FindMsgMemory(UINT Msg)
{
{
PMSGMEMORY MsgMemoryEntry;
/* See if this message type is present in the table */
@ -301,7 +303,8 @@ NtUserCallMsgFilter(
DPRINT("Enter NtUserCallMsgFilter\n");
UserEnterExclusive();
if (co_HOOK_CallHooks( WH_SYSMSGFILTER, code, 0, (LPARAM)msg)) RETURN( TRUE);
if (co_HOOK_CallHooks( WH_SYSMSGFILTER, code, 0, (LPARAM)msg))
RETURN( TRUE);
RETURN( co_HOOK_CallHooks( WH_MSGFILTER, code, 0, (LPARAM)msg));
CLEANUP:
@ -667,7 +670,7 @@ co_IntPeekMessage(PUSER_MESSAGE Msg,
/* FIXME: The only flag we process is PM_REMOVE - processing of others must still be implemented */
RemoveMessages = RemoveMsg & PM_REMOVE;
CheckMessages:
CheckMessages:
Present = FALSE;
@ -675,7 +678,8 @@ co_IntPeekMessage(PUSER_MESSAGE Msg,
ThreadQueue->LastMsgRead = LargeTickCount.u.LowPart;
/* Dispatch sent messages here. */
while (co_MsqDispatchOneSentMessage(ThreadQueue));
while (co_MsqDispatchOneSentMessage(ThreadQueue))
;
/* Now look for a quit message. */
@ -732,7 +736,8 @@ co_IntPeekMessage(PUSER_MESSAGE Msg,
}
/* Check for sent messages again. */
while (co_MsqDispatchOneSentMessage(ThreadQueue));
while (co_MsqDispatchOneSentMessage(ThreadQueue))
;
/* Check for paint messages. */
if (IntGetPaintMessage(Wnd, MsgFilterMin, MsgFilterMax, PsGetWin32Thread(), &Msg->Msg, RemoveMessages))
@ -752,7 +757,7 @@ co_IntPeekMessage(PUSER_MESSAGE Msg,
if(Present)
{
MessageFound:
MessageFound:
if(RemoveMessages)
{
@ -1270,7 +1275,8 @@ NtUserPostThreadMessage(DWORD idThread,
Status = PsLookupThreadByThreadId((HANDLE)idThread,&peThread);
if( Status == STATUS_SUCCESS ) {
if( Status == STATUS_SUCCESS )
{
pThread = peThread->Tcb.Win32Thread;
if( !pThread || !pThread->MessageQueue )
{
@ -1295,7 +1301,9 @@ NtUserPostThreadMessage(DWORD idThread,
QS_POSTMESSAGE);
ObDereferenceObject( peThread );
RETURN( TRUE);
} else {
}
else
{
SetLastNtError( Status );
RETURN( FALSE);
}

View file

@ -20,15 +20,19 @@ PW32PROCESS LogonProcess = NULL;
VOID W32kRegisterPrimitiveMessageQueue(VOID)
{
extern PUSER_MESSAGE_QUEUE pmPrimitiveMessageQueue;
if( !pmPrimitiveMessageQueue ) {
if( !pmPrimitiveMessageQueue )
{
PW32THREAD pThread;
pThread = PsGetWin32Thread();
if( pThread && pThread->MessageQueue ) {
if( pThread && pThread->MessageQueue )
{
pmPrimitiveMessageQueue = pThread->MessageQueue;
IntReferenceMessageQueue(pmPrimitiveMessageQueue);
DPRINT( "Installed primitive input queue.\n" );
}
} else {
}
else
{
DPRINT1( "Alert! Someone is trying to steal the primitive queue.\n" );
}
}
@ -497,7 +501,8 @@ NtUserCallTwoParam(
}
Window->Flags &= ~WIN_NEEDS_SHOW_OWNEDPOPUP;
}
else Window->Flags |= WIN_NEEDS_SHOW_OWNEDPOPUP;
else
Window->Flags |= WIN_NEEDS_SHOW_OWNEDPOPUP;
DPRINT1("ROS_SHOWWINDOW ---> 0x%x\n",Window->Flags);
IntReleaseWindowObject(Window);
RETURN( TRUE);
@ -511,7 +516,8 @@ NtUserCallTwoParam(
PWINDOW_OBJECT Window = UserGetWindowObject((HWND) Param1);
BOOL ret;
if (!Window) RETURN(FALSE);
if (!Window)
RETURN(FALSE);
UserRefObjectCo(Window);
ret = co_UserValidateRgn(Window, (HRGN) Param2);
@ -594,7 +600,8 @@ NtUserCallTwoParam(
{
INT *Elements;
COLORREF *Colors;
} ChangeSysColors;
}
ChangeSysColors;
/* FIXME - we should make use of SEH here... */
@ -729,9 +736,11 @@ NtUserCallHwndLock(
PMENU_OBJECT MenuObject;
DPRINT("HWNDLOCK_ROUTINE_DRAWMENUBAR\n");
Ret = FALSE;
if (!((Window->Style & (WS_CHILD | WS_POPUP)) != WS_CHILD)) break;
if (!((Window->Style & (WS_CHILD | WS_POPUP)) != WS_CHILD))
break;
MenuObject = IntGetMenuObject((HMENU) Window->IDMenu);
if(MenuObject == NULL) break;
if(MenuObject == NULL)
break;
MenuObject->MenuInfo.WndOwner = hWnd;
MenuObject->MenuInfo.Height = 0;
IntReleaseMenuObject(MenuObject);

View file

@ -213,7 +213,8 @@ IntAttachMonitor(IN GDIDEVICE *pGdiDevice,
{
PMONITOR_OBJECT p;
DPRINT("Additional monitor is beeing attached\n");
for (p = MonitorList; p->Next != NULL; p = p->Next);
for (p = MonitorList; p->Next != NULL; p = p->Next)
;
{
p->Next = Monitor;
}
@ -519,7 +520,8 @@ NtUserEnumDisplayMonitors(
if (regionType == NULLREGION)
return 0;
if (regionType == COMPLEXREGION)
{ /* TODO: warning */ }
{ /* TODO: warning */
}
/* if hDC and pRect are given the area of interest is pRect with
coordinate origin at the DC position */

View file

@ -217,8 +217,10 @@ MsqIsDblClk(LPMSG Msg, BOOL Remove)
dX = CurInfo->LastBtnDownX - Msg->pt.x;
dY = CurInfo->LastBtnDownY - Msg->pt.y;
if(dX < 0) dX = -dX;
if(dY < 0) dY = -dY;
if(dX < 0)
dX = -dX;
if(dY < 0)
dY = -dY;
Res = (dX <= CurInfo->DblClickWidth) &&
(dY <= CurInfo->DblClickHeight);
@ -681,12 +683,16 @@ co_MsqPostKeyboardMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
}
FocusMessageQueue = IntGetFocusMessageQueue();
if( !IntGetScreenDC() ) {
if( !IntGetScreenDC() )
{
/* FIXME: What to do about Msg.pt here? */
if( W32kGetPrimitiveMessageQueue() ) {
if( W32kGetPrimitiveMessageQueue() )
{
MsqPostMessage(W32kGetPrimitiveMessageQueue(), &Msg, FALSE, QS_KEY);
}
} else {
}
else
{
if (FocusMessageQueue == NULL)
{
DPRINT("No focus message queue\n");
@ -751,9 +757,9 @@ MsqPostHotKeyMessage(PVOID Thread, HWND hWnd, WPARAM wParam, LPARAM lParam)
ObmDereferenceObject(Window);
ObDereferenceObject (Thread);
// InsertHeadList(&pThread->MessageQueue->PostedMessagesListHead,
// &Message->ListEntry);
// KeSetEvent(pThread->MessageQueue->NewMessages, IO_NO_INCREMENT, FALSE);
// InsertHeadList(&pThread->MessageQueue->PostedMessagesListHead,
// &Message->ListEntry);
// KeSetEvent(pThread->MessageQueue->NewMessages, IO_NO_INCREMENT, FALSE);
}
PUSER_MESSAGE FASTCALL
@ -1096,7 +1102,8 @@ co_MsqSendMessage(PUSER_MESSAGE_QUEUE MessageQueue,
DPRINT("MsqSendMessage (blocked) timed out\n");
}
while (co_MsqDispatchOneSentMessage(ThreadQueue));
while (co_MsqDispatchOneSentMessage(ThreadQueue))
;
}
else
{
@ -1157,7 +1164,8 @@ co_MsqSendMessage(PUSER_MESSAGE_QUEUE MessageQueue,
DPRINT("MsqSendMessage timed out\n");
break;
}
while (co_MsqDispatchOneSentMessage(ThreadQueue));
while (co_MsqDispatchOneSentMessage(ThreadQueue))
;
}
while (NT_SUCCESS(WaitStatus) && STATUS_WAIT_0 != WaitStatus);
}
@ -1670,6 +1678,7 @@ MsqSetTimer(PUSER_MESSAGE_QUEUE MessageQueue, HWND Wnd,
InsertTimer(MessageQueue, Timer);
#ifndef NDEBUG
DumpTimerList(MessageQueue);
#endif /* ! defined(NDEBUG) */
@ -1771,8 +1780,10 @@ MsqGetTimerMessage(PUSER_MESSAGE_QUEUE MessageQueue,
InsertTimer(MessageQueue, Timer);
#ifndef NDEBUG
DumpTimerList(MessageQueue);
#endif /* ! defined(NDEBUG) */
}
DPRINT("Created message wnd %x msg %d wParam %u lParam %u\n", Msg->hwnd, Msg->message,

View file

@ -47,8 +47,8 @@ NTSTATUS FASTCALL InitUserImpl(VOID)
{
//PVOID mem;
// DPRINT("Enter InitUserImpl\n");
// ExInitializeResourceLite(&UserLock);
// DPRINT("Enter InitUserImpl\n");
// ExInitializeResourceLite(&UserLock);
ExInitializeFastMutex(&UserLock);
@ -73,35 +73,35 @@ BOOL FASTCALL UserIsEntered()
VOID FASTCALL CleanupUser(VOID)
{
// ExDeleteResourceLite(&UserLock);
// ExDeleteResourceLite(&UserLock);
}
VOID FASTCALL UUserEnterShared(VOID)
{
// DPRINT("Enter IntLockUserShared\n");
// KeDumpStackFrames((PULONG)__builtin_frame_address(0));
//DPRINT("%x\n",__builtin_return_address(0));
// KeEnterCriticalRegion();
// ExAcquireResourceSharedLite(&UserLock, TRUE);
// DPRINT("Enter IntLockUserShared\n");
// KeDumpStackFrames((PULONG)__builtin_frame_address(0));
//DPRINT("%x\n",__builtin_return_address(0));
// KeEnterCriticalRegion();
// ExAcquireResourceSharedLite(&UserLock, TRUE);
ExAcquireFastMutex(&UserLock);
}
VOID FASTCALL UUserEnterExclusive(VOID)
{
// DPRINT("Enter UserEnterExclusive\n");
// KeDumpStackFrames((PULONG)__builtin_frame_address(0));
//DPRINT("%x\n",__builtin_return_address(0));
// KeEnterCriticalRegion();
// ExAcquireResourceExclusiveLite(&UserLock, TRUE);
// DPRINT("Enter UserEnterExclusive\n");
// KeDumpStackFrames((PULONG)__builtin_frame_address(0));
//DPRINT("%x\n",__builtin_return_address(0));
// KeEnterCriticalRegion();
// ExAcquireResourceExclusiveLite(&UserLock, TRUE);
ExAcquireFastMutex(&UserLock);
}
VOID FASTCALL UUserLeave(VOID)
{
// DPRINT("Enter UserLeave\n");
// KeDumpStackFrames((PULONG)__builtin_frame_address(0));
//DPRINT("%x\n",__builtin_return_address(0));
// ExReleaseResourceLite(&UserLock);
// KeLeaveCriticalRegion();
// DPRINT("Enter UserLeave\n");
// KeDumpStackFrames((PULONG)__builtin_frame_address(0));
//DPRINT("%x\n",__builtin_return_address(0));
// ExReleaseResourceLite(&UserLock);
// KeLeaveCriticalRegion();
ExReleaseFastMutex(&UserLock);
}

View file

@ -35,8 +35,10 @@ PUSER_HANDLE_ENTRY handle_to_entry(PUSER_HANDLE_TABLE ht, HANDLE handle )
{
unsigned short generation;
int index = (((unsigned int)handle & 0xffff) - FIRST_USER_HANDLE) >> 1;
if (index < 0 || index >= ht->nb_handles) return NULL;
if (!ht->handles[index].type) return NULL;
if (index < 0 || index >= ht->nb_handles)
return NULL;
if (!ht->handles[index].type)
return NULL;
generation = (unsigned int)handle >> 16;
if (generation == ht->handles[index].generation || !generation || generation == 0xffff)
return &ht->handles[index];
@ -67,16 +69,19 @@ inline static PUSER_HANDLE_ENTRY alloc_user_entry(PUSER_HANDLE_TABLE ht)
DPRINT1("Out of user handles!\n");
return NULL;
#if 0
struct user_handle *new_handles;
/* grow array by 50% (but at minimum 32 entries) */
int growth = max( 32, allocated_handles / 2 );
int new_size = min( allocated_handles + growth, (LAST_USER_HANDLE-FIRST_USER_HANDLE+1) >> 1 );
if (new_size <= allocated_handles) return NULL;
if (new_size <= allocated_handles)
return NULL;
if (!(new_handles = realloc( handles, new_size * sizeof(*handles) )))
return NULL;
handles = new_handles;
allocated_handles = new_size;
#endif
}
entry = &ht->handles[ht->nb_handles++];
@ -114,10 +119,12 @@ inline static void *free_user_entry(PUSER_HANDLE_TABLE ht, PUSER_HANDLE_ENTRY en
HANDLE UserAllocHandle(PUSER_HANDLE_TABLE ht, PVOID object, USER_OBJECT_TYPE type )
{
PUSER_HANDLE_ENTRY entry = alloc_user_entry(ht);
if (!entry) return 0;
if (!entry)
return 0;
entry->ptr = object;
entry->type = type;
if (++entry->generation >= 0xffff) entry->generation = 1;
if (++entry->generation >= 0xffff)
entry->generation = 1;
return entry_to_handle(ht, entry );
}
@ -142,8 +149,10 @@ HANDLE get_user_full_handle(PUSER_HANDLE_TABLE ht, HANDLE handle )
{
PUSER_HANDLE_ENTRY entry;
if ((unsigned int)handle >> 16) return handle;
if (!(entry = handle_to_entry(ht, handle ))) return handle;
if ((unsigned int)handle >> 16)
return handle;
if (!(entry = handle_to_entry(ht, handle )))
return handle;
return entry_to_handle( ht, entry );
}
@ -153,7 +162,8 @@ void *get_user_object_handle(PUSER_HANDLE_TABLE ht, HANDLE* handle, USER_OBJECT
{
PUSER_HANDLE_ENTRY entry;
if (!(entry = handle_to_entry(ht, *handle )) || entry->type != type) return NULL;
if (!(entry = handle_to_entry(ht, *handle )) || entry->type != type)
return NULL;
*handle = entry_to_handle( ht, entry );
return entry->ptr;
}
@ -177,11 +187,13 @@ PVOID UserGetNextHandle(PUSER_HANDLE_TABLE ht, HANDLE* handle, USER_OBJECT_TYPE
{
PUSER_HANDLE_ENTRY entry;
if (!*handle) entry = ht->handles;
if (!*handle)
entry = ht->handles;
else
{
int index = (((unsigned int)*handle & 0xffff) - FIRST_USER_HANDLE) >> 1;
if (index < 0 || index >= ht->nb_handles) return NULL;
if (index < 0 || index >= ht->nb_handles)
return NULL;
entry = ht->handles + index + 1; /* start from the next one */
}
while (entry < ht->handles + ht->nb_handles)
@ -204,11 +216,13 @@ ObmCreateObject(PUSER_HANDLE_TABLE ht, HANDLE* h,USER_OBJECT_TYPE type , ULONG s
HANDLE hi;
PUSER_OBJECT_HEADER hdr = ExAllocatePool(PagedPool, size + sizeof(USER_OBJECT_HEADER));
if (!hdr) return NULL;
if (!hdr)
return NULL;
hi = UserAllocHandle(ht, USER_HEADER_TO_BODY(hdr), type );
if (!hi){
if (!hi)
{
ExFreePool(hdr);
return NULL;
}
@ -217,7 +231,8 @@ ObmCreateObject(PUSER_HANDLE_TABLE ht, HANDLE* h,USER_OBJECT_TYPE type , ULONG s
hdr->hSelf = hi;
hdr->RefCount++; //temp hack!
if (h) *h = hi;
if (h)
*h = hi;
return USER_HEADER_TO_BODY(hdr);
}
@ -226,7 +241,8 @@ ObmDeleteObject(HANDLE h, USER_OBJECT_TYPE type )
{
PUSER_OBJECT_HEADER hdr;
PVOID body = UserGetObject(&gHandleTable, h, type);
if (!body) return FALSE;
if (!body)
return FALSE;
hdr = USER_BODY_TO_HEADER(body);
ASSERT(hdr->RefCount >= 0);
@ -242,7 +258,7 @@ ObmDeleteObject(HANDLE h, USER_OBJECT_TYPE type )
return TRUE;
}
// DPRINT1("info: something not destroyed bcause refs still left, inuse %i\n",usedHandles);
// DPRINT1("info: something not destroyed bcause refs still left, inuse %i\n",usedHandles);
return FALSE;
}
@ -267,7 +283,7 @@ BOOL FASTCALL ObmDereferenceObject(PVOID obj)
if (hdr->RefCount == 0 && hdr->destroyed)
{
// DPRINT1("info: something destroyed bcaise of deref, in use=%i\n",usedHandles);
// DPRINT1("info: something destroyed bcaise of deref, in use=%i\n",usedHandles);
UserFreeHandle(&gHandleTable, hdr->hSelf);

View file

@ -417,7 +417,8 @@ IntIsWindowDrawable(PWINDOW_OBJECT Window)
Wnd = Wnd->Parent;
} while(Wnd);
}
while(Wnd);
return TRUE;
}
@ -462,14 +463,16 @@ co_UserRedrawWindow(PWINDOW_OBJECT Window, const RECT* UpdateRect, HRGN UpdateRg
NtGdiOffsetRgn(hRgn,
Window->ClientRect.left - Window->WindowRect.left,
Window->ClientRect.top - Window->WindowRect.top);
} else
}
else
if (UpdateRect != NULL)
{
hRgn = UnsafeIntCreateRectRgnIndirect((RECT *)UpdateRect);
NtGdiOffsetRgn(hRgn,
Window->ClientRect.left - Window->WindowRect.left,
Window->ClientRect.top - Window->WindowRect.top);
} else
}
else
if ((Flags & (RDW_INVALIDATE | RDW_FRAME)) == (RDW_INVALIDATE | RDW_FRAME) ||
(Flags & (RDW_VALIDATE | RDW_NOFRAME)) == (RDW_VALIDATE | RDW_NOFRAME))
{
@ -1309,7 +1312,8 @@ NtUserScrollWindowEx(HWND hWnd, INT dx, INT dy, const RECT *UnsafeRect,
IntGetClientOrigin(Window, &ClientOrigin);
for (i = 0; List[i]; i++)
{
if (!(Wnd = UserGetWindowObject(List[i]))) continue;
if (!(Wnd = UserGetWindowObject(List[i])))
continue;
r = Wnd->WindowRect;
r.left -= ClientOrigin.x;
@ -1352,7 +1356,8 @@ NtUserScrollWindowEx(HWND hWnd, INT dx, INT dy, const RECT *UnsafeRect,
RETURN( Result);
CLEANUP:
if (Window) UserDerefObjectCo(Window);
if (Window)
UserDerefObjectCo(Window);
DPRINT("Leave NtUserScrollWindowEx, ret=%i\n",_ret_);
UserLeave();

View file

@ -37,7 +37,8 @@ typedef struct _PROPLISTITEM
{
ATOM Atom;
HANDLE Data;
} PROPLISTITEM, *PPROPLISTITEM;
}
PROPLISTITEM, *PPROPLISTITEM;
/* STATIC FUNCTIONS **********************************************************/

View file

@ -257,7 +257,7 @@ co_IntSetScrollInfo(PWINDOW_OBJECT Window, INT nBar, LPCSCROLLINFO lpsi, BOOL bR
LPSCROLLINFO Info;
PSCROLLBARINFO psbi;
/* UINT new_flags;*/
/* UINT new_flags;*/
BOOL bChangeParams = FALSE; /* don't show/hide scrollbar if params don't change */
ASSERT_REFS_CO(Window);
@ -364,7 +364,7 @@ co_IntSetScrollInfo(PWINDOW_OBJECT Window, INT nBar, LPCSCROLLINFO lpsi, BOOL bR
/* Hide or disable scroll-bar */
if (0 != (lpsi->fMask & SIF_DISABLENOSCROLL))
{
/* new_flags = ESB_DISABLE_BOTH;*/
/* new_flags = ESB_DISABLE_BOTH;*/
}
else if ((nBar != SB_CTL) && bChangeParams)
{
@ -374,7 +374,7 @@ co_IntSetScrollInfo(PWINDOW_OBJECT Window, INT nBar, LPCSCROLLINFO lpsi, BOOL bR
}
else /* Show and enable scroll-bar */
{
/* new_flags = 0;*/
/* new_flags = 0;*/
if ((nBar != SB_CTL) && bChangeParams)
{
co_UserShowScrollBar(Window, nBar, TRUE);
@ -388,6 +388,7 @@ co_IntSetScrollInfo(PWINDOW_OBJECT Window, INT nBar, LPCSCROLLINFO lpsi, BOOL bR
*Action |= SA_SSI_REPAINT_ARROWS;
}
#endif
}
if (bRedraw)
@ -709,7 +710,8 @@ NtUserEnableScrollBar(
RETURN( TRUE);
CLEANUP:
if (Window) UserDerefObjectCo(Window);
if (Window)
UserDerefObjectCo(Window);
DPRINT("Leave NtUserEnableScrollBar, ret=%i\n",_ret_);
UserLeave();
@ -770,7 +772,8 @@ NtUserSetScrollBarInfo(
RETURN(TRUE);
CLEANUP:
if (Window) UserDerefObjectCo(Window);
if (Window)
UserDerefObjectCo(Window);
DPRINT("Leave NtUserSetScrollBarInfo, ret=%i\n",_ret_);
UserLeave();
@ -809,7 +812,8 @@ NtUserSetScrollInfo(
RETURN(co_IntSetScrollInfo(Window, fnBar, &ScrollInfo, bRedraw));
CLEANUP:
if (Window) UserDerefObjectCo(Window);
if (Window)
UserDerefObjectCo(Window);
DPRINT("Leave NtUserSetScrollInfo, ret=%i\n",_ret_);
UserLeave();

View file

@ -59,7 +59,8 @@ NtUserCallHwnd(
DWORD Unknown0,
DWORD Unknown1)
{
switch (Unknown0) {
switch (Unknown0)
{
case HWND_ROUTINE_REGISTERSHELLHOOKWINDOW:
if (IntIsWindow((HWND) Unknown1))
return IntRegisterShellHookWindow((HWND) Unknown1);
@ -170,7 +171,7 @@ NtUserDragObject(
UINT u1,
DWORD dw1,
HCURSOR hc1
)
)
{
UNIMPLEMENTED

View file

@ -104,7 +104,7 @@ IntSetTimer(HWND Wnd, UINT_PTR IDEvent, UINT Elapse, TIMERPROC TimerFunc, BOOL S
Ret = IDEvent;
}
#if 1
#if 1
/* Win NT/2k/XP */
if (Elapse > 0x7fffffff)
@ -113,7 +113,7 @@ IntSetTimer(HWND Wnd, UINT_PTR IDEvent, UINT Elapse, TIMERPROC TimerFunc, BOOL S
Elapse = 1;
}
#else
#else
/* Win Server 2003 */
if (Elapse > 0x7fffffff)
@ -122,7 +122,7 @@ IntSetTimer(HWND Wnd, UINT_PTR IDEvent, UINT Elapse, TIMERPROC TimerFunc, BOOL S
Elapse = 0x7fffffff;
}
#endif
#endif
/* Win 2k/XP */
if (Elapse < 10)

View file

@ -474,6 +474,7 @@ UserGetDCEx(PWINDOW_OBJECT Window OPTIONAL, HANDLE ClipRegion, ULONG Flags)
#if 0 /* FIXME */
UpdateVisRgn = FALSE;
#endif
UpdateClipOrigin = TRUE;
break;
}
@ -502,6 +503,7 @@ UserGetDCEx(PWINDOW_OBJECT Window OPTIONAL, HANDLE ClipRegion, ULONG Flags)
#if 1 /* FIXME */
UpdateVisRgn = TRUE;
#endif
}
if (NULL == Dce)
@ -587,7 +589,7 @@ UserGetDCEx(PWINDOW_OBJECT Window OPTIONAL, HANDLE ClipRegion, ULONG Flags)
DceSetDrawable(Window, Dce->hDC, Flags, UpdateClipOrigin);
// if (UpdateVisRgn)
// if (UpdateVisRgn)
{
DceUpdateVisRgn(Dce, Window, Flags);
}
@ -618,7 +620,8 @@ NtUserGetDCEx(HWND hWnd, HANDLE ClipRegion, ULONG Flags)
ret = UserGetDCEx(Wnd, ClipRegion, Flags);
if (Wnd) IntReleaseWindowObject(Wnd);
if (Wnd)
IntReleaseWindowObject(Wnd);
RETURN(ret);
@ -741,6 +744,7 @@ DceFreeDCE(PDCE dce, BOOLEAN Force)
ret = dce->next;
#if 0 /* FIXME */
SetDCHook(dce->hDC, NULL, 0L);
#endif
@ -906,7 +910,7 @@ DceResetActiveDCEs(PWINDOW_OBJECT Window)
if (Window->hSelf != pDCE->hwndCurrent)
{
// IntEngWindowChanged(CurrentWindow, WOC_RGN_CLIENT);
// IntEngWindowChanged(CurrentWindow, WOC_RGN_CLIENT);
IntReleaseWindowObject(CurrentWindow);
}
}
@ -1030,10 +1034,13 @@ NtUserChangeDisplaySettings(
/* Check arguments */
#ifdef CDS_VIDEOPARAMETERS
if (dwflags != CDS_VIDEOPARAMETERS && lParam != NULL)
#else
if (lParam != NULL)
#endif
{
SetLastWin32Error(ERROR_INVALID_PARAMETER);
return DISP_CHANGE_BADPARAM;

View file

@ -85,7 +85,6 @@ VOID FASTCALL IntReleaseWindowObject(PWINDOW_OBJECT Window)
if (USER_BODY_TO_HEADER(Window)->RefCount == 0 && USER_BODY_TO_HEADER(Window)->destroyed)
{
}
}
@ -163,7 +162,8 @@ IntGetParent(PWINDOW_OBJECT Wnd)
PWINDOW_OBJECT par;
par = Wnd->Parent;
if (par) IntReferenceWindowObject(par);
if (par)
IntReferenceWindowObject(par);
return par;
//return IntGetWindowObject(hWnd);
}
@ -187,7 +187,8 @@ IntGetParentObject(PWINDOW_OBJECT Wnd)
PWINDOW_OBJECT par;
par = Wnd->Parent;
if (par) IntReferenceWindowObject(par);
if (par)
IntReferenceWindowObject(par);
return par;
}
@ -235,6 +236,7 @@ static void IntSendDestroyMsg(HWND Wnd)
PWINDOW_OBJECT Window, Owner, Parent;
#if 0 /* FIXME */
GUITHREADINFO info;
if (GetGUIThreadInfo(GetCurrentThreadId(), &info))
@ -247,15 +249,19 @@ static void IntSendDestroyMsg(HWND Wnd)
#endif
Window = IntGetWindowObject(Wnd);
if (Window) {
if (Window)
{
Owner = IntGetOwner(Window);
if (!Owner) {
if (!Owner)
{
Parent = IntGetParent(Window);
if (!Parent)
co_IntShellHookNotify(HSHELL_WINDOWDESTROYED, (LPARAM) Wnd);
else
IntReleaseWindowObject(Parent);
} else {
}
else
{
IntReleaseWindowObject(Owner);
}
@ -275,19 +281,23 @@ static void IntSendDestroyMsg(HWND Wnd)
* make sure that the window still exists when we come back.
*/
#if 0 /* FIXME */
if (IsWindow(Wnd))
{
HWND* pWndArray;
int i;
if (!(pWndArray = WIN_ListChildren( hwnd ))) return;
if (!(pWndArray = WIN_ListChildren( hwnd )))
return;
/* start from the end (FIXME: is this needed?) */
for (i = 0; pWndArray[i]; i++) ;
for (i = 0; pWndArray[i]; i++)
;
while (--i >= 0)
{
if (IsWindow( pWndArray[i] )) WIN_SendDestroyMsg( pWndArray[i] );
if (IsWindow( pWndArray[i] ))
WIN_SendDestroyMsg( pWndArray[i] );
}
HeapFree(GetProcessHeap(), 0, pWndArray);
}
@ -396,6 +406,7 @@ static LRESULT co_IntDestroyWindow(PWINDOW_OBJECT Window,
/* FIXME: do we need to fake QS_MOUSEMOVE wakebit? */
#if 0 /* FIXME */
WinPosCheckInternalPos(Window->hSelf);
if (Window->hSelf == GetCapture())
{
@ -424,6 +435,7 @@ static LRESULT co_IntDestroyWindow(PWINDOW_OBJECT Window,
DceFreeWindowDCE(Window); /* Always do this to catch orphaned DCs */
#if 0 /* FIXME */
WINPROC_FreeProc(Window->winproc, WIN_PROC_WINDOW);
CLASS_RemoveWindow(Window->Class);
#endif
@ -850,7 +862,7 @@ IntLinkWindow(
PWINDOW_OBJECT Wnd,
PWINDOW_OBJECT WndParent,
PWINDOW_OBJECT WndPrevSibling /* set to NULL if top sibling */
)
)
{
PWINDOW_OBJECT Parent;
@ -1054,11 +1066,15 @@ IntUnlinkWindow(PWINDOW_OBJECT Wnd)
{
PWINDOW_OBJECT WndParent = Wnd->Parent;
if (Wnd->NextSibling) Wnd->NextSibling->PrevSibling = Wnd->PrevSibling;
else if (WndParent && WndParent->LastChild == Wnd) WndParent->LastChild = Wnd->PrevSibling;
if (Wnd->NextSibling)
Wnd->NextSibling->PrevSibling = Wnd->PrevSibling;
else if (WndParent && WndParent->LastChild == Wnd)
WndParent->LastChild = Wnd->PrevSibling;
if (Wnd->PrevSibling) Wnd->PrevSibling->NextSibling = Wnd->NextSibling;
else if (WndParent && WndParent->FirstChild == Wnd) WndParent->FirstChild = Wnd->NextSibling;
if (Wnd->PrevSibling)
Wnd->PrevSibling->NextSibling = Wnd->NextSibling;
else if (WndParent && WndParent->FirstChild == Wnd)
WndParent->FirstChild = Wnd->NextSibling;
Wnd->PrevSibling = Wnd->NextSibling = Wnd->Parent = NULL;
}
@ -1411,10 +1427,13 @@ co_IntCreateWindowEx(DWORD dwExStyle,
POINT Pos;
SIZE Size;
#if 0
POINT MaxSize, MaxPos, MinTrack, MaxTrack;
#else
POINT MaxPos;
#endif
CREATESTRUCTW Cs;
CBT_CREATEWNDW CbtCreate;
LRESULT Result;
@ -1450,7 +1469,8 @@ co_IntCreateWindowEx(DWORD dwExStyle,
{
ParentWindow = UserGetWindowObject(ParentWindowHandle);
if (ParentWindow) UserRefObjectCo(ParentWindow);
if (ParentWindow)
UserRefObjectCo(ParentWindow);
}
else
{
@ -1545,7 +1565,9 @@ co_IntCreateWindowEx(DWORD dwExStyle,
Window->hOwner = OwnerWindowHandle;
IntReleaseWindowObject(OwnerWindow);
HasOwner = TRUE;
} else {
}
else
{
Window->hOwner = NULL;
HasOwner = FALSE;
}
@ -1783,12 +1805,18 @@ co_IntCreateWindowEx(DWORD dwExStyle,
/* WinPosGetMinMaxInfo sends the WM_GETMINMAXINFO message */
co_WinPosGetMinMaxInfo(Window, &MaxSize, &MaxPos, &MinTrack,
&MaxTrack);
if (MaxSize.x < nWidth) nWidth = MaxSize.x;
if (MaxSize.y < nHeight) nHeight = MaxSize.y;
if (nWidth < MinTrack.x ) nWidth = MinTrack.x;
if (nHeight < MinTrack.y ) nHeight = MinTrack.y;
if (nWidth < 0) nWidth = 0;
if (nHeight < 0) nHeight = 0;
if (MaxSize.x < nWidth)
nWidth = MaxSize.x;
if (MaxSize.y < nHeight)
nHeight = MaxSize.y;
if (nWidth < MinTrack.x )
nWidth = MinTrack.x;
if (nHeight < MinTrack.y )
nHeight = MinTrack.y;
if (nWidth < 0)
nWidth = 0;
if (nHeight < 0)
nHeight = 0;
}
Window->WindowRect.left = Pos.x;
@ -1955,10 +1983,13 @@ co_IntCreateWindowEx(DWORD dwExStyle,
(LPARAM)Window->hSelf);
}
if ((!hWndParent) && (!HasOwner)) {
if ((!hWndParent) && (!HasOwner))
{
DPRINT("Sending CREATED notify\n");
co_IntShellHookNotify(HSHELL_WINDOWCREATED, (LPARAM)Handle);
} else {
}
else
{
DPRINT("Not sending CREATED notify, %x %d\n", ParentWindow, HasOwner);
}
@ -1983,8 +2014,10 @@ co_IntCreateWindowEx(DWORD dwExStyle,
RETURN((HWND)Handle);
CLEANUP:
if (Window) UserDerefObjectCo(Window);
if (ParentWindow) UserDerefObjectCo(ParentWindow);
if (Window)
UserDerefObjectCo(Window);
if (ParentWindow)
UserDerefObjectCo(ParentWindow);
END_CLEANUP;
}
@ -2125,6 +2158,7 @@ BOOLEAN FASTCALL co_UserDestroyWindow(PWINDOW_OBJECT Window)
IntDereferenceMessageQueue(Window->MessageQueue);
/* Call hooks */
#if 0 /* FIXME */
if (co_HOOK_CallHooks(WH_CBT, HCBT_DESTROYWND, (WPARAM) hwnd, 0, TRUE))
{
return FALSE;
@ -2135,6 +2169,7 @@ BOOLEAN FASTCALL co_UserDestroyWindow(PWINDOW_OBJECT Window)
isChild = (0 != (Window->Style & WS_CHILD));
#if 0 /* FIXME */
if (isChild)
{
if (! USER_IsExitingThread(GetCurrentThreadId()))
@ -2312,7 +2347,8 @@ IntFindWindow(PWINDOW_OBJECT Parent,
if(ChildAfter)
{
/* skip handles before and including ChildAfter */
while(*phWnd && (*(phWnd++) != ChildAfter->hSelf));
while(*phWnd && (*(phWnd++) != ChildAfter->hSelf))
;
}
/* search children */
@ -2492,7 +2528,8 @@ NtUserFindWindowEx(HWND hwndParent,
if(ChildAfter)
{
/* skip handles before and including ChildAfter */
while(*phWnd && (*(phWnd++) != ChildAfter->hSelf));
while(*phWnd && (*(phWnd++) != ChildAfter->hSelf))
;
}
CheckWindowName = WindowName.Length > 0;
@ -2539,6 +2576,7 @@ NtUserFindWindowEx(HWND hwndParent,
Ret = IntFindWindow(Parent, ChildAfter, ClassAtom, &WindowName);
#if 0
if(Ret == NULL && hwndParent == NULL && hwndChildAfter == NULL)
{
/* FIXME - if both hwndParent and hwndChildAfter are NULL, we also should
@ -2554,14 +2592,14 @@ NtUserFindWindowEx(HWND hwndParent,
}
#endif
Cleanup:
Cleanup:
if(ClassName.Length > 0 && ClassName.Buffer)
ExFreePool(ClassName.Buffer);
Cleanup2:
Cleanup2:
RtlFreeUnicodeString(&WindowName);
Cleanup3:
Cleanup3:
if(ChildAfter)
IntReleaseWindowObject(ChildAfter);
IntReleaseWindowObject(Parent);
@ -2777,7 +2815,7 @@ NtUserGetInternalWindowPos(DWORD Unknown0,
HWND STDCALL
NtUserGetLastActivePopup(HWND hWnd)
{
/*
/*
* This code can't work, because hWndLastPopup member of WINDOW_OBJECT is
* not changed anywhere.
* -- Filip, 01/nov/2003
@ -2801,6 +2839,7 @@ NtUserGetLastActivePopup(HWND hWnd)
return hWndLastPopup;
#else
return NULL;
#endif
}
@ -3047,7 +3086,7 @@ NtUserSetShellWindowEx(HWND hwndShell, HWND hwndListView)
*/
if (hwndListView && hwndListView != hwndShell)
{
/*
/*
* Disabled for now to get Explorer working.
* -- Filip, 01/nov/2003
*/
@ -3201,7 +3240,8 @@ UserGetWindow(HWND hWnd, UINT Relationship)
PWINDOW_OBJECT Parent, Window;
HWND hWndResult = NULL;
if (!(Window = UserGetWindowObject(hWnd))) return NULL;
if (!(Window = UserGetWindowObject(hWnd)))
return NULL;
switch (Relationship)
{
@ -3754,7 +3794,8 @@ NtUserGetWindowThreadProcessId(HWND hWnd, LPDWORD UnsafePid)
tid = (DWORD)IntGetWndThreadId(Wnd);
pid = (DWORD)IntGetWndProcessId(Wnd);
if (UnsafePid) MmCopyToCaller(UnsafePid, &pid, sizeof(DWORD));
if (UnsafePid)
MmCopyToCaller(UnsafePid, &pid, sizeof(DWORD));
RETURN( tid);
@ -4535,7 +4576,9 @@ NtUserDereferenceWndProcHandle(WNDPROC wpHandle, WndProcHandle *Data)
Data->IsUnicode = Entry.IsUnicode;
Data->ProcessID = Entry.ProcessID;
RETURN( TRUE);
} else {
}
else
{
RETURN( FALSE);
}
RETURN( FALSE);
@ -4629,14 +4672,18 @@ IntShowOwnedPopups( HWND owner, BOOL fShow )
win_array = IntWinListChildren( Window);
IntReleaseWindowObject(Window);
if (!win_array) return TRUE;
if (!win_array)
return TRUE;
while (win_array[count]) count++;
while (win_array[count])
count++;
while (--count >= 0)
{
if (UserGetWindow( win_array[count], GW_OWNER ) != owner) continue;
if (!(pWnd = IntGetWindowObject( win_array[count] ))) continue;
// if (pWnd == WND_OTHER_PROCESS) continue;
if (UserGetWindow( win_array[count], GW_OWNER ) != owner)
continue;
if (!(pWnd = IntGetWindowObject( win_array[count] )))
continue;
// if (pWnd == WND_OTHER_PROCESS) continue;
if (fShow)
{

View file

@ -109,7 +109,8 @@ NtUserGetClientOrigin(HWND hWnd, LPPOINT Point)
DPRINT("Enter NtUserGetClientOrigin\n");
UserEnterShared();
if (!(Window = UserGetWindowObject(hWnd))) RETURN(FALSE);
if (!(Window = UserGetWindowObject(hWnd)))
RETURN(FALSE);
RETURN(UserGetClientOrigin(Window, Point));
@ -130,7 +131,8 @@ co_WinPosActivateOtherWindow(PWINDOW_OBJECT Window OPTIONAL)
PWINDOW_OBJECT Wnd, Old;
HWND Fg;
if (Window) ASSERT_REFS_CO(Window);
if (Window)
ASSERT_REFS_CO(Window);
if (!Window || IntIsDesktopWindow(Window))
{
@ -177,7 +179,8 @@ co_WinPosActivateOtherWindow(PWINDOW_OBJECT Window OPTIONAL)
done:
if (Wnd) UserRefObjectCo(Wnd);
if (Wnd)
UserRefObjectCo(Wnd);
Fg = UserGetForegroundWindow();
if (Wnd && (!Fg || Window->hSelf == Fg))
@ -192,7 +195,8 @@ done:
if (!co_IntSetActiveWindow(Wnd))
co_IntSetActiveWindow(0);
if (Wnd) UserDerefObjectCo(Wnd);
if (Wnd)
UserDerefObjectCo(Wnd);
}
@ -222,7 +226,8 @@ co_WinPosArrangeIconicWindows(PWINDOW_OBJECT parent)
hwndChild = List[i];
if (!(WndChild = UserGetWindowObject(List[i]))) continue;
if (!(WndChild = UserGetWindowObject(List[i])))
continue;
if((UserGetWindowLong( hwndChild, GWL_STYLE, FALSE) & WS_MINIMIZE) != 0 )
{
@ -234,7 +239,8 @@ co_WinPosArrangeIconicWindows(PWINDOW_OBJECT parent)
UserDerefObjectCo(WndChild);
if (x <= rectParent.right - xspacing) x += xspacing;
if (x <= rectParent.right - xspacing)
x += xspacing;
else
{
x = rectParent.left;
@ -457,10 +463,14 @@ co_WinPosGetMinMaxInfo(PWINDOW_OBJECT Window, POINT* MaxSize, POINT* MaxPos,
MinMax.ptMaxTrackSize.y = max(MinMax.ptMaxTrackSize.y,
MinMax.ptMinTrackSize.y);
if (MaxSize) *MaxSize = MinMax.ptMaxSize;
if (MaxPos) *MaxPos = MinMax.ptMaxPosition;
if (MinTrack) *MinTrack = MinMax.ptMinTrackSize;
if (MaxTrack) *MaxTrack = MinMax.ptMaxTrackSize;
if (MaxSize)
*MaxSize = MinMax.ptMaxSize;
if (MaxPos)
*MaxPos = MinMax.ptMaxPosition;
if (MinTrack)
*MinTrack = MinMax.ptMinTrackSize;
if (MaxTrack)
*MaxTrack = MinMax.ptMaxTrackSize;
return 0; //FIXME: what does it return?
}
@ -650,7 +660,8 @@ WinPosDoOwnedPopups(HWND hWnd, HWND hWndInsertAfter)
{
for (i = 0; List[i]; i++)
{
if (List[i] == Owner) break;
if (List[i] == Owner)
break;
if (HWND_TOP == hWndInsertAfter)
{
ChildObject = IntGetWindowObject(List[i]);
@ -664,8 +675,10 @@ WinPosDoOwnedPopups(HWND hWnd, HWND hWndInsertAfter)
IntReleaseWindowObject(ChildObject);
}
}
if (List[i] != hWnd) hWndLocalPrev = List[i];
if (hWndLocalPrev == hWndInsertAfter) break;
if (List[i] != hWnd)
hWndLocalPrev = List[i];
if (hWndLocalPrev == hWndInsertAfter)
break;
}
hWndInsertAfter = hWndLocalPrev;
}
@ -691,7 +704,8 @@ WinPosDoOwnedPopups(HWND hWnd, HWND hWndInsertAfter)
if (List[i] == hWnd)
break;
if (!(Wnd = UserGetWindowObject(List[i]))) continue;
if (!(Wnd = UserGetWindowObject(List[i])))
continue;
if ((UserGetWindowLong(List[i], GWL_STYLE, FALSE) & WS_POPUP) &&
UserGetWindow(List[i], GW_OWNER) == hWnd)
@ -858,7 +872,7 @@ co_WinPosSetWindowPos(
INT cx,
INT cy,
UINT flags
)
)
{
WINDOWPOS WinPos;
RECT NewWindowRect;
@ -1260,7 +1274,7 @@ co_WinPosShowWindow(PWINDOW_OBJECT Window, INT Cmd)
UINT Swp = 0;
RECT NewPos;
BOOLEAN ShowFlag;
// HRGN VisibleRgn;
// HRGN VisibleRgn;
ASSERT_REFS_CO(Window);
@ -1419,12 +1433,12 @@ co_WinPosShowWindow(PWINDOW_OBJECT Window, INT Cmd)
}
/* Activate the window if activation is not requested and the window is not minimized */
/*
/*
if (!(Swp & (SWP_NOACTIVATE | SWP_HIDEWINDOW)) && !(Window->Style & WS_MINIMIZE))
{
WinPosChangeActiveWindow(Wnd, FALSE);
}
*/
*/
return(WasVisible);
}
@ -1597,7 +1611,8 @@ NtUserGetMinMaxInfo(
RETURN( FALSE);
CLEANUP:
if (Window) UserDerefObjectCo(Window);
if (Window)
UserDerefObjectCo(Window);
DPRINT("Leave NtUserGetMinMaxInfo, ret=%i\n",_ret_);
UserLeave();

View file

@ -48,14 +48,14 @@ PWINSTATION_OBJECT InputWindowStation = NULL;
/* INITALIZATION FUNCTIONS ****************************************************/
static GENERIC_MAPPING IntWindowStationMapping =
{
{
STANDARD_RIGHTS_READ | WINSTA_ENUMDESKTOPS | WINSTA_ENUMERATE | WINSTA_READATTRIBUTES | WINSTA_READSCREEN,
STANDARD_RIGHTS_WRITE | WINSTA_ACCESSCLIPBOARD | WINSTA_CREATEDESKTOP | WINSTA_WRITEATTRIBUTES,
STANDARD_RIGHTS_EXECUTE | WINSTA_ACCESSGLOBALATOMS | WINSTA_EXITWINDOWS,
STANDARD_RIGHTS_REQUIRED | WINSTA_ACCESSCLIPBOARD | WINSTA_ACCESSGLOBALATOMS | WINSTA_CREATEDESKTOP |
WINSTA_ENUMDESKTOPS | WINSTA_ENUMERATE | WINSTA_EXITWINDOWS |
WINSTA_READATTRIBUTES | WINSTA_READSCREEN | WINSTA_WRITEATTRIBUTES
};
};
NTSTATUS FASTCALL
InitWindowStationImpl(VOID)
@ -305,7 +305,7 @@ IntValidateWindowStationHandle(
if (WindowStation == NULL)
{
// DPRINT1("Invalid window station handle\n");
// DPRINT1("Invalid window station handle\n");
SetLastWin32Error(ERROR_INVALID_HANDLE);
return STATUS_INVALID_HANDLE;
}
@ -683,11 +683,11 @@ NtUserCloseWindowStation(
return FALSE;
}
#if 0
#if 0
/* FIXME - free the cursor information when actually deleting the object!! */
ASSERT(Object->SystemCursor);
ExFreePool(Object->SystemCursor);
#endif
#endif
ObDereferenceObject(Object);