+ imported the win16 local memory management functions

git-svn-id: trunk@31544 -
This commit is contained in:
nickysn 2015-09-05 23:16:43 +00:00
parent 1775725c26
commit 0abe2cddd6
2 changed files with 45 additions and 0 deletions

View File

@ -163,6 +163,26 @@ procedure LimitEmsPages(Kbytes: DWORD); external 'KERNEL';
procedure ValidateFreeSpaces; external 'KERNEL';
{ Local Memory Management }
function LocalDiscard(h: HLOCAL): HLOCAL; inline;
function LocalAlloc(Flags, Bytes: UINT): HLOCAL; external 'KERNEL';
function LocalReAlloc(Mem: HLOCAL; Bytes, Flags: UINT): HLOCAL; external 'KERNEL';
function LocalFree(Mem: HLOCAL): HLOCAL; external 'KERNEL';
function LocalLock(Mem: HLOCAL): NearPointer; external 'KERNEL';
function LocalUnlock(Mem: HLOCAL): BOOL; external 'KERNEL';
function LocalSize(Mem: HLOCAL): UINT; external 'KERNEL';
function LocalHandle(Mem: NearPointer): HLOCAL; external 'KERNEL';
function LocalFlags(Mem: HLOCAL): UINT; external 'KERNEL';
function LocalInit(Segment, Start, EndPos: UINT): BOOL; external 'KERNEL';
function LocalCompact(MinFree: UINT): UINT; external 'KERNEL';
function LocalShrink(Seg: HLOCAL; Size: UINT): UINT; external 'KERNEL';
implementation
function LOBYTE(w: Word): Byte;
@ -230,4 +250,9 @@ begin
UnlockSegment(UINT(-1));
end;
function LocalDiscard(h: HLOCAL): HLOCAL;
begin
LocalDiscard := LocalReAlloc(h, 0, LMEM_MOVEABLE);
end;
end.

View File

@ -144,6 +144,26 @@ const
type
GNOTIFYPROC = function(hGlbl: HGLOBAL): BOOL; far;
const
{ Local Memory Flags }
LMEM_FIXED = $0000;
LMEM_MOVEABLE = $0002;
LMEM_NOCOMPACT = $0010;
LMEM_NODISCARD = $0020;
LMEM_ZEROINIT = $0040;
LMEM_MODIFY = $0080;
LMEM_DISCARDABLE = $0F00;
LHND = LMEM_MOVEABLE or LMEM_ZEROINIT;
LPTR = LMEM_FIXED or LMEM_ZEROINIT;
NONZEROLHND = LMEM_MOVEABLE;
NONZEROLPTR = LMEM_FIXED;
{ LocalFlags return flags (in addition to LMEM_DISCARDABLE) }
LMEM_DISCARDED = $4000;
LMEM_LOCKCOUNT = $00FF;
implementation
end.