mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 01:15:09 +00:00
[Win32SS]
- Implement OEM bitmaps sizes for server information. If more is need, it will be added. This will be plugged in later. svn path=/trunk/; revision=68603
This commit is contained in:
parent
702a0556a1
commit
6995f22fa9
5 changed files with 102 additions and 2 deletions
|
@ -16,7 +16,8 @@
|
|||
#define USER32_CALLBACK_DELIVERUSERAPC (12)
|
||||
#define USER32_CALLBACK_DDEPOST (13)
|
||||
#define USER32_CALLBACK_DDEGET (14)
|
||||
#define USER32_CALLBACK_MAXIMUM (14)
|
||||
#define USER32_CALLBACK_SETOBM (15)
|
||||
#define USER32_CALLBACK_MAXIMUM (15)
|
||||
|
||||
typedef struct _WINDOWPROC_CALLBACK_ARGUMENTS
|
||||
{
|
||||
|
@ -133,6 +134,11 @@ typedef struct _DDEPOSTGET_CALLBACK_ARGUMENTS
|
|||
BYTE buffer[1];
|
||||
} DDEPOSTGET_CALLBACK_ARGUMENTS, *PDDEPOSTGET_CALLBACK_ARGUMENTS;
|
||||
|
||||
typedef struct _SETOBM_CALLBACK_ARGUMENTS
|
||||
{
|
||||
struct tagOEMBITMAPINFO oembmi[93];
|
||||
} SETOBM_CALLBACK_ARGUMENTS, *PSETOBM_CALLBACK_ARGUMENTS;
|
||||
|
||||
NTSTATUS WINAPI
|
||||
User32CallCopyImageFromKernel(PVOID Arguments, ULONG ArgumentLength);
|
||||
NTSTATUS WINAPI
|
||||
|
@ -163,4 +169,6 @@ NTSTATUS WINAPI
|
|||
User32CallDDEPostFromKernel(PVOID Arguments, ULONG ArgumentLength);
|
||||
NTSTATUS WINAPI
|
||||
User32CallDDEGetFromKernel(PVOID Arguments, ULONG ArgumentLength);
|
||||
NTSTATUS WINAPI
|
||||
User32CallOBMFromKernel(PVOID Arguments, ULONG ArgumentLength);
|
||||
#endif /* __INCLUDE_USER32_CALLBACK_H */
|
||||
|
|
|
@ -902,6 +902,17 @@ typedef struct tagOEMBITMAPINFO
|
|||
INT cy;
|
||||
} OEMBITMAPINFO, *POEMBITMAPINFO;
|
||||
|
||||
typedef enum _OBI_TYPES
|
||||
{
|
||||
OBI_CLOSE = 0,
|
||||
OBI_UPARROW = 46,
|
||||
OBI_UPARROWI = 49,
|
||||
OBI_DNARROW = 50,
|
||||
OBI_DNARROWI = 53,
|
||||
OBI_MNARROW = 62,
|
||||
OBI_CTYPES = 93
|
||||
} OBI_TYPES;
|
||||
|
||||
typedef struct tagMBSTRING
|
||||
{
|
||||
WCHAR szName[16];
|
||||
|
@ -953,7 +964,7 @@ typedef struct _PERUSERSERVERINFO
|
|||
DWORD dwKeyCache;
|
||||
DWORD dwAsyncKeyCache;
|
||||
ULONG cCaptures;
|
||||
OEMBITMAPINFO oembmi[93];
|
||||
OEMBITMAPINFO oembmi[OBI_CTYPES];
|
||||
RECT rcScreenReal;
|
||||
USHORT BitCount;
|
||||
USHORT dmLogPixels;
|
||||
|
|
|
@ -1148,4 +1148,49 @@ co_IntDeliverUserAPC(VOID)
|
|||
ERR("Delivering User APC callback failed!\n");
|
||||
}
|
||||
}
|
||||
|
||||
VOID FASTCALL
|
||||
co_IntSetupOBM(VOID)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
ULONG ArgumentLength, ResultLength;
|
||||
PVOID Argument, ResultPointer;
|
||||
PSETOBM_CALLBACK_ARGUMENTS Common;
|
||||
|
||||
ResultPointer = NULL;
|
||||
ResultLength = ArgumentLength = sizeof(SETOBM_CALLBACK_ARGUMENTS);
|
||||
|
||||
Argument = IntCbAllocateMemory(ArgumentLength);
|
||||
if (NULL == Argument)
|
||||
{
|
||||
ERR("Set Window Icons callback failed: out of memory\n");
|
||||
return;
|
||||
}
|
||||
Common = (PSETOBM_CALLBACK_ARGUMENTS) Argument;
|
||||
|
||||
UserLeaveCo();
|
||||
|
||||
Status = KeUserModeCallback(USER32_CALLBACK_SETOBM,
|
||||
Argument,
|
||||
ArgumentLength,
|
||||
&ResultPointer,
|
||||
&ResultLength);
|
||||
|
||||
|
||||
UserEnterCo();
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
ERR("Set Window Icons callback failed!\n");
|
||||
IntCbFreeMemory(Argument);
|
||||
return;
|
||||
}
|
||||
|
||||
RtlMoveMemory(Common, ResultPointer, ArgumentLength);
|
||||
RtlCopyMemory(gpsi->oembmi, Common->oembmi, sizeof(gpsi->oembmi));
|
||||
|
||||
IntCbFreeMemory(Argument);
|
||||
}
|
||||
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -74,3 +74,4 @@ HANDLE FASTCALL co_IntCopyImage(HANDLE,UINT,INT,INT,UINT);
|
|||
|
||||
BOOL FASTCALL co_IntSetWndIcons(VOID);
|
||||
VOID FASTCALL co_IntDeliverUserAPC(VOID);
|
||||
VOID FASTCALL co_IntSetupOBM(VOID);
|
||||
|
|
|
@ -205,6 +205,7 @@ PVOID apfnDispatch[USER32_CALLBACK_MAXIMUM + 1] =
|
|||
User32DeliverUserAPC,
|
||||
User32CallDDEPostFromKernel,
|
||||
User32CallDDEGetFromKernel,
|
||||
User32CallOBMFromKernel,
|
||||
};
|
||||
|
||||
|
||||
|
@ -602,3 +603,37 @@ User32DeliverUserAPC(PVOID Arguments, ULONG ArgumentLength)
|
|||
{
|
||||
return ZwCallbackReturn(0, 0, STATUS_SUCCESS);
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
WINAPI
|
||||
User32CallOBMFromKernel(PVOID Arguments, ULONG ArgumentLength)
|
||||
{
|
||||
BITMAP bmp;
|
||||
PSETOBM_CALLBACK_ARGUMENTS Common = Arguments;
|
||||
|
||||
GetObjectW(LoadBitmapW(0, MAKEINTRESOURCEW(OBM_CLOSE)), sizeof(bmp), &bmp);
|
||||
Common->oembmi[OBI_CLOSE].cx = bmp.bmWidth;
|
||||
Common->oembmi[OBI_CLOSE].cy = bmp.bmHeight;
|
||||
|
||||
GetObjectW(LoadBitmapW(0, MAKEINTRESOURCEW(OBM_MNARROW)), sizeof(bmp), &bmp);
|
||||
Common->oembmi[OBI_MNARROW].cx = bmp.bmWidth;
|
||||
Common->oembmi[OBI_MNARROW].cy = bmp.bmHeight;
|
||||
|
||||
GetObjectW(LoadBitmapW(0, MAKEINTRESOURCEW(OBM_DNARROW)), sizeof(bmp), &bmp);
|
||||
Common->oembmi[OBI_DNARROW].cx = bmp.bmWidth;
|
||||
Common->oembmi[OBI_DNARROW].cy = bmp.bmHeight;
|
||||
|
||||
GetObjectW(LoadBitmapW(0, MAKEINTRESOURCEW(OBM_DNARROWI)), sizeof(bmp), &bmp);
|
||||
Common->oembmi[OBI_DNARROWI].cx = bmp.bmWidth;
|
||||
Common->oembmi[OBI_DNARROWI].cy = bmp.bmHeight;
|
||||
|
||||
GetObjectW(LoadBitmapW(0, MAKEINTRESOURCEW(OBM_UPARROW)), sizeof(bmp), &bmp);
|
||||
Common->oembmi[OBI_UPARROW].cx = bmp.bmWidth;
|
||||
Common->oembmi[OBI_UPARROW].cy = bmp.bmHeight;
|
||||
|
||||
GetObjectW(LoadBitmapW(0, MAKEINTRESOURCEW(OBM_UPARROWI)), sizeof(bmp), &bmp);
|
||||
Common->oembmi[OBI_UPARROWI].cx = bmp.bmWidth;
|
||||
Common->oembmi[OBI_UPARROWI].cy = bmp.bmHeight;
|
||||
|
||||
return ZwCallbackReturn(Arguments, ArgumentLength, STATUS_SUCCESS);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue