wine/include/toolhelp.h
Alexandre Julliard 1285c2f9e9 Release 960506
Mon May  6 12:56:26 1996  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [DEVELOPERS-HINTS]
	Added paragraph on naming conventions for Win16/Win32/Winelib.

	* [controls/menu.c]
	Create a default system menu that is the same for all windows
	instead of making a copy every time.

	* [include/wintypes.h]
	Added WINELIB_NAME and DECL_WINELIB_TYPE macros.
	Added xx16 and xx32 definitions for most types. General clean-up.

	* [memory/global.c] [memory/local.c] [*/*]
	Renamed Global and Local heap functions to xxx16. Added all xxx32
	versions of the same functions.

	* [memory/selector.c]
	Mask out lower bits of selector in FreeSelector().

	* [misc/lstr.c]
	Fixed wvsprintf().

	* [windows/class.c]
	Changed the class structure to make Win32 support easier.

	* [windows/defwnd.c]
	Added handling of WM_INITMENUPOPUP for system menu to gray out
	invalid options.

	* [windows/winpos.c]
	Bug fix: the WINDOSPOS structure pointer in WM_NCCALCSIZE must be
	a SEGPTR.

Sun May  5 03:51:26 1996  Huw D. M. Davies <h.davies1@physics.oxford.ac.uk>

	* [memory/local.c]
	Implementation of moveable and (rudimentary) support for
 	discardable local memory, plus several bug fixes.

Sat May  4 18:33:35 1996  Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>

	* [include/windows.h] [windows/win.c] [if1632/user.spec] 
	FindWindowEx() implemented (someone reported it was missing
	for FrameMaker 4.1).

	* [if1632/kernel32.spec] [if1632/user32.spec] [win32/memory.c]
	  [win32/resource.c]
	Misc small stubs/small functions which bring win95 binaries
	further down the road. (IsBadCodePtr, LocalReAlloc,GetCursorPos)
	Small fix in WIN32_LoadAcceleratorsA.

Fri May  3 19:43:12 1996  Frans van Dorsselaer <dorssel@rulhm1.LeidenUniv.nl>

	* [controls/edit.c] [controls/EDIT.TODO]
	Changed / fixed some types and typecasts.
	Fixed the scrollbar reset after WM_SETHANDLE / WM_SETTEXT.
	Added heap initialization in WM_CREATE.

Fri May  3 19:30:02 1996  Greg Kreider <kreider@natlab.research.philips.com>

	* [controls/combo.c] [controls/listbox.c]
	Pass WM_[HV]SCROLL to listbox, but not combo.
	Don't try to redraw non-existant scroll bars (changes dwStyle flags).
	Combo box gets border.
	Combo box includes button (otherwise button won't trigger dropdown).
	Proper border around RectButton.
	Check size consistancy of combo, listbox, and button after resizing 
	or before painting.  These routines still aren't completely correct.
	Localize size checks in separate routines.
	Listboxes are white.

Thu May  2 19:21:23 1996  Albrecht Kleine  <kleine@ak.sax.de>

	* [controls/combo.c][include/commdlg.h][include/commdlg.c]
	  [resources/sysres_De.rc][resources/sysres_En.rc]
	Introduced ChooseFont dialog, but needed some patches in 
	handling of comboboxes with edit controls.

Tue Apr 30 00:33:27 1996  Ulrich Schmid  <uschmid@mail.hh.provi.de>

	* [programs/winhelp/*]
	Added a help viewer and a simple `.hlp' to `.sgml' converter.

Mon Apr 29 14:17:57 1996  Tristan Tarrant <tst@sthinc.demon.co.uk>

	* [resources/sysres_*.rc] [misc/shell.c]
	Modified size of "About" dialog boxes.

Sat Apr 27 18:10:11 Martin von Loewis <loewis@informatik.hu-berlin.de>

	* [if1632/Makefile.in][loader/builtin.c]
	crtdll.spec, ntdll.spec, wsock32.spec: new files.

	* [loader/pe_image.c]
	Fix error message if import by ordinal failed.
1996-05-06 16:06:24 +00:00

347 lines
8.2 KiB
C

#ifndef __TOOLHELP_H
#define __TOOLHELP_H
#include "windows.h"
#define MAX_DATA 11
#define MAX_MODULE_NAME 9
#define MAX_PATH 255
#define MAX_CLASSNAME 255
/* Global heap */
typedef struct
{
DWORD dwSize;
WORD wcItems;
WORD wcItemsFree;
WORD wcItemsLRU;
} GLOBALINFO;
typedef struct
{
DWORD dwSize;
DWORD dwAddress;
DWORD dwBlockSize;
HGLOBAL hBlock;
WORD wcLock;
WORD wcPageLock;
WORD wFlags;
BOOL wHeapPresent;
HGLOBAL hOwner;
WORD wType;
WORD wData;
DWORD dwNext;
DWORD dwNextAlt;
} GLOBALENTRY;
/* GlobalFirst()/GlobalNext() flags */
#define GLOBAL_ALL 0
#define GLOBAL_LRU 1
#define GLOBAL_FREE 2
/* wType values */
#define GT_UNKNOWN 0
#define GT_DGROUP 1
#define GT_DATA 2
#define GT_CODE 3
#define GT_TASK 4
#define GT_RESOURCE 5
#define GT_MODULE 6
#define GT_FREE 7
#define GT_INTERNAL 8
#define GT_SENTINEL 9
#define GT_BURGERMASTER 10
/* wData values */
#define GD_USERDEFINED 0
#define GD_CURSORCOMPONENT 1
#define GD_BITMAP 2
#define GD_ICONCOMPONENT 3
#define GD_MENU 4
#define GD_DIALOG 5
#define GD_STRING 6
#define GD_FONTDIR 7
#define GD_FONT 8
#define GD_ACCELERATORS 9
#define GD_RCDATA 10
#define GD_ERRTABLE 11
#define GD_CURSOR 12
#define GD_ICON 14
#define GD_NAMETABLE 15
#define GD_MAX_RESOURCE 15
/* wFlags values */
#define GF_PDB_OWNER 0x0100 /* Low byte is KERNEL flags */
BOOL GlobalInfo( GLOBALINFO *pInfo );
BOOL GlobalFirst( GLOBALENTRY *pGlobal, WORD wFlags );
BOOL GlobalNext( GLOBALENTRY *pGlobal, WORD wFlags) ;
BOOL GlobalEntryHandle( GLOBALENTRY *pGlobal, HGLOBAL16 hItem );
BOOL GlobalEntryModule( GLOBALENTRY *pGlobal, HMODULE16 hModule, WORD wSeg );
/* Local heap */
typedef struct
{
DWORD dwSize;
WORD wcItems;
} LOCALINFO;
typedef struct
{
DWORD dwSize;
HLOCAL16 hHandle;
WORD wAddress;
WORD wSize;
WORD wFlags;
WORD wcLock;
WORD wType;
WORD hHeap;
WORD wHeapType;
WORD wNext;
} LOCALENTRY;
/* wHeapType values */
#define NORMAL_HEAP 0
#define USER_HEAP 1
#define GDI_HEAP 2
/* wFlags values */
#define LF_FIXED 1
#define LF_FREE 2
#define LF_MOVEABLE 4
/* wType values */
#define LT_NORMAL 0
#define LT_FREE 0xff
#define LT_GDI_PEN 1 /* LT_GDI_* is for GDI's heap */
#define LT_GDI_BRUSH 2
#define LT_GDI_FONT 3
#define LT_GDI_PALETTE 4
#define LT_GDI_BITMAP 5
#define LT_GDI_RGN 6
#define LT_GDI_DC 7
#define LT_GDI_DISABLED_DC 8
#define LT_GDI_METADC 9
#define LT_GDI_METAFILE 10
#define LT_GDI_MAX LT_GDI_METAFILE
#define LT_USER_CLASS 1 /* LT_USER_* is for USER's heap */
#define LT_USER_WND 2
#define LT_USER_STRING 3
#define LT_USER_MENU 4
#define LT_USER_CLIP 5
#define LT_USER_CBOX 6
#define LT_USER_PALETTE 7
#define LT_USER_ED 8
#define LT_USER_BWL 9
#define LT_USER_OWNERDRAW 10
#define LT_USER_SPB 11
#define LT_USER_CHECKPOINT 12
#define LT_USER_DCE 13
#define LT_USER_MWP 14
#define LT_USER_PROP 15
#define LT_USER_LBIV 16
#define LT_USER_MISC 17
#define LT_USER_ATOMS 18
#define LT_USER_LOCKINPUTSTATE 19
#define LT_USER_HOOKLIST 20
#define LT_USER_USERSEEUSERDOALLOC 21
#define LT_USER_HOTKEYLIST 22
#define LT_USER_POPUPMENU 23
#define LT_USER_HANDLETABLE 32
#define LT_USER_MAX LT_USER_HANDLETABLE
BOOL LocalInfo( LOCALINFO *pLocalInfo, HGLOBAL handle );
BOOL LocalFirst( LOCALENTRY *pLocalEntry, HGLOBAL handle );
BOOL LocalNext( LOCALENTRY *pLocalEntry );
/* modules */
typedef struct {
DWORD dwSize;
char szModule[MAX_MODULE_NAME + 1];
HMODULE hModule;
WORD wcUsage;
char szExePath[MAX_PATH + 1];
HANDLE wNext;
} MODULEENTRY;
typedef MODULEENTRY *LPMODULEENTRY;
BOOL ModuleFirst(MODULEENTRY *lpModule);
BOOL ModuleNext(MODULEENTRY *lpModule);
BOOL ModuleFindName(MODULEENTRY *lpModule, LPCSTR lpstrName);
BOOL ModuleFindHandle(MODULEENTRY *lpModule, HMODULE hModule);
/* tasks */
typedef struct tagTASKENTRY {
DWORD dwSize;
HTASK hTask;
HTASK hTaskParent;
HINSTANCE hInst;
HMODULE hModule;
WORD wSS;
WORD wSP;
WORD wStackTop;
WORD wStackMinimum;
WORD wStackBottom;
WORD wcEvents;
HGLOBAL hQueue;
char szModule[MAX_MODULE_NAME + 1];
WORD wPSPOffset;
HANDLE hNext;
} TASKENTRY;
typedef TASKENTRY *LPTASKENTRY;
BOOL TaskFirst(LPTASKENTRY lpTask);
BOOL TaskNext(LPTASKENTRY lpTask);
BOOL TaskFindHandle(LPTASKENTRY lpTask, HTASK hTask);
DWORD TaskSetCSIP(HTASK hTask, WORD wCS, WORD wIP);
DWORD TaskGetCSIP(HTASK hTask);
BOOL TaskSwitch(HTASK hTask, DWORD dwNewCSIP);
/* mem info */
typedef struct tagMEMMANINFO {
DWORD dwSize;
DWORD dwLargestFreeBlock;
DWORD dwMaxPagesAvailable;
DWORD dwMaxPagesLockable;
DWORD dwTotalLinearSpace;
DWORD dwTotalUnlockedPages;
DWORD dwFreePages;
DWORD dwTotalPages;
DWORD dwFreeLinearSpace;
DWORD dwSwapFilePages;
WORD wPageSize;
} MEMMANINFO;
typedef MEMMANINFO *LPMEMMANINFO;
typedef struct
{
DWORD dwSize;
WORD wUserFreePercent;
WORD wGDIFreePercent;
HGLOBAL hUserSegment;
HGLOBAL hGDISegment;
} SYSHEAPINFO;
BOOL MemManInfo(LPMEMMANINFO lpEnhMode);
BOOL SystemHeapInfo( SYSHEAPINFO *pHeapInfo );
/* timer info */
typedef struct tagTIMERINFO {
DWORD dwSize;
DWORD dwmsSinceStart;
DWORD dwmsThisVM;
} TIMERINFO;
BOOL TimerCount( TIMERINFO *pTimerInfo );
/* Window classes */
typedef struct
{
DWORD dwSize;
HMODULE hInst; /* This is really an hModule */
char szClassName[MAX_CLASSNAME + 1];
HANDLE wNext;
} CLASSENTRY;
BOOL ClassFirst( CLASSENTRY *pClassEntry );
BOOL ClassNext( CLASSENTRY *pClassEntry );
/* Memory read/write */
DWORD MemoryRead( WORD sel, DWORD offset, void *buffer, DWORD count );
DWORD MemoryWrite( WORD sel, DWORD offset, void *buffer, DWORD count );
/* flags to NotifyRegister() */
#define NF_NORMAL 0 /* everything except taskswitches, debugerrors,
* debugstrings
*/
#define NF_TASKSWITCH 1 /* get taskswitch information */
#define NF_RIP 2 /* get debugerrors of system */
BOOL NotifyRegister(HTASK htask,FARPROC lpfnCallback,WORD wFlags);
#define NFY_UNKNOWN 0
#define NFY_LOADSEG 1
/* DATA is a pointer to following struct: */
struct {
DWORD dwSize;
WORD wSelector;
WORD wSegNum;
WORD wType; /* bit 0 set if this is a code segment */
WORD wcInstance; /* only valid for data segment */
} NFYLOADSEG;
/* called when freeing a segment. LOWORD(dwData) is the freed selector */
#define NFY_FREESEG 2
/* called when loading/starting a DLL */
#define NFY_STARTDLL 3
struct {
DWORD dwSize;
HMODULE hModule;
WORD wCS;
WORD wIP;
} NFYSTARTDLL;
/* called when starting a task. dwData is CS:IP */
#define NFY_STARTTASK 4
/* called when a task terminates. dwData is the return code */
#define NFY_EXITTASK 5
/* called when module is removed. LOWORD(dwData) is the handle */
#define NFY_DELMODULE 6
/* RIP? debugevent */
#define NFY_RIP 7
struct {
DWORD dwSize;
WORD wIP;
WORD wCS;
WORD wSS;
WORD wBP;
WORD wExitCode;
} NFYRIP;
/* called before (after?) switching to a task
* no data, callback should call GetCurrentTask
*/
#define NFY_TASKIN 8
/* called before(after?) switching from a task
* no data, callback should call GetCurrentTask
*/
#define NFY_TASKOUT 9
/* returns ASCII input value, dwData not set */
#define NFY_INCHAR 10
/* output debugstring (pointed to by dwData) */
#define NFY_OUTSTRING 11
/* log errors */
#define NFY_LOGERROR 12
struct {
DWORD dwSize;
UINT wErrCode;
VOID *lpInfo; /* depends on wErrCode */
} NFYLOGERROR;
/* called for parameter errors? */
#define NFY_LOGPARAMERROR 13
struct {
DWORD dwSize;
UINT wErrCode;
FARPROC lpfnErrorAddr;
void **lpBadParam;
} NFYLOGPARAMERROR;
#endif /* __TOOLHELP_H */