[PATCH] Correct prototypes in w32api

Casper Hornstrup <[email protected]>
Newsgroups gmane.comp.gnu.mingw.patches
Message-ID <[email protected]>
This patch corrects some prototypes in w32api and adds a few definitions. The corrected
prototypes match those of the Windows Platform SDK documentation from MSDN CD's of August 2001.


2002-06-15  Casper S. Hornstrup  <[email protected]>

	* include/basetsd.h (LONG16, PLONG16, INT16, PINT16
	(ULONG16, PULONG16, DWORD16, PDWORD16, UINT16, PUINT16): Add typedefs.
	* include/ddeml.h (DdeCreateStringHandleA,
	DdeCreateStringHandleW): Correct prototypes.
	* include/ntdef.h (CINT, PCSZ): Add typedefs.
	* include/wincon.h (CONSOLE_OUTPUT_MODE_VALID,
	CONSOLE_INPUT_MODE_VALID): Add defines.
	(CreateConsoleScreenBuffer): Correct prototype.
	* include/winerror.h (RPC_X_INVALID_PIPE_OBJECT, RPC_X_WRONG_PIPE_ORDER,
	RPC_X_WRONG_PIPE_VERSION, RPC_S_SEND_INCOMPLETE): Add defines.
	* include/wingdi.h (PXFORM, PLOGBRUSH, PLOGPEN, PPOLYTEXTA, PPOLYTEXTW,
	_DESIGNVECTOR, COLOR16, _TRIVERTEX, _DISPLAY_DEVICE): Add typedefs.
	(MM_MAX_NUMAXES): Add define.
	(EnumFontsW, GetEnhMetaFilePixelFormat, wglGetLayerPaletteEntries): Correct prototypes.
	* include/winnls.h (GetCurrencyFormatA,
	GetCurrencyFormatW): Correct prototypes.
	* include/winnt.h (PCCHAR, PCSHORT, FCHAR, FSHORT, FLONG, ACCESS_MODE,
	PACCESS_MODE, LPCGUID, PLUID_AND_ATTRIBUTES, PSECURITY_IMPERSONATION_LEVEL,
	PSID_AND_ATTRIBUTES, PTOKEN_TYPE, PTOKEN_STATISTICS): Add typedefs.
	(FILE_ANY_ACCESS, FILE_SPECIAL_ACCESS, PROCESS_SET_SESSIONID, PROCESS_READ,
	PROCESS_WRITE, PROCESS_EXECUTE, SECURITY_*, SE_*, SEC_BASED, SEC_NO_CHANGE,
	SECTION_MAP_EXECUTE): Add defines.
	(GetCurrentFiber, GetFiberData): Correct prototypes and wrap in
	#if defined(_KERNEL32_) to allow building kernel32.dll with
	exported versions of these symbols.
	* include/winreg.h (RegQueryMultipleValuesA, RegQueryMultipleValuesW,
	RegQueryValueExA, RegQueryValueExW): Correct prototypes.
	* include/winsvc.h (StartServiceW): Correct prototype.
	* include/winuser.h (VK_*, FLASHW_*, INPUT_MOUSE, INPUT_KEYBOARD,
	INPUT_HARDWARE, HDEVNOTIFY): Add defines.
	(FLASHWINFO, PFLASHWINFO, tagMOUSEMOVEPOINT, tagMOUSEINPUT,
	tagKEYBDINPUT, tagHARDWAREINPUT, tagINPUT, tagGUITHREADINFO): Add typedefs.
	(CreateDesktopA, CreateDesktopW, CreateMDIWindowA, CreateMDIWindowW,
	GetClassInfoA, GetClassInfoExA, GetClassInfoW, GetClassInfoExW,
	GetKeyboardLayoutList, GetMenuInfo, MessageBoxIndirectA,
	MessageBoxIndirectW, MsgWaitForMultipleObjects,
	MsgWaitForMultipleObjectsEx, RegisterClassA, RegisterClassW,
	RegisterClassExA, RegisterClassExW, SetMenuItemInfoA,
	SetMenuItemInfoW): Correct prototypes.
	* include/winver.h (VerQueryValueA, VerQueryValueW): Correct prototypes.


Index: include/basetsd.h
===================================================================
RCS file: /cvsroot/mingw/w32api/include/basetsd.h,v
retrieving revision 1.5
diff -b -u -r1.5 basetsd.h
--- include/basetsd.h	9 Apr 2002 21:17:17 -0000	1.5
+++ include/basetsd.h	15 Jun 2002 13:58:52 -0000
@@ -47,10 +47,15 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
+typedef short LONG16, *PLONG16;
+typedef short INT16, *PINT16;
 typedef int LONG32, *PLONG32;
 #ifndef XFree86Server
 typedef int INT32, *PINT32;
 #endif /* ndef XFree86Server */
+typedef unsigned short ULONG16, *PULONG16;
+typedef unsigned short DWORD16, *PDWORD16;
+typedef unsigned short UINT16, *PUINT16;
 typedef unsigned int ULONG32, *PULONG32;
 typedef unsigned int DWORD32, *PDWORD32;
 typedef unsigned int UINT32, *PUINT32;
Index: include/ddeml.h
===================================================================
RCS file: /cvsroot/mingw/w32api/include/ddeml.h,v
retrieving revision 1.2
diff -b -u -r1.2 ddeml.h
--- include/ddeml.h	9 Apr 2002 21:17:17 -0000	1.2
+++ include/ddeml.h	15 Jun 2002 13:58:52 -0000
@@ -190,8 +190,8 @@
 HCONV WINAPI DdeConnect(DWORD,HSZ,HSZ,PCONVCONTEXT);
 HCONVLIST WINAPI DdeConnectList(DWORD,HSZ,HSZ,HCONVLIST,PCONVCONTEXT);
 HDDEDATA WINAPI DdeCreateDataHandle(DWORD,PBYTE,DWORD,DWORD,HSZ,UINT,UINT);
-HSZ WINAPI DdeCreateStringHandleA(DWORD,LPCSTR,int);
-HSZ WINAPI DdeCreateStringHandleW(DWORD,LPCWSTR,int);
+HSZ WINAPI DdeCreateStringHandleA(DWORD,LPSTR,int);
+HSZ WINAPI DdeCreateStringHandleW(DWORD,LPWSTR,int);
 BOOL WINAPI DdeDisconnect(HCONV);
 BOOL WINAPI DdeDisconnectList(HCONVLIST);
 BOOL WINAPI DdeEnableCallback(DWORD,HCONV,UINT);
Index: include/ntdef.h
===================================================================
RCS file: /cvsroot/mingw/w32api/include/ntdef.h,v
retrieving revision 1.3
diff -b -u -r1.3 ntdef.h
--- include/ntdef.h	14 Jun 2002 11:44:47 -0000	1.3
+++ include/ntdef.h	15 Jun 2002 13:58:52 -0000
@@ -4,6 +4,8 @@
 #pragma GCC system_header
 #endif
 
+typedef CONST int CINT;
+typedef CONST char *PCSZ;
 #define NTAPI __stdcall
 #define OBJ_INHERIT 2L
 #define OBJ_PERMANENT 16L
Index: include/wincon.h
===================================================================
RCS file: /cvsroot/mingw/w32api/include/wincon.h,v
retrieving revision 1.2
diff -b -u -r1.2 wincon.h
--- include/wincon.h	9 Apr 2002 21:17:17 -0000	1.2
+++ include/wincon.h	15 Jun 2002 13:58:52 -0000
@@ -51,6 +51,8 @@
 #define MOUSE_MOVED	1
 #define DOUBLE_CLICK	2
 #define MOUSE_WHEELED	4
+#define CONSOLE_OUTPUT_MODE_VALID 0x03
+#define CONSOLE_INPUT_MODE_VALID 0x0f
 
 typedef struct _CHAR_INFO {
 	union {
@@ -119,7 +121,7 @@
 } INPUT_RECORD,*PINPUT_RECORD;
 
 BOOL WINAPI AllocConsole(void);
-HANDLE WINAPI CreateConsoleScreenBuffer(DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,PVOID);
+HANDLE WINAPI CreateConsoleScreenBuffer(DWORD,DWORD,CONST LPSECURITY_ATTRIBUTES,DWORD,LPVOID);
 BOOL WINAPI FillConsoleOutputAttribute(HANDLE,WORD,DWORD,COORD,PDWORD);
 BOOL WINAPI FillConsoleOutputCharacterA(HANDLE,CHAR,DWORD,COORD,PDWORD);
 BOOL WINAPI FillConsoleOutputCharacterW(HANDLE,WCHAR,DWORD,COORD,PDWORD);
Index: include/winerror.h
===================================================================
RCS file: /cvsroot/mingw/w32api/include/winerror.h,v
retrieving revision 1.3
diff -b -u -r1.3 winerror.h
--- include/winerror.h	9 Apr 2002 21:17:17 -0000	1.3
+++ include/winerror.h	15 Jun 2002 13:58:53 -0000
@@ -631,6 +631,9 @@
 #define RPC_X_INVALID_ES_ACTION 1827L
 #define RPC_X_WRONG_ES_VERSION 1828L
 #define RPC_X_WRONG_STUB_VERSION 1829L
+#define RPC_X_INVALID_PIPE_OBJECT 1830L
+#define RPC_X_WRONG_PIPE_ORDER 1831L
+#define RPC_X_WRONG_PIPE_VERSION 1832L
 #define RPC_S_GROUP_MEMBER_NOT_FOUND 1898L
 #define EPT_S_CANT_CREATE 1899L
 #define RPC_S_INVALID_OBJECT 1900L
@@ -643,6 +646,7 @@
 #define ERROR_PASSWORD_MUST_CHANGE 1907L
 #define ERROR_DOMAIN_CONTROLLER_NOT_FOUND 1908L
 #define ERROR_ACCOUNT_LOCKED_OUT 1909L
+#define RPC_S_SEND_INCOMPLETE 1913L
 #define ERROR_NO_BROWSER_SERVERS_FOUND 6118L
 #define ERROR_INVALID_PIXEL_FORMAT 2000L
 #define ERROR_BAD_DRIVER 2001L
Index: include/wingdi.h
===================================================================
RCS file: /cvsroot/mingw/w32api/include/wingdi.h,v
retrieving revision 1.8
diff -b -u -r1.8 wingdi.h
--- include/wingdi.h	14 Jun 2002 11:44:47 -0000	1.8
+++ include/wingdi.h	15 Jun 2002 13:58:54 -0000
@@ -1401,7 +1401,7 @@
 	FLOAT eM22;
 	FLOAT eDx;
 	FLOAT eDy;
-} XFORM,*LPXFORM;
+} XFORM,*PXFORM,*LPXFORM;
 typedef struct tagEMRBITBLT {
 	EMR emr;
 	RECTL rclBounds;
@@ -1423,7 +1423,7 @@
 	UINT lbStyle;
 	COLORREF lbColor;
 	LONG lbHatch;
-} LOGBRUSH,*LPLOGBRUSH;
+} LOGBRUSH,*PLOGBRUSH,*LPLOGBRUSH;
 typedef LOGBRUSH PATTERN,*PPATTERN,*LPPATTERN;
 typedef struct tagEMRCREATEBRUSHINDIRECT {
 	EMR emr;
@@ -1499,7 +1499,7 @@
 	UINT lopnStyle;
 	POINT lopnWidth;
 	COLORREF lopnColor;
-} LOGPEN,*LPLOGPEN;
+} LOGPEN,*PLOGPEN, *LPLOGPEN;
 typedef struct tagEMRCREATEPEN {
 	EMR emr;
 	DWORD ihPen;
@@ -2020,7 +2020,7 @@
 typedef struct _RGNDATA {
 	RGNDATAHEADER rdh;
 	char Buffer[1];
-} RGNDATA,*LPRGNDATA;
+} RGNDATA,*PRGNDATA, *LPRGNDATA;
 /* for GetRandomRgn */
 #define SYSRGN  4
 typedef struct tagGCP_RESULTSA {
@@ -2148,7 +2148,7 @@
 	UINT uiFlags;
 	RECT rcl;
 	int *pdx;
-} POLYTEXTA;
+} POLYTEXTA, *PPOLYTEXTA;
 typedef struct _POLYTEXTW {
 	int x;
 	int y;
@@ -2157,7 +2157,7 @@
 	UINT uiFlags;
 	RECT rcl;
 	int *pdx;
-} POLYTEXTW;
+} POLYTEXTW, *PPOLYTEXTW;
 typedef struct tagPIXELFORMATDESCRIPTOR {
 	WORD nSize;
 	WORD nVersion;
@@ -2346,6 +2346,30 @@
     BYTE SourceConstantAlpha;
     BYTE AlphaFormat; 
 } BLENDFUNCTION,*PBLENDFUNCTION,*LPBLENDFUNCTION; 
+#define MM_MAX_NUMAXES  16
+typedef struct _DESIGNVECTOR {
+	DWORD dvReserved;
+	DWORD dvNumAxes;
+	LONG dvValues[MM_MAX_NUMAXES];
+} DESIGNVECTOR, *PDESIGNVECTOR, FAR *LPDESIGNVECTOR;
+typedef USHORT COLOR16;
+typedef struct _TRIVERTEX {
+	LONG x;
+	LONG y;
+	COLOR16 Red;
+	COLOR16 Green;
+	COLOR16 Blue;
+	COLOR16 Alpha;
+}TRIVERTEX,*PTRIVERTEX,*LPTRIVERTEX;
+typedef struct _DISPLAY_DEVICE {
+  DWORD cb;
+  WCHAR DeviceName[32];
+  WCHAR DeviceString[128];
+  DWORD StateFlags;
+  WCHAR DeviceID[128];
+  WCHAR DeviceKey[128];
+} DISPLAY_DEVICE, *PDISPLAY_DEVICE;
+
 typedef BOOL (CALLBACK *ABORTPROC)(HDC,int);
 typedef int (CALLBACK *MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*,int,LPARAM);
 typedef int (CALLBACK *ENHMFENUMPROC)(HDC,HANDLETABLE*,ENHMETARECORD*,int,LPARAM);
@@ -2450,7 +2474,7 @@
 int WINAPI EnumFontFamiliesExA(HDC,PLOGFONTA,FONTENUMPROCA,LPARAM,DWORD);
 int WINAPI EnumFontFamiliesExW(HDC,PLOGFONTW,FONTENUMPROCW,LPARAM,DWORD);
 int WINAPI EnumFontsA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
-int WINAPI EnumFontsW(HDC,LPCWSTR,FONTENUMPROCA,LPARAM);
+int WINAPI EnumFontsW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
 int WINAPI EnumICMProfilesA(HDC,ICMENUMPROCA,LPARAM);
 int WINAPI EnumICMProfilesW(HDC,ICMENUMPROCW,LPARAM);
 BOOL WINAPI EnumMetaFile(HDC,HMETAFILE,MFENUMPROC,LPARAM);
@@ -2523,7 +2547,7 @@
 UINT WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE,UINT,LPWSTR);
 UINT WINAPI GetEnhMetaFileHeader(HENHMETAFILE,UINT,LPENHMETAHEADER);
 UINT WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE,UINT,LPPALETTEENTRY);
-UINT WINAPI GetEnhMetaFilePixelFormat(HENHMETAFILE,DWORD,PIXELFORMATDESCRIPTOR*);
+UINT WINAPI GetEnhMetaFilePixelFormat(HENHMETAFILE,DWORD,CONST PIXELFORMATDESCRIPTOR*);
 DWORD WINAPI GetFontData(HDC,DWORD,DWORD,PVOID,DWORD);
 DWORD WINAPI GetFontLanguageInfo(HDC);
 DWORD WINAPI GetGlyphOutlineA(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,PVOID,const MAT2*);
@@ -2700,7 +2724,7 @@
 BOOL WINAPI wglDescribeLayerPlane(HDC,int,int,UINT,LPLAYERPLANEDESCRIPTOR);
 HGLRC WINAPI wglGetCurrentContext(void);
 HDC WINAPI wglGetCurrentDC(void);
-int WINAPI wglGetLayerPaletteEntries(HDC,int,int,int,COLORREF*);
+int WINAPI wglGetLayerPaletteEntries(HDC,int,int,int,CONST COLORREF*);
 PROC WINAPI wglGetProcAddress(LPCSTR);
 BOOL WINAPI wglMakeCurrent(HDC,HGLRC);
 BOOL WINAPI wglRealizeLayerPalette(HDC,int,BOOL);
Index: include/winnls.h
===================================================================
RCS file: /cvsroot/mingw/w32api/include/winnls.h,v
retrieving revision 1.3
diff -b -u -r1.3 winnls.h
--- include/winnls.h	28 May 2002 13:19:42 -0000	1.3
+++ include/winnls.h	15 Jun 2002 13:58:55 -0000
@@ -521,8 +521,8 @@
 BOOL WINAPI GetCPInfo(UINT,LPCPINFO);
 BOOL WINAPI GetCPInfoExA(UINT,DWORD,LPCPINFOEXA);
 BOOL WINAPI GetCPInfoExW(UINT,DWORD,LPCPINFOEXW);
-int WINAPI GetCurrencyFormatA(LCID,DWORD,LPCSTR,const CURRENCYFMTA*,LPSTR,int);
-int WINAPI GetCurrencyFormatW(LCID,DWORD,LPCWSTR,const CURRENCYFMTW*,LPWSTR,int);
+int WINAPI GetCurrencyFormatA(LCID,DWORD,LPCSTR,CONST CURRENCYFMTA*,LPSTR,int);
+int WINAPI GetCurrencyFormatW(LCID,DWORD,LPCWSTR,CONST CURRENCYFMTW*,LPWSTR,int);
 int WINAPI GetDateFormatA(LCID,DWORD,const SYSTEMTIME*,LPCSTR,LPSTR,int);
 int WINAPI GetDateFormatW(LCID,DWORD,const SYSTEMTIME*,LPCWSTR,LPWSTR,int);
 int WINAPI GetLocaleInfoA(LCID,LCTYPE,LPSTR,int);
Index: include/winnt.h
===================================================================
RCS file: /cvsroot/mingw/w32api/include/winnt.h,v
retrieving revision 1.24
diff -b -u -r1.24 winnt.h
--- include/winnt.h	14 Jun 2002 11:44:47 -0000	1.24
+++ include/winnt.h	15 Jun 2002 13:58:57 -0000
@@ -49,7 +49,8 @@
 typedef char CHAR;
 typedef short SHORT;
 typedef long LONG;
-typedef CHAR CCHAR;
+typedef CHAR CCHAR, *PCCHAR;
+typedef short CSHORT, *PCSHORT;
 typedef unsigned char UCHAR,*PUCHAR;
 typedef unsigned short USHORT,*PUSHORT;
 typedef unsigned long ULONG,*PULONG;
@@ -147,6 +148,9 @@
 #define UNICODE_NULL L'\0'
 typedef BYTE BOOLEAN,*PBOOLEAN;
 #endif
+typedef BYTE FCHAR;
+typedef WORD FSHORT;
+typedef DWORD FLONG;
 
 #define NTAPI __stdcall
 #include <basetsd.h>
@@ -205,6 +209,8 @@
 #define FILE_DELETE_CHILD	64
 #define FILE_READ_ATTRIBUTES	128
 #define FILE_WRITE_ATTRIBUTES	256
+#define FILE_ANY_ACCESS 0
+#define FILE_SPECIAL_ACCESS (FILE_ANY_ACCESS)
 #define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x1FF)
 #define FILE_GENERIC_READ (STANDARD_RIGHTS_READ|FILE_READ_DATA|FILE_READ_ATTRIBUTES|FILE_READ_EA|SYNCHRONIZE)
 #define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE|FILE_WRITE_DATA|FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|FILE_APPEND_DATA|SYNCHRONIZE)
@@ -256,6 +262,7 @@
 #define DUPLICATE_SAME_ACCESS	2
 #define PROCESS_TERMINATE	1
 #define PROCESS_CREATE_THREAD	2
+#define PROCESS_SET_SESSIONID	4
 #define PROCESS_VM_OPERATION	8
 #define PROCESS_VM_READ	16
 #define PROCESS_VM_WRITE	32
@@ -264,6 +271,9 @@
 #define PROCESS_SET_QUOTA	256
 #define PROCESS_SET_INFORMATION	512
 #define PROCESS_QUERY_INFORMATION	1024
+#define PROCESS_READ 0x020410
+#define PROCESS_WRITE 0x020beb
+#define PROCESS_EXECUTE 0x120000L
 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xFFF)
 #define THREAD_TERMINATE	1
 #define THREAD_SUSPEND_RESUME	2
@@ -311,6 +321,42 @@
 #define SECURITY_LOCAL_SYSTEM_RID	18
 #define SECURITY_BUILTIN_DOMAIN_RID   32
 #define SECURITY_PRINCIPAL_SELF_RID   10
+#define SECURITY_CREATOR_OWNER_SERVER_RID 0x2
+#define SECURITY_CREATOR_GROUP_SERVER_RID 0x3
+#define SECURITY_LOGON_IDS_RID_COUNT 0x3
+#define SECURITY_ANONYMOUS_LOGON_RID 0x7
+#define SECURITY_PROXY_RID 0x8
+#define SECURITY_ENTERPRISE_CONTROLLERS_RID 0x9
+#define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID
+#define SECURITY_AUTHENTICATED_USER_RID 0xB
+#define SECURITY_RESTRICTED_CODE_RID 0xC
+#define SECURITY_NT_NON_UNIQUE_RID 0x15
+#define SE_MIN_WELL_KNOWN_PRIVILEGE 2
+#define SE_CREATE_TOKEN_PRIVILEGE 2
+#define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE 3
+#define SE_LOCK_MEMORY_PRIVILEGE 4
+#define SE_INCREASE_QUOTA_PRIVILEGE 5
+#define SE_UNSOLICITED_INPUT_PRIVILEGE 6
+#define SE_MACHINE_ACCOUNT_PRIVILEGE 6
+#define SE_TCB_PRIVILEGE 7
+#define SE_SECURITY_PRIVILEGE 8
+#define SE_TAKE_OWNERSHIP_PRIVILEGE 9
+#define SE_LOAD_DRIVER_PRIVILEGE 10
+#define SE_SYSTEM_PROFILE_PRIVILEGE 11
+#define SE_SYSTEMTIME_PRIVILEGE 12
+#define SE_PROF_SINGLE_PROCESS_PRIVILEGE 13
+#define SE_INC_BASE_PRIORITY_PRIVILEGE 14
+#define SE_CREATE_PAGEFILE_PRIVILEGE 15
+#define SE_CREATE_PERMANENT_PRIVILEGE 16
+#define SE_BACKUP_PRIVILEGE 17
+#define SE_RESTORE_PRIVILEGE 18
+#define SE_SHUTDOWN_PRIVILEGE 19
+#define SE_DEBUG_PRIVILEGE 20
+#define SE_AUDIT_PRIVILEGE 21
+#define SE_SYSTEM_ENVIRONMENT_PRIVILEGE 22
+#define SE_CHANGE_NOTIFY_PRIVILEGE 23
+#define SE_REMOTE_SHUTDOWN_PRIVILEGE 24
+#define SE_MAX_WELL_KNOWN_PRIVILEGE SE_REMOTE_SHUTDOWN_PRIVILEGE
 #define SID_REVISION 1
 #define DOMAIN_USER_RID_ADMIN 0x1F4L
 #define DOMAIN_USER_RID_GUEST 0x1F5L
@@ -648,6 +694,8 @@
 #define MEM_PHYSICAL	   0x400000
 #define MEM_4MB_PAGES    0x80000000
 #define MEM_IMAGE 16777216
+#define SEC_BASED 0x00200000
+#define SEC_NO_CHANGE 0x00400000
 #define SEC_FILE 0x800000
 #define SEC_IMAGE 0x1000000
 #define SEC_VLM 0x2000000
@@ -659,6 +707,7 @@
 #define SECTION_MAP_READ 4
 #define SECTION_MAP_WRITE 2
 #define SECTION_QUERY 1
+#define SECTION_MAP_EXECUTE 8
 #define SECTION_ALL_ACCESS 0xf001f
 #define MESSAGE_RESOURCE_UNICODE 1
 #define RTL_CRITSECT_TYPE 0
@@ -1119,6 +1168,7 @@
 #define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003
 #ifndef RC_INVOKED
 typedef DWORD ACCESS_MASK, *PACCESS_MASK;
+typedef ULONG ACCESS_MODE, *PACCESS_MODE;
 #ifndef _GUID_DEFINED /* also defined in basetyps.h */
 #define _GUID_DEFINED
 typedef struct _GUID {
@@ -1127,6 +1177,7 @@
 	unsigned short Data3;
 	unsigned char  Data4[8];
 } GUID, *REFGUID, *LPGUID;
+typedef CONST LPGUID LPCGUID;
 #define SYSTEM_LUID { QuadPart:999 }
 #endif /* _GUID_DEFINED */
 typedef struct _GENERIC_MAPPING {
@@ -1785,7 +1836,7 @@
 typedef struct _LUID_AND_ATTRIBUTES {
 	LUID   Luid;
 	DWORD  Attributes;
-} LUID_AND_ATTRIBUTES;
+} LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES;
 #pragma pack(pop)
 typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
 typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
@@ -1804,7 +1855,7 @@
 	SecurityIdentification,
 	SecurityImpersonation,
 	SecurityDelegation
-} SECURITY_IMPERSONATION_LEVEL;
+} SECURITY_IMPERSONATION_LEVEL,*PSECURITY_IMPERSONATION_LEVEL;
 typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE;
 typedef struct _SECURITY_QUALITY_OF_SERVICE {
 	DWORD Length;
@@ -1832,7 +1883,7 @@
 typedef struct _SID_AND_ATTRIBUTES {
 	PSID Sid;
 	DWORD Attributes;
-} SID_AND_ATTRIBUTES;
+} SID_AND_ATTRIBUTES, *PSID_AND_ATTRIBUTES;
 typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
 typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
 typedef struct _TOKEN_SOURCE {
@@ -1862,7 +1913,7 @@
 	DWORD PrivilegeCount;
 	LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
 } TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES;
-typedef enum tagTOKEN_TYPE { TokenPrimary=1,TokenImpersonation }TOKEN_TYPE;
+typedef enum tagTOKEN_TYPE { TokenPrimary=1,TokenImpersonation }TOKEN_TYPE, *PTOKEN_TYPE;
 typedef struct _TOKEN_STATISTICS {
 	LUID TokenId;
 	LUID AuthenticationId;
@@ -1874,7 +1925,7 @@
 	DWORD GroupCount;
 	DWORD PrivilegeCount;
 	LUID ModifiedId;
-} TOKEN_STATISTICS;
+} TOKEN_STATISTICS, *PTOKEN_STATISTICS;
 typedef struct _TOKEN_USER {
 	SID_AND_ATTRIBUTES User;
 } TOKEN_USER, *PTOKEN_USER;
@@ -2621,12 +2672,16 @@
 typedef OSVERSIONINFOEXA OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX;
 #endif
 
-#if defined(__GNUC__)
+#if defined(_KERNEL32_)
+
+PVOID STDCALL GetCurrentFiber(VOID);
+PVOID STDCALL GetFiberData(VOID);
 
-PVOID GetCurrentFiber(void);
-PVOID GetFiberData(void);
+#else /* !_KERNEL32_ */
 
-PVOID GetCurrentFiber(void);
+#if defined(__GNUC__)
+
+PVOID GetCurrentFiber(VOID);
 extern __inline__ PVOID GetCurrentFiber(void)
 {
     void* ret;
@@ -2638,7 +2693,7 @@
     return ret;
 }
 
-PVOID GetFiberData(void);
+PVOID GetFiberData(VOID);
 extern __inline__ PVOID GetFiberData(void)
 {
     void* ret;
@@ -2653,13 +2708,13 @@
 
 #else
 
-extern PVOID GetCurrentFiber(void);
+extern PVOID GetCurrentFiber(VOID);
 #pragma aux GetCurrentFiber = \
         "mov	eax, dword ptr fs:0x10" \
         value [eax] \
         modify [eax];
 
-extern PVOID GetFiberData(void);
+extern PVOID GetFiberData(VOID);
 #pragma aux GetFiberData = \
 	"mov	eax, dword ptr fs:0x10" \
 	"mov	eax, [eax]" \
@@ -2667,6 +2722,8 @@
         modify [eax];
         
 #endif /* __GNUC__ */
+
+#endif /* !_KERNEL32_ */
 
 #endif
 #ifdef __cplusplus
Index: include/winreg.h
===================================================================
RCS file: /cvsroot/mingw/w32api/include/winreg.h,v
retrieving revision 1.3
diff -b -u -r1.3 winreg.h
--- include/winreg.h	28 May 2002 13:19:42 -0000	1.3
+++ include/winreg.h	15 Jun 2002 13:58:57 -0000
@@ -83,11 +83,11 @@
 LONG WINAPI RegOpenKeyW(HKEY,LPCWSTR,PHKEY);
 LONG WINAPI RegQueryInfoKeyA(HKEY,LPSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PFILETIME);
 LONG WINAPI RegQueryInfoKeyW(HKEY,LPWSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PFILETIME);
-LONG WINAPI RegQueryMultipleValuesA(HKEY,PVALENTA,DWORD,LPSTR,PDWORD);
-LONG WINAPI RegQueryMultipleValuesW(HKEY,PVALENTW,DWORD,LPWSTR,PDWORD);
+LONG WINAPI RegQueryMultipleValuesA(HKEY,PVALENTA,DWORD,LPSTR,LPDWORD);
+LONG WINAPI RegQueryMultipleValuesW(HKEY,PVALENTW,DWORD,LPWSTR,LPDWORD);
 LONG WINAPI RegQueryValueA(HKEY,LPCSTR,LPSTR,PLONG);
-LONG WINAPI RegQueryValueExA(HKEY,LPCSTR,PDWORD,PDWORD,LPBYTE,PDWORD);
-LONG WINAPI RegQueryValueExW(HKEY,LPCWSTR,PDWORD,PDWORD,LPBYTE,PDWORD);
+LONG WINAPI RegQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
+LONG WINAPI RegQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
 LONG WINAPI RegQueryValueW(HKEY,LPCWSTR,LPWSTR,PLONG);
 LONG WINAPI RegReplaceKeyA(HKEY,LPCSTR,LPCSTR,LPCSTR);
 LONG WINAPI RegReplaceKeyW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR);
Index: include/winsvc.h
===================================================================
RCS file: /cvsroot/mingw/w32api/include/winsvc.h,v
retrieving revision 1.3
diff -b -u -r1.3 winsvc.h
--- include/winsvc.h	9 Apr 2002 21:17:17 -0000	1.3
+++ include/winsvc.h	15 Jun 2002 13:58:57 -0000
@@ -235,7 +235,7 @@
 BOOL WINAPI StartServiceA(SC_HANDLE,DWORD,LPCSTR*);
 BOOL WINAPI StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA);
 BOOL WINAPI StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW);
-BOOL WINAPI StartServiceW(SC_HANDLE,DWORD,LPCWSTR);
+BOOL WINAPI StartServiceW(SC_HANDLE,DWORD,LPCWSTR*);
 BOOL WINAPI UnlockServiceDatabase(SC_LOCK);
 
 #ifdef UNICODE
Index: include/winuser.h
===================================================================
RCS file: /cvsroot/mingw/w32api/include/winuser.h,v
retrieving revision 1.16
diff -b -u -r1.16 winuser.h
--- include/winuser.h	14 Jun 2002 11:44:47 -0000	1.16
+++ include/winuser.h	15 Jun 2002 13:59:00 -0000
@@ -1587,6 +1587,42 @@
 #define VK_INSERT	45
 #define VK_DELETE	46
 #define VK_HELP	47
+#define VK_0 48
+#define VK_1 49
+#define VK_2 50
+#define VK_3 51
+#define VK_4 52
+#define VK_5 53
+#define VK_6 54
+#define VK_7 55
+#define VK_8 56
+#define VK_9 57
+#define VK_A 65
+#define VK_B 66
+#define VK_C 67
+#define VK_D 68
+#define VK_E 69
+#define VK_F 70
+#define VK_G 71
+#define VK_H 72
+#define VK_I 73
+#define VK_J 74
+#define VK_K 75
+#define VK_L 76
+#define VK_M 77
+#define VK_N 78
+#define VK_O 79
+#define VK_P 80
+#define VK_Q 81
+#define VK_R 82
+#define VK_S 83
+#define VK_T 84
+#define VK_U 85
+#define VK_V 86
+#define VK_W 87
+#define VK_X 88
+#define VK_Y 89
+#define VK_Z 90
 #define VK_LWIN	0x5B
 #define VK_RWIN	0x5C
 #define VK_APPS	0x5D
@@ -1896,6 +1932,15 @@
 #define MOD_RIGHT 16384
 #define MOD_LEFT 32768
 #define LLKHF_ALTDOWN  0x00000020
+#define FLASHW_STOP 0
+#define FLASHW_CAPTION 1
+#define FLASHW_TRAY 2
+#define FLASHW_ALL (FLASHW_CAPTION | FLASHW_TRAY)
+#define FLASHW_TIMER 4
+#define FLASHW_TIMERNOFG 12
+#define INPUT_MOUSE 0
+#define INPUT_KEYBOARD 1
+#define INPUT_HARDWARE 2
 
 #ifndef RC_INVOKED
 typedef BOOL(CALLBACK *DLGPROC)(HWND,UINT,WPARAM,LPARAM);
@@ -1922,6 +1967,7 @@
 typedef void(CALLBACK *SENDASYNCPROC)(HWND,UINT,DWORD,LRESULT);
 DECLARE_HANDLE(HHOOK);
 DECLARE_HANDLE(HDWP);
+DECLARE_HANDLE(HDEVNOTIFY);
 typedef struct tagACCEL {
 	BYTE fVirt;
 	WORD key;
@@ -2590,7 +2636,58 @@
 	DWORD time;
 	DWORD dwExtraInfo;
 } KBDLLHOOKSTRUCT, FAR *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;
-
+typedef struct {
+  UINT  cbSize;
+  HWND  hwnd;
+  DWORD dwFlags;
+  UINT  uCount;
+  DWORD dwTimeout;
+} FLASHWINFO, *PFLASHWINFO;
+typedef struct tagMOUSEMOVEPOINT {
+  int x;
+  int y;
+  DWORD time;
+  ULONG_PTR dwExtraInfo;
+} MOUSEMOVEPOINT, *PMOUSEMOVEPOINT, FAR *LPMOUSEMOVEPOINT;
+typedef struct tagMOUSEINPUT {
+  LONG dx;
+  LONG dy;
+  DWORD mouseData;
+  DWORD dwFlags;
+  DWORD time;
+  ULONG_PTR dwExtraInfo;
+} MOUSEINPUT, *PMOUSEINPUT;
+typedef struct tagKEYBDINPUT {
+  WORD wVk;
+  WORD wScan;
+  DWORD dwFlags;
+  DWORD time;
+  ULONG_PTR dwExtraInfo;
+} KEYBDINPUT, *PKEYBDINPUT;
+typedef struct tagHARDWAREINPUT {
+  DWORD uMsg;
+  WORD wParamL;
+  WORD wParamH;
+} HARDWAREINPUT, *PHARDWAREINPUT;
+typedef struct tagINPUT {
+  DWORD type;
+  union {
+		MOUSEINPUT mi;
+		KEYBDINPUT ki;
+		HARDWAREINPUT hi;
+  } DUMMYUNIONNAME;
+} INPUT, *PINPUT, FAR *LPINPUT;
+typedef struct tagGUITHREADINFO {
+	DWORD cbSize;
+	DWORD flags;
+	HWND hwndActive;
+	HWND hwndFocus;
+	HWND hwndCapture;
+	HWND hwndMenuOwner;
+	HWND hwndMoveSize;
+	HWND hwndCaret;
+	RECT rcCaret;
+} GUITHREADINFO, *PGUITHREADINFO, FAR *LPGUITHREADINFO;
 
 #define AnsiToOem CharToOemA
 #define OemToAnsi OemToCharA
@@ -2676,8 +2773,8 @@
 HACCEL WINAPI CreateAcceleratorTableW(LPACCEL,int);
 BOOL WINAPI CreateCaret(HWND,HBITMAP,int,int);
 HCURSOR WINAPI CreateCursor(HINSTANCE,int,int,int,int,PCVOID,PCVOID);
-HDESK WINAPI CreateDesktopA(LPSTR,LPSTR,LPDEVMODEA,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
-HDESK WINAPI CreateDesktopW(LPWSTR,LPWSTR,LPDEVMODEW,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+HDESK WINAPI CreateDesktopA(LPCSTR,LPCSTR,LPDEVMODEA,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES);
+HDESK WINAPI CreateDesktopW(LPCWSTR,LPCWSTR,LPDEVMODEW,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES);
 #define CreateDialogA(h,n,w,f) CreateDialogParamA(h,n,w,f,0)
 #define CreateDialogW(h,n,w,f) CreateDialogParamW(h,n,w,f,0)
 #define CreateDialogIndirectA(h,t,w,f) CreateDialogIndirectParamA(h,t,w,f,0)
@@ -2690,8 +2787,8 @@
 HICON WINAPI CreateIconFromResource(PBYTE,DWORD,BOOL,DWORD);
 HICON WINAPI CreateIconFromResourceEx(PBYTE,DWORD,BOOL,DWORD,int,int,UINT);
 HICON WINAPI CreateIconIndirect(PICONINFO);
-HWND WINAPI CreateMDIWindowA(LPSTR,LPSTR,DWORD,int,int,int,int,HWND,HINSTANCE,LPARAM);
-HWND WINAPI CreateMDIWindowW(LPWSTR,LPWSTR,DWORD,int,int,int,int,HWND,HINSTANCE,LPARAM);
+HWND WINAPI CreateMDIWindowA(LPCSTR,LPCSTR,DWORD,int,int,int,int,HWND,HINSTANCE,LPARAM);
+HWND WINAPI CreateMDIWindowW(LPCWSTR,LPCWSTR,DWORD,int,int,int,int,HWND,HINSTANCE,LPARAM);
 HMENU WINAPI CreateMenu(void);
 HMENU WINAPI CreatePopupMenu(void);
 #define CreateWindowA(a,b,c,d,e,f,g,h,i,j,k) CreateWindowExA(0,a,b,c,d,e,f,g,h,i,j,k)
@@ -2791,10 +2888,10 @@
 HWND WINAPI GetCapture(void);
 UINT WINAPI GetCaretBlinkTime(void);
 BOOL WINAPI GetCaretPos(LPPOINT);
-BOOL WINAPI GetClassInfoA(HINSTANCE,LPCSTR,PWNDCLASSA);
-BOOL WINAPI GetClassInfoExA(HINSTANCE,LPCSTR,PWNDCLASSEXA);
-BOOL WINAPI GetClassInfoW(HINSTANCE,LPCWSTR,PWNDCLASSW);
-BOOL WINAPI GetClassInfoExW(HINSTANCE,LPCWSTR,PWNDCLASSEXW);
+BOOL WINAPI GetClassInfoA(HINSTANCE,LPCSTR,LPWNDCLASSA);
+BOOL WINAPI GetClassInfoExA(HINSTANCE,LPCSTR,LPWNDCLASSEXA);
+BOOL WINAPI GetClassInfoW(HINSTANCE,LPCWSTR,LPWNDCLASSW);
+BOOL WINAPI GetClassInfoExW(HINSTANCE,LPCWSTR,LPWNDCLASSEXW);
 DWORD WINAPI GetClassLongA(HWND,int);
 DWORD WINAPI GetClassLongW(HWND,int);
 int WINAPI GetClassNameA(HWND,LPSTR,int);
@@ -2824,7 +2921,7 @@
 BOOL WINAPI GetInputState(void);
 UINT WINAPI GetKBCodePage(void);
 HKL WINAPI GetKeyboardLayout(DWORD);
-int WINAPI GetKeyboardLayoutList(int,HKL*);
+UINT WINAPI GetKeyboardLayoutList(int,HKL FAR*);
 BOOL WINAPI GetKeyboardLayoutNameA(LPSTR);
 BOOL WINAPI GetKeyboardLayoutNameW(LPWSTR);
 BOOL WINAPI GetKeyboardState(PBYTE);
@@ -2907,7 +3004,7 @@
 BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO);
 DWORD WINAPI GetListBoxInfo(HWND);
 BOOL WINAPI GetMenuBarInfo(HWND,LONG,LONG,PMENUBARINFO);
-BOOL WINAPI GetMenuInfo(HMENU,LPMENUINFO);
+BOOL WINAPI GetMenuInfo(HMENU,LPCMENUINFO);
 BOOL WINAPI GetScrollBarInfo(HWND,LONG,PSCROLLBARINFO);
 BOOL WINAPI GetTitleBarInfo(HWND,PTITLEBARINFO);
 BOOL WINAPI GetWindowInfo(HWND,PWINDOWINFO);
@@ -2987,14 +3084,14 @@
 int WINAPI MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT);
 int WINAPI MessageBoxExA(HWND,LPCSTR,LPCSTR,UINT,WORD);
 int WINAPI MessageBoxExW(HWND,LPCWSTR,LPCWSTR,UINT,WORD);
-int WINAPI MessageBoxIndirectA(LPMSGBOXPARAMSA);
-int WINAPI MessageBoxIndirectW(LPMSGBOXPARAMSW);
+int WINAPI MessageBoxIndirectA(CONST LPMSGBOXPARAMSA);
+int WINAPI MessageBoxIndirectW(CONST LPMSGBOXPARAMSW);
 BOOL WINAPI ModifyMenuA(HMENU,UINT,UINT,UINT,LPCSTR);
 BOOL WINAPI ModifyMenuW(HMENU,UINT,UINT,UINT,LPCWSTR);
 void WINAPI mouse_event(DWORD,DWORD,DWORD,DWORD,DWORD);
 BOOL WINAPI MoveWindow(HWND,int,int,int,int,BOOL);
-DWORD WINAPI MsgWaitForMultipleObjects(DWORD,LPHANDLE,BOOL,DWORD,DWORD);
-DWORD WINAPI MsgWaitForMultipleObjectsEx(DWORD,LPHANDLE,DWORD,DWORD,DWORD);
+DWORD WINAPI MsgWaitForMultipleObjects(DWORD,CONST LPHANDLE,BOOL,DWORD,DWORD);
+DWORD WINAPI MsgWaitForMultipleObjectsEx(DWORD,CONST LPHANDLE,DWORD,DWORD,DWORD);
 DWORD WINAPI OemKeyScan(WORD);
 BOOL WINAPI OemToCharA(LPCSTR,LPSTR);
 BOOL WINAPI OemToCharBuffA(LPCSTR,LPSTR,DWORD);
@@ -3020,10 +3117,10 @@
 BOOL WINAPI PostThreadMessageW(DWORD,UINT,WPARAM,LPARAM);
 BOOL WINAPI PtInRect(LPCRECT,POINT);
 BOOL WINAPI RedrawWindow(HWND,LPCRECT,HRGN,UINT);
-ATOM WINAPI RegisterClassA(const WNDCLASSA*);
-ATOM WINAPI RegisterClassW(const WNDCLASSW*);
-ATOM WINAPI RegisterClassExA(const WNDCLASSEXA*);
-ATOM WINAPI RegisterClassExW(const WNDCLASSEXW*);
+ATOM WINAPI RegisterClassA(CONST WNDCLASSA*);
+ATOM WINAPI RegisterClassW(CONST WNDCLASSW*);
+ATOM WINAPI RegisterClassExA(CONST WNDCLASSEXA*);
+ATOM WINAPI RegisterClassExW(CONST WNDCLASSEXW*);
 UINT WINAPI RegisterClipboardFormatA(LPCSTR);
 UINT WINAPI RegisterClipboardFormatW(LPCWSTR);
 BOOL WINAPI RegisterHotKey(HWND,int,UINT,UINT);
@@ -3073,8 +3170,8 @@
 BOOL WINAPI SetMenuDefaultItem(HMENU,UINT,UINT);
 BOOL WINAPI SetMenuInfo(HMENU,LPCMENUINFO);
 BOOL WINAPI SetMenuItemBitmaps(HMENU,UINT,UINT,HBITMAP,HBITMAP);
-BOOL WINAPI SetMenuItemInfoA(HMENU,UINT,BOOL,LPCMENUITEMINFOA);
-BOOL WINAPI SetMenuItemInfoW( HMENU,UINT,BOOL,LPCMENUITEMINFOW);
+BOOL WINAPI SetMenuItemInfoA(HMENU,UINT,BOOL,LPMENUITEMINFOA);
+BOOL WINAPI SetMenuItemInfoW( HMENU,UINT,BOOL,LPMENUITEMINFOW);
 LPARAM WINAPI SetMessageExtraInfo(LPARAM);
 BOOL WINAPI SetMessageQueue(int);
 HWND WINAPI SetParent(HWND,HWND);
Index: include/winver.h
===================================================================
RCS file: /cvsroot/mingw/w32api/include/winver.h,v
retrieving revision 1.2
diff -b -u -r1.2 winver.h
--- include/winver.h	9 Apr 2002 21:17:17 -0000	1.2
+++ include/winver.h	15 Jun 2002 13:59:00 -0000
@@ -107,8 +107,8 @@
 BOOL WINAPI GetFileVersionInfoW(LPWSTR,DWORD,DWORD,PVOID);
 DWORD WINAPI VerLanguageNameA(DWORD,LPSTR,DWORD);
 DWORD WINAPI VerLanguageNameW(DWORD,LPWSTR,DWORD);
-BOOL WINAPI VerQueryValueA(PCVOID,LPSTR,PVOID*,PUINT);
-BOOL WINAPI VerQueryValueW(PCVOID,LPWSTR,PVOID*,PUINT);
+BOOL WINAPI VerQueryValueA(const LPVOID,LPSTR,PVOID*,PUINT);
+BOOL WINAPI VerQueryValueW(const LPVOID,LPWSTR,PVOID*,PUINT);
 #ifdef UNICODE
 #define VerFindFile VerFindFileW
 #define VerQueryValue VerQueryValueW


_______________________________________________________________

Don't miss the 2002 Sprint PCS Application Developer's Conference
August 25-28 in Las Vegas - http://devcon.sprintpcs.com/adp/index.cfm?source=osdntextlink
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.