Fixed packing and layout of many system structures.

oldstable
Dmitry Timoshkov 2001-11-23 18:44:43 +00:00 committed by Alexandre Julliard
parent b35d86aa13
commit 6b6596a1e3
16 changed files with 73 additions and 85 deletions

View File

@ -287,7 +287,7 @@ DWORD WINAPI RegEnumKeyExW( HKEY hkey, DWORD index, LPWSTR name, LPDWORD name_le
DWORD len = info->NameLength / sizeof(WCHAR);
DWORD cls_len = info->ClassLength / sizeof(WCHAR);
if (ft) *ft = info->LastWriteTime;
if (ft) *ft = *(FILETIME *)&info->LastWriteTime;
if (len >= *name_len || (class_len && (cls_len >= *class_len)))
status = STATUS_BUFFER_OVERFLOW;
@ -351,7 +351,7 @@ DWORD WINAPI RegEnumKeyExA( HKEY hkey, DWORD index, LPSTR name, LPDWORD name_len
info->ClassLength / sizeof(WCHAR),
NULL, 0, NULL, NULL );
if (ft) *ft = info->LastWriteTime;
if (ft) *ft = *(FILETIME *)&info->LastWriteTime;
if (len >= *name_len || (class_len && (cls_len >= *class_len)))
status = STATUS_BUFFER_OVERFLOW;
@ -472,7 +472,7 @@ DWORD WINAPI RegQueryInfoKeyW( HKEY hkey, LPWSTR class, LPDWORD class_len, LPDWO
if (values) *values = info->Values;
if (max_value) *max_value = info->MaxValueNameLen;
if (max_data) *max_data = info->MaxValueDataLen;
if (modif) *modif = info->LastWriteTime;
if (modif) *modif = *(FILETIME *)&info->LastWriteTime;
done:
if (buf_ptr != buffer) HeapFree( GetProcessHeap(), 0, buf_ptr );
@ -542,7 +542,7 @@ DWORD WINAPI RegQueryInfoKeyA( HKEY hkey, LPSTR class, LPDWORD class_len, LPDWOR
if (values) *values = info->Values;
if (max_value) *max_value = info->MaxValueNameLen;
if (max_data) *max_data = info->MaxValueDataLen;
if (modif) *modif = info->LastWriteTime;
if (modif) *modif = *(FILETIME *)&info->LastWriteTime;
done:
if (buf_ptr != buffer) HeapFree( GetProcessHeap(), 0, buf_ptr );

View File

@ -161,9 +161,9 @@ static NTSTATUS fill_key_info( KEY_INFORMATION_CLASS info_class, void *info, DWO
WCHAR *class_ptr = (WCHAR *)((char *)name_ptr + name_size);
int class_size = server_data_size(req) - sizeof(WCHAR) - name_size;
int fixed_size;
FILETIME modif;
LARGE_INTEGER modif;
RtlSecondsSince1970ToTime( req->modif, &modif );
RtlSecondsSince1970ToTime( req->modif, (FILETIME *)&modif );
switch(info_class)
{

View File

@ -744,6 +744,8 @@ typedef struct _HD_ITEMA
LPARAM lParam;
INT iImage;
INT iOrder;
UINT type;
LPVOID pvFilter;
} HDITEMA, *LPHDITEMA;
typedef struct _HD_ITEMW
@ -757,6 +759,8 @@ typedef struct _HD_ITEMW
LPARAM lParam;
INT iImage;
INT iOrder;
UINT type;
LPVOID pvFilter;
} HDITEMW, *LPHDITEMW;
#define HDITEM WINELIB_NAME_AW(HDITEM)
@ -1148,7 +1152,7 @@ typedef struct tagTBSAVEPARAMSW {
HKEY hkr;
LPCWSTR pszSubKey;
LPCWSTR pszValueName;
} TBSAVEPARAMSAW, *LPTBSAVEPARAMSAW;
} TBSAVEPARAMSW, *LPTBSAVEPARAMSW;
#define TBSAVEPARAMS WINELIB_NAME_AW(TBSAVEPARAMS)
#define LPTBSAVEPARAMS WINELIB_NAME_AW(LPTBSAVEPARAMS)
@ -2250,12 +2254,14 @@ typedef struct tagNMTVGETINFOTIPW
#define NMTVGETINFOTIP WINELIB_NAME_AW(NMTVGETINFOTIP)
#define LPNMTVGETINFOTIP WINELIB_NAME_AW(LPNMTVGETINFOTIP)
#include "pshpack1.h"
typedef struct tagTVKEYDOWN
{
NMHDR hdr;
WORD wVKey;
UINT flags;
} NMTVKEYDOWN, *LPNMTVKEYDOWN;
#include "poppack.h"
#define TV_KEYDOWN NMTVKEYDOWN
@ -2870,12 +2876,14 @@ typedef struct tagLVDISPINFOW
#define LV_DISPINFO NMLVDISPINFO
#include "pshpack1.h"
typedef struct tagLVKEYDOWN
{
NMHDR hdr;
WORD wVKey;
UINT flags;
} NMLVKEYDOWN, *LPNMLVKEYDOWN;
#include "poppack.h"
#define LV_KEYDOWN NMLVKEYDOWN
@ -3307,12 +3315,14 @@ typedef struct tagTCITEMW
#define TCN_SELCHANGING (TCN_FIRST - 2)
#define TCN_GETOBJECT (TCN_FIRST - 3)
#include "pshpack1.h"
typedef struct tagTCKEYDOWN
{
NMHDR hdr;
WORD wVKey;
UINT flags;
} NMTCKEYDOWN;
#include "poppack.h"
#define TC_KEYDOWN NMTCKEYDOWN

View File

@ -8,8 +8,6 @@
extern "C" {
#endif /* defined(__cplusplus) */
#include "pshpack1.h"
typedef LPVOID (*LPRGLPVOID)[];
typedef LPRGLPVOID PRGPVOID, LPRGPVOID, PRGLPVOID, PAPVOID, LPAPVOID, PALPVOID, LPALPVOID;
@ -401,8 +399,6 @@ typedef BOOL CALLBACK (*LPDPENUMSESSIONSCALLBACK2)(
#define DPESC_TIMEDOUT 0x00000001
#include "poppack.h"
/*****************************************************************************
* IDirectPlay interface
*/

View File

@ -7,8 +7,6 @@
extern "C" {
#endif /* defined(__cplusplus) */
#include "pshpack1.h"
/*****************************************************************************
* Predeclare the interfaces
*/
@ -348,8 +346,6 @@ typedef BOOL CALLBACK (*LPDPLENUMLOCALAPPLICATIONSCALLBACK)(
LPVOID lpContext,
DWORD dwFlags );
#include "poppack.h"
/*****************************************************************************
* IDirectPlayLobby and IDirectPlayLobbyA interface
*/

View File

@ -549,13 +549,13 @@ typedef struct midihdr_tag {
LPSTR lpData; /* pointer to locked data block */
DWORD dwBufferLength; /* length of data in data block */
DWORD dwBytesRecorded;/* used for input only */
DWORD dwUser; /* for client's use */
DWORD_PTR dwUser; /* for client's use */
DWORD dwFlags; /* assorted flags (see defines) */
struct midihdr_tag *lpNext; /* reserved for driver */
DWORD reserved; /* reserved for driver */
DWORD dwOffset; /* offset of playback in case of
* MIDISTRM buffer */
DWORD dwReserved[4]; /* reserved for driver */
DWORD_PTR dwReserved[8]; /* reserved for driver */
} MIDIHDR, *LPMIDIHDR;
#define MHDR_DONE 0x00000001 /* done bit */

View File

@ -21,8 +21,6 @@ extern "C" {
#define NCBASTAT 0x33
#define NCBENUM 0x37
#include "pshpack1.h"
typedef struct _NCB
{
UCHAR ncb_command;
@ -54,8 +52,8 @@ typedef struct _ADAPTER_STATUS
WORD frmr_xmit;
WORD iframe_recv_error;
WORD xmit_aborts;
WORD xmit_success;
WORD recv_success;
DWORD xmit_success;
DWORD recv_success;
WORD iframe_xmit_error;
WORD recv_buffer_unavail;
WORD t1_timeouts;

View File

@ -11,8 +11,6 @@
#include "winreg.h"
#include "winbase.h" /* fixme: should be taken out sometimes */
#include "pshpack1.h"
#ifdef __cplusplus
extern "C" {
#endif
@ -39,7 +37,7 @@ typedef VOID NTAPI (*PIO_APC_ROUTINE) ( PVOID ApcContext, PIO_STATUS_BLOCK IoSta
/* key information */
typedef struct _KEY_BASIC_INFORMATION {
FILETIME LastWriteTime;
LARGE_INTEGER LastWriteTime;
ULONG TitleIndex;
ULONG NameLength;
WCHAR Name[1];
@ -47,7 +45,7 @@ typedef struct _KEY_BASIC_INFORMATION {
typedef struct _KEY_NODE_INFORMATION
{
FILETIME LastWriteTime;
LARGE_INTEGER LastWriteTime;
ULONG TitleIndex;
ULONG ClassOffset;
ULONG ClassLength;
@ -58,7 +56,7 @@ typedef struct _KEY_NODE_INFORMATION
typedef struct _KEY_FULL_INFORMATION
{
FILETIME LastWriteTime;
LARGE_INTEGER LastWriteTime;
ULONG TitleIndex;
ULONG ClassOffset;
ULONG ClassLength;
@ -951,6 +949,4 @@ NtAccessCheck(
}
#endif
#include "poppack.h"
#endif

View File

@ -4,8 +4,6 @@
#include "basetsd.h"
#include "windef.h"
#include "pshpack1.h"
#ifdef __cplusplus
extern "C" {
#endif
@ -95,6 +93,4 @@ typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES;
}
#endif
#include "poppack.h"
#endif

View File

@ -7,7 +7,6 @@
#include "basetsd.h"
#include "windef.h"
#include "pshpack1.h"
#ifndef RC_INVOKED
#include <stdarg.h>
@ -976,9 +975,6 @@ typedef struct tagCOMMTIMEOUTS {
DWORD WriteTotalTimeoutConstant;
} COMMTIMEOUTS,*LPCOMMTIMEOUTS;
#include "poppack.h"
typedef void CALLBACK (*PAPCFUNC)(ULONG_PTR);
typedef void CALLBACK (*PTIMERAPCROUTINE)(LPVOID,DWORD,DWORD);

View File

@ -6,9 +6,6 @@
extern "C" {
#endif
#include "pshpack1.h"
typedef struct _ABCFLOAT {
FLOAT abcfA;
FLOAT abcfB;
@ -1076,7 +1073,6 @@ DECL_WINELIB_TYPE_AW(LPPOLYTEXT)
#define NTM_BOLD 0x00000020L
#define NTM_ITALIC 0x00000001L
#include "pshpack4.h"
typedef struct
{
LONG tmHeight;
@ -1132,7 +1128,6 @@ typedef struct
UINT ntmCellHeight;
UINT ntmAvgWidth;
} NEWTEXTMETRICW, *PNEWTEXTMETRICW, *LPNEWTEXTMETRICW;
#include "poppack.h"
DECL_WINELIB_TYPE_AW(NEWTEXTMETRIC)
DECL_WINELIB_TYPE_AW(PNEWTEXTMETRIC)
@ -1640,6 +1635,7 @@ typedef struct {
BYTE rgbtRed;
} RGBTRIPLE;
#include "pshpack2.h"
typedef struct
{
WORD bfType;
@ -1648,6 +1644,7 @@ typedef struct
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER, *LPBITMAPFILEHEADER;
#include "poppack.h"
#define MAKEPOINTS(l) (*((POINTS *)&(l)))
@ -1785,6 +1782,7 @@ typedef struct
#define CLR_INVALID 0xffffffff
/* Metafile header structure */
#include "pshpack2.h"
typedef struct
{
WORD mtType;
@ -1795,6 +1793,7 @@ typedef struct
DWORD mtMaxRecord;
WORD mtNoParameters;
} METAHEADER, *PMETAHEADER, *LPMETAHEADER;
#include "poppack.h"
/* Metafile typical record structure */
typedef struct
@ -2959,9 +2958,11 @@ typedef BOOL CALLBACK (*ABORTPROC)(HDC, INT);
typedef struct {
DWORD cb;
BYTE DeviceName[32];
BYTE DeviceString[128];
CHAR DeviceName[32];
CHAR DeviceString[128];
DWORD StateFlags;
CHAR DeviceID[128];
CHAR DeviceKey[128];
} DISPLAY_DEVICEA,*PDISPLAY_DEVICEA,*LPDISPLAY_DEVICEA;
typedef struct {
@ -2969,6 +2970,8 @@ typedef struct {
WCHAR DeviceName[32];
WCHAR DeviceString[128];
DWORD StateFlags;
WCHAR DeviceID[128];
WCHAR DeviceKey[128];
} DISPLAY_DEVICEW,*PDISPLAY_DEVICEW,*LPDISPLAY_DEVICEW;
DECL_WINELIB_TYPE_AW(DISPLAY_DEVICE)
DECL_WINELIB_TYPE_AW(PDISPLAY_DEVICE)
@ -2984,8 +2987,6 @@ DECL_WINELIB_TYPE_AW(LPDISPLAY_DEVICE)
#define GDI_ERROR (0xFFFFFFFFL)
#define HGDI_ERROR ((HANDLE)0xFFFFFFFFL)
#include "poppack.h"
INT WINAPI AbortDoc(HDC);
BOOL WINAPI AbortPath(HDC);
INT WINAPI AddFontResourceA(LPCSTR);

View File

@ -396,8 +396,6 @@ typedef HANDLE *PHANDLE, *LPHANDLE;
typedef a *P##a, *LP##a
#endif /*STRICT*/
#include "pshpack1.h"
/* Defines */
/* Argument 1 passed to the DllEntryProc. */
@ -576,6 +574,8 @@ typedef struct _FLOATING_SAVE_AREA
DWORD Cr0NpxState;
} FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
#define MAXIMUM_SUPPORTED_EXTENSION 512
typedef struct _CONTEXT86
{
DWORD ContextFlags;
@ -612,6 +612,8 @@ typedef struct _CONTEXT86
DWORD EFlags;
DWORD Esp;
DWORD SegSs;
BYTE ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
} CONTEXT86;
#define CONTEXT_X86 0x00010000
@ -2299,8 +2301,6 @@ typedef struct __EXCEPTION_FRAME
PEXCEPTION_HANDLER Handler;
} EXCEPTION_FRAME, *PEXCEPTION_FRAME;
#include "poppack.h"
/*
* function pointer to a exception filter
*/
@ -2923,11 +2923,13 @@ typedef struct _IMAGE_BOUND_FORWARDER_REF
WORD Reserved;
} IMAGE_BOUND_FORWARDER_REF, *PIMAGE_BOUND_FORWARDER_REF;
#include "pshpack2.h"
typedef struct _IMAGE_BASE_RELOCATION
{
DWORD VirtualAddress;
DWORD SizeOfBlock;
WORD TypeOffset[1];
/* WORD TypeOffset[1]; */
} IMAGE_BASE_RELOCATION,*PIMAGE_BASE_RELOCATION;
typedef struct _IMAGE_RELOCATION
@ -2941,6 +2943,8 @@ typedef struct _IMAGE_RELOCATION
} IMAGE_RELOCATION;
typedef IMAGE_RELOCATION *PIMAGE_RELOCATION;
#include "poppack.h"
#define IMAGE_SIZEOF_RELOCATION 10
/* generic relocation types */
@ -3389,7 +3393,6 @@ typedef enum _TOKEN_INFORMATION_CLASS {
#ifndef _SECURITY_DEFINED
#define _SECURITY_DEFINED
#include "pshpack1.h"
typedef DWORD ACCESS_MASK, *PACCESS_MASK;
@ -3481,12 +3484,8 @@ typedef struct {
#define SECURITY_DESCRIPTOR_MIN_LENGTH (sizeof(SECURITY_DESCRIPTOR))
#include "poppack.h"
#endif /* _SECURITY_DEFINED */
#include "pshpack1.h"
/*
* SID_AND_ATTRIBUTES
*/
@ -3596,10 +3595,12 @@ typedef struct _LUID {
LONG HighPart;
} LUID, *PLUID;
#include "pshpack4.h"
typedef struct _LUID_AND_ATTRIBUTES {
LUID Luid;
DWORD Attributes;
} LUID_AND_ATTRIBUTES;
#include "poppack.h"
/*
* PRIVILEGE_SET
@ -3685,7 +3686,7 @@ typedef struct _SECURITY_QUALITY_OF_SERVICE {
DWORD Length;
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
BOOL EffectiveOnly;
BOOLEAN EffectiveOnly;
} SECURITY_QUALITY_OF_SERVICE, *PSECURITY_QUALITY_OF_SERVICE;
/*
@ -4079,8 +4080,6 @@ typedef enum _CM_ERROR_CONTROL_TYPE
#include "guiddef.h"
#include "poppack.h"
typedef struct _RTL_CRITICAL_SECTION_DEBUG
{
WORD Type;

View File

@ -9,9 +9,6 @@
extern "C" {
#endif
#include "pshpack1.h"
/* Define a bunch of callback types */
#if defined(STRICT) || defined(__WINE__)
@ -1442,14 +1439,14 @@ typedef struct {
typedef struct
{
WORD mkSize;
DWORD mkSize;
CHAR mkKeyList;
CHAR szKeyphrase[1];
} MULTIKEYHELPA, *PMULTIKEYHELPA, *LPMULTIKEYHELPA;
typedef struct
{
WORD mkSize;
DWORD mkSize;
WCHAR mkKeyList;
WCHAR szKeyphrase[1];
} MULTIKEYHELPW, *PMULTIKEYHELPW, *LPMULTIKEYHELPW;
@ -1459,22 +1456,22 @@ DECL_WINELIB_TYPE_AW(PMULTIKEYHELP)
DECL_WINELIB_TYPE_AW(LPMULTIKEYHELP)
typedef struct {
WORD wStructSize;
WORD x;
WORD y;
WORD dx;
WORD dy;
WORD wMax;
int wStructSize;
int x;
int y;
int dx;
int dy;
int wMax;
CHAR rgchMember[2];
} HELPWININFOA, *PHELPWININFOA, *LPHELPWININFOA;
typedef struct {
WORD wStructSize;
WORD x;
WORD y;
WORD dx;
WORD dy;
WORD wMax;
int wStructSize;
int x;
int y;
int dx;
int dy;
int wMax;
WCHAR rgchMember[2];
} HELPWININFOW, *PHELPWININFOW, *LPHELPWININFOW;
@ -2138,6 +2135,8 @@ DECL_WINELIB_TYPE_AW(LPMONITORINFOEX)
typedef BOOL CALLBACK (*MONITORENUMPROC)(HMONITOR,HDC,LPRECT,LPARAM);
#include "pshpack2.h"
/* FIXME: use this instead of LPCVOID for CreateDialogIndirectParam
and DialogBoxIndirectParam */
typedef struct tagDLGTEMPLATE
@ -2176,6 +2175,7 @@ typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEA;
typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEW;
DECL_WINELIB_TYPE_AW(LPDLGITEMTEMPLATE)
#include "poppack.h"
/* CBT hook values */
#define HCBT_MOVESIZE 0
@ -3272,8 +3272,6 @@ typedef HDEVNOTIFY *PHDEVNOTIFY;
#define DEVICE_NOTIFY_WINDOW_HANDLE 0x00000000
#include "poppack.h"
#define EnumTaskWindows(handle,proc,lparam) \
EnumThreadWindows(handle,proc,lparam)
#define OemToAnsiA OemToCharA

View File

@ -405,7 +405,8 @@ static int do_relocations( char *base, const IMAGE_NT_HEADERS *nt, const char *f
rel = (IMAGE_BASE_RELOCATION*)((char*)rel + rel->SizeOfBlock))
{
char *page = base + rel->VirtualAddress;
int i, count = (rel->SizeOfBlock - 8) / sizeof(rel->TypeOffset);
WORD *TypeOffset = (WORD *)(rel + 1);
int i, count = (rel->SizeOfBlock - sizeof(*rel)) / sizeof(*TypeOffset);
if (!count) continue;
@ -424,8 +425,8 @@ static int do_relocations( char *base, const IMAGE_NT_HEADERS *nt, const char *f
/* patching in reverse order */
for (i = 0 ; i < count; i++)
{
int offset = rel->TypeOffset[i] & 0xFFF;
int type = rel->TypeOffset[i] >> 12;
int offset = TypeOffset[i] & 0xFFF;
int type = TypeOffset[i] >> 12;
switch(type)
{
case IMAGE_REL_BASED_ABSOLUTE:

View File

@ -158,7 +158,7 @@ DWORD WINAPI RegEnumKeyExA( HKEY hkey, DWORD index, LPSTR name, LPDWORD name_len
info->ClassLength / sizeof(WCHAR),
NULL, 0, NULL, NULL );
if (ft) *ft = info->LastWriteTime;
if (ft) *ft = *(FILETIME *)&info->LastWriteTime;
if (len >= *name_len || (class_len && (cls_len >= *class_len)))
status = STATUS_BUFFER_OVERFLOW;
@ -259,7 +259,7 @@ DWORD WINAPI RegQueryInfoKeyA( HKEY hkey, LPSTR class, LPDWORD class_len, LPDWOR
if (values) *values = info->Values;
if (max_value) *max_value = info->MaxValueNameLen;
if (max_data) *max_data = info->MaxValueDataLen;
if (modif) *modif = info->LastWriteTime;
if (modif) *modif = *(FILETIME *)&info->LastWriteTime;
}
if (buf_ptr != buffer) HeapFree( GetProcessHeap(), 0, buf_ptr );

View File

@ -788,15 +788,16 @@ void WINAPI VXD_Win32s( CONTEXT86 *context )
while (r && r->VirtualAddress)
{
LPBYTE page = module->baseAddr + r->VirtualAddress;
int count = (r->SizeOfBlock - 8) / 2;
WORD *TypeOffset = (WORD *)(r + 1);
int count = (r->SizeOfBlock - sizeof(*r)) / sizeof(*TypeOffset);
TRACE("MapModule: %d relocations for page %08lx\n",
count, (DWORD)page);
for(i = 0; i < count; i++)
{
int offset = r->TypeOffset[i] & 0xFFF;
int type = r->TypeOffset[i] >> 12;
int offset = TypeOffset[i] & 0xFFF;
int type = TypeOffset[i] >> 12;
switch(type)
{
case IMAGE_REL_BASED_ABSOLUTE: