mirror of
https://github.com/reactos/reactos.git
synced 2025-04-22 13:10:39 +00:00
[Win32k|User32]
- Patch by Shinobu Maehara: fix for kernel-mode/user-mode marshalling of WM_DDE_ACK. svn path=/trunk/; revision=54396
This commit is contained in:
parent
2e7cf798a9
commit
cf1e809fa2
3 changed files with 31 additions and 50 deletions
|
@ -288,7 +288,7 @@ static const WORD *DIALOG_GetControl32( const WORD *p, DLG_CONTROL_INFO *info,
|
|||
info->windowName = HeapAlloc( GetProcessHeap(), 0, sizeof(L"#65535") );
|
||||
if (info->windowName != NULL)
|
||||
{
|
||||
swprintf((LPWSTR)info->windowName, L"#%d", GET_WORD(p + 1));
|
||||
wsprintf((LPWSTR)info->windowName, L"#%d", GET_WORD(p + 1));
|
||||
info->windowNameFree = TRUE;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -234,36 +234,24 @@ MsgiUMToKMMessage(PMSG UMMsg, PMSG KMMsg, BOOL Posted)
|
|||
{
|
||||
PKMDDELPARAM DdeLparam;
|
||||
DdeLparam = HeapAlloc(GetProcessHeap(), 0, sizeof(KMDDELPARAM));
|
||||
if (NULL == DdeLparam)
|
||||
if (NULL == DdeLparam || !UnpackDDElParam(
|
||||
UMMsg->message, UMMsg->lParam,
|
||||
&DdeLparam->uiLo, &DdeLparam->uiHi)) return FALSE;
|
||||
/*
|
||||
If this is a reply to WM_DDE_EXECUTE then
|
||||
uiHi will contain a hMem, hence >= 0x10000.
|
||||
Otherwise, it will be be an atom, a 16-bit value.
|
||||
*/
|
||||
if(DdeLparam->uiHi >= 0x10000)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
if (Posted)
|
||||
{
|
||||
DdeLparam->Packed = TRUE;
|
||||
if (! UnpackDDElParam(UMMsg->message, UMMsg->lParam,
|
||||
&DdeLparam->Value.Packed.uiLo,
|
||||
&DdeLparam->Value.Packed.uiHi))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
if (0 != HIWORD(DdeLparam->Value.Packed.uiHi))
|
||||
{
|
||||
/* uiHi should contain a hMem from WM_DDE_EXECUTE */
|
||||
HGLOBAL h = DdeGetPair((HGLOBAL)(ULONG_PTR)DdeLparam->Value.Packed.uiHi);
|
||||
HGLOBAL h = DdeGetPair((HGLOBAL)(ULONG_PTR)DdeLparam->uiHi);
|
||||
if (NULL != h)
|
||||
{
|
||||
GlobalFree((HGLOBAL)(ULONG_PTR)DdeLparam->Value.Packed.uiHi);
|
||||
DdeLparam->Value.Packed.uiHi = (UINT_PTR) h;
|
||||
GlobalFree((HGLOBAL)(ULONG_PTR)DdeLparam->uiHi);
|
||||
DdeLparam->uiHi = (UINT_PTR) h;
|
||||
}
|
||||
}
|
||||
FreeDDElParam(UMMsg->message, UMMsg->lParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
DdeLparam->Packed = FALSE;
|
||||
DdeLparam->Value.Unpacked = UMMsg->lParam;
|
||||
}
|
||||
KMMsg->lParam = (LPARAM) DdeLparam;
|
||||
}
|
||||
break;
|
||||
|
@ -376,17 +364,8 @@ MsgiKMToUMMessage(PMSG KMMsg, PMSG UMMsg)
|
|||
case WM_DDE_ACK:
|
||||
{
|
||||
PKMDDELPARAM DdeLparam = (PKMDDELPARAM) KMMsg->lParam;
|
||||
if (DdeLparam->Packed)
|
||||
{
|
||||
UMMsg->lParam = PackDDElParam(KMMsg->message,
|
||||
DdeLparam->Value.Packed.uiLo,
|
||||
DdeLparam->Value.Packed.uiHi);
|
||||
UMMsg->lParam = PackDDElParam(KMMsg->message, DdeLparam->uiLo, DdeLparam->uiHi);
|
||||
}
|
||||
else
|
||||
{
|
||||
UMMsg->lParam = DdeLparam->Value.Unpacked;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_DDE_EXECUTE:
|
||||
|
|
|
@ -488,7 +488,7 @@ typedef struct _SBINFOEX
|
|||
#define WNDS_HASCREATESTRUCTNAME 0X00020000
|
||||
#define WNDS_SERVERSIDEWINDOWPROC 0x00040000 // Call proc inside win32k.
|
||||
#define WNDS_ANSIWINDOWPROC 0x00080000
|
||||
#define WNDS_BEGINGACTIVATED 0x00100000
|
||||
#define WNDS_BEINGACTIVATED 0x00100000
|
||||
#define WNDS_HASPALETTE 0x00200000
|
||||
#define WNDS_PAINTNOTPROCESSED 0x00400000
|
||||
#define WNDS_SYNCPAINTPENDING 0x00800000
|
||||
|
@ -2692,15 +2692,15 @@ NtUserSetCursorContents(
|
|||
HANDLE Handle,
|
||||
PICONINFO IconInfo);
|
||||
|
||||
#if 0 // Correct type.
|
||||
BOOL
|
||||
NTAPI
|
||||
NtUserSetCursorIconData(
|
||||
HANDLE Handle,
|
||||
PBOOL fIcon,
|
||||
POINT *Hotspot,
|
||||
HMODULE hModule,
|
||||
HRSRC hRsrc,
|
||||
HRSRC hGroupRsrc);
|
||||
HCURSOR hCursor,
|
||||
PUNICODE_STRING ModuleName,
|
||||
PUNICODE_STRING ResourceName,
|
||||
PCURSORDATA pCursorData);
|
||||
#endif
|
||||
|
||||
DWORD
|
||||
NTAPI
|
||||
|
@ -3178,16 +3178,8 @@ typedef struct tagKMDDEEXECUTEDATA
|
|||
|
||||
typedef struct tagKMDDELPARAM
|
||||
{
|
||||
BOOL Packed;
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
UINT_PTR uiLo;
|
||||
UINT_PTR uiHi;
|
||||
} Packed;
|
||||
LPARAM Unpacked;
|
||||
} Value;
|
||||
} KMDDELPARAM, *PKMDDELPARAM;
|
||||
|
||||
|
||||
|
@ -3329,6 +3321,16 @@ NtUserMonitorFromWindow(
|
|||
IN HWND hWnd,
|
||||
IN DWORD dwFlags);
|
||||
|
||||
BOOL
|
||||
NTAPI
|
||||
NtUserSetCursorIconData(
|
||||
HANDLE Handle,
|
||||
PBOOL fIcon,
|
||||
POINT *Hotspot,
|
||||
HMODULE hModule,
|
||||
HRSRC hRsrc,
|
||||
HRSRC hGroupRsrc);
|
||||
|
||||
typedef struct _SETSCROLLBARINFO
|
||||
{
|
||||
int nTrackPos;
|
||||
|
|
Loading…
Reference in a new issue