mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-18 23:49:07 +02:00
+ imported the global memory win16 api functions
git-svn-id: trunk@31543 -
This commit is contained in:
parent
f751b18754
commit
1775725c26
@ -109,6 +109,60 @@ function GetCurrentTask: HTASK; external 'KERNEL';
|
|||||||
procedure Yield; external 'KERNEL';
|
procedure Yield; external 'KERNEL';
|
||||||
procedure DirectedYield(Task: HTASK); external 'KERNEL';
|
procedure DirectedYield(Task: HTASK); external 'KERNEL';
|
||||||
|
|
||||||
|
{ Global memory management }
|
||||||
|
|
||||||
|
function GlobalDiscard(h: HGLOBAL): HGLOBAL; inline;
|
||||||
|
|
||||||
|
function GlobalAlloc(Flags: UINT; Bytes: DWORD): HGLOBAL; external 'KERNEL';
|
||||||
|
function GlobalReAlloc(Mem: HGLOBAL; Bytes: DWORD; Flags: UINT): HGLOBAL; external 'KERNEL';
|
||||||
|
function GlobalFree(Mem: HGLOBAL): HGLOBAL; external 'KERNEL';
|
||||||
|
|
||||||
|
function GlobalDosAlloc(Bytes: DWORD): DWORD; external 'KERNEL';
|
||||||
|
function GlobalDosFree(Selector: UINT): UINT; external 'KERNEL';
|
||||||
|
|
||||||
|
function GlobalLock(Mem: HGLOBAL): FarPointer; external 'KERNEL';
|
||||||
|
function GlobalUnlock(Mem: HGLOBAL): BOOL; external 'KERNEL';
|
||||||
|
|
||||||
|
function GlobalSize(Mem: HGLOBAL): DWORD; external 'KERNEL';
|
||||||
|
function GlobalHandle(Mem: UINT): DWORD; external 'KERNEL';
|
||||||
|
|
||||||
|
function GlobalFlags(Mem: HGLOBAL): UINT; external 'KERNEL';
|
||||||
|
|
||||||
|
function GlobalWire(Mem: HGLOBAL): FarPointer; external 'KERNEL';
|
||||||
|
function GlobalUnWire(Mem: HGLOBAL): BOOL; external 'KERNEL';
|
||||||
|
|
||||||
|
function GlobalPageLock(Selector: HGLOBAL): UINT; external 'KERNEL';
|
||||||
|
function GlobalPageUnlock(Selector: HGLOBAL): UINT; external 'KERNEL';
|
||||||
|
|
||||||
|
procedure GlobalFix(Mem: HGLOBAL); external 'KERNEL';
|
||||||
|
procedure GlobalUnfix(Mem: HGLOBAL); external 'KERNEL';
|
||||||
|
|
||||||
|
function GlobalLRUNewest(Mem: HGLOBAL): HGLOBAL; external 'KERNEL';
|
||||||
|
function GlobalLRUOldest(Mem: HGLOBAL): HGLOBAL; external 'KERNEL';
|
||||||
|
|
||||||
|
function GlobalCompact(MinFree: DWORD): DWORD; external 'KERNEL';
|
||||||
|
|
||||||
|
procedure GlobalNotify(NotifyProc: GNOTIFYPROC); external 'KERNEL';
|
||||||
|
|
||||||
|
function LockSegment(Segment: UINT): HGLOBAL; external 'KERNEL';
|
||||||
|
procedure UnlockSegment(Segment: UINT); external 'KERNEL';
|
||||||
|
|
||||||
|
function LockData(dummy: SmallInt): HGLOBAL; inline;
|
||||||
|
procedure UnlockData(dummy: SmallInt); inline;
|
||||||
|
|
||||||
|
function AllocSelector(Selector: UINT): UINT; external 'KERNEL';
|
||||||
|
function FreeSelector(Selector: UINT): UINT; external 'KERNEL';
|
||||||
|
function AllocDStoCSAlias(Selector: UINT): UINT; external 'KERNEL';
|
||||||
|
function PrestoChangoSelector(sourceSel, destSel: UINT): UINT; external 'KERNEL';
|
||||||
|
function GetSelectorBase(Selector: UINT): DWORD; external 'KERNEL';
|
||||||
|
function SetSelectorBase(Selector: UINT; Base: DWORD): UINT; external 'KERNEL';
|
||||||
|
function GetSelectorLimit(Selector: UINT): DWORD; external 'KERNEL';
|
||||||
|
function SetSelectorLimit(Selector: UINT; Base: DWORD): UINT; external 'KERNEL';
|
||||||
|
|
||||||
|
procedure LimitEmsPages(Kbytes: DWORD); external 'KERNEL';
|
||||||
|
|
||||||
|
procedure ValidateFreeSpaces; external 'KERNEL';
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
function LOBYTE(w: Word): Byte;
|
function LOBYTE(w: Word): Byte;
|
||||||
@ -161,4 +215,19 @@ begin
|
|||||||
OFFSETOF:=LOWORD(LongInt(lp));
|
OFFSETOF:=LOWORD(LongInt(lp));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function GlobalDiscard(h: HGLOBAL): HGLOBAL;
|
||||||
|
begin
|
||||||
|
GlobalDiscard := GlobalReAlloc(h, 0, GMEM_MOVEABLE);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function LockData(dummy: SmallInt): HGLOBAL;
|
||||||
|
begin
|
||||||
|
LockData := LockSegment(UINT(-1));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure UnlockData(dummy: SmallInt);
|
||||||
|
begin
|
||||||
|
UnlockSegment(UINT(-1));
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -116,6 +116,34 @@ type
|
|||||||
|
|
||||||
HTASK = THandle;
|
HTASK = THandle;
|
||||||
|
|
||||||
|
const
|
||||||
|
{ Global Memory Flags }
|
||||||
|
GMEM_FIXED = $0000;
|
||||||
|
GMEM_MOVEABLE = $0002;
|
||||||
|
GMEM_NOCOMPACT = $0010;
|
||||||
|
GMEM_NODISCARD = $0020;
|
||||||
|
GMEM_ZEROINIT = $0040;
|
||||||
|
GMEM_MODIFY = $0080;
|
||||||
|
GMEM_DISCARDABLE = $0100;
|
||||||
|
GMEM_NOT_BANKED = $1000;
|
||||||
|
GMEM_SHARE = $2000;
|
||||||
|
GMEM_DDESHARE = $2000;
|
||||||
|
GMEM_NOTIFY = $4000;
|
||||||
|
GMEM_LOWER = GMEM_NOT_BANKED;
|
||||||
|
|
||||||
|
GHND = GMEM_MOVEABLE or GMEM_ZEROINIT;
|
||||||
|
GPTR = GMEM_FIXED or GMEM_ZEROINIT;
|
||||||
|
|
||||||
|
{ GlobalFlags return flags (in addition to GMEM_DISCARDABLE) }
|
||||||
|
GMEM_DISCARDED = $4000;
|
||||||
|
GMEM_LOCKCOUNT = $00FF;
|
||||||
|
|
||||||
|
{ Low system memory notification message }
|
||||||
|
WM_COMPACTING = $0041;
|
||||||
|
|
||||||
|
type
|
||||||
|
GNOTIFYPROC = function(hGlbl: HGLOBAL): BOOL; far;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
Loading…
Reference in New Issue
Block a user