home *** CD-ROM | disk | FTP | other *** search
-
- {*******************************************************}
- { }
- { Turbo Pascal Runtime Library }
- { DOS Protected-mode Interface Unit }
- { }
- { Copyright (c) 1991,92 Borland International }
- { }
- {*******************************************************}
-
- unit WinAPI;
-
- {$S-}
-
- interface
-
- { Generic types }
-
- type
- Bool = WordBool; { Windows compatible boolean }
- THandle = Word; { Global memory handle }
- TFarProc = Pointer; { Procedure address }
-
- { Flags returned by GetWinFlags }
-
- const
- wf_PMode = $00000001; { Running in protected mode }
- wf_CPU286 = $00000002; { System CPU is an 80286 }
- wf_CPU386 = $00000004; { System CPU is an 80386 }
- wf_CPU486 = $00000008; { System CPU is an 80486 }
- wf_Standard = $00000010; { Running in standard mode }
- wf_Enhanced = $00000020; { Running in enhanced mode }
- wf_CPU086 = $00000040; { System CPU is an 8086 }
- wf_CPU186 = $00000080; { System CPU is an 80186 }
- wf_LargeFrame = $00000100; { Windows EMS large-frame configuration }
- wf_SmallFrame = $00000200; { Windows EMS small-frame configuration }
- wf_80x87 = $00000400; { System contains a math coprocessor }
- wf_DPMI = $80000000; { Running in DOS protected mode }
-
- { GlobalAlloc and GlobalReAlloc flags }
-
- const
- gmem_Fixed = $0000; { Allocate fixed memory }
- gmem_Moveable = $0002; { Allocate moveable memory }
- gmem_NoCompact = $0010; { Don't compact when allocating }
- gmem_NoDiscard = $0020; { Don't discard when allocating }
- gmem_ZeroInit = $0040; { Initialize memory contents to zero }
- gmem_Modify = $0080; { Modify memory flags }
- gmem_Discardable = $0100; { Allocate discardable memory }
- gmem_Not_Banked = $1000; { Allocate non-banked memory }
- gmem_DDEShare = $2000; { Allocate sharable memory }
- gmem_Notify = $4000; { Notify upon discarding }
-
- { Flags returned by GlobalFlags (in addition to gmem_Discardable) }
-
- const
- gmem_Discarded = $4000;
- gmem_LockCount = $00FF;
-
- { MessageBox Flags }
-
- const
- mb_Ok = $0000;
- mb_OkCancel = $0001;
- mb_AbortRetryIgnore = $0002;
- mb_YesNoCancel = $0003;
- mb_YesNo = $0004;
- mb_RetryCancel = $0005;
-
- mb_IconHand = $0010;
- mb_IconStop = $0010;
- mb_IconQuestion = $0020;
- mb_IconExclamation = $0030;
- mb_IconAsterisk = $0040;
- mb_IconInformation = $0040;
-
- mb_DefButton1 = $0000;
- mb_DefButton2 = $0100;
- mb_DefButton3 = $0200;
-
- mb_ApplModal = $0000;
- mb_SystemModal = $1000;
- mb_TaskModal = $2000;
-
- mb_NoFocus = $8000;
-
- mb_TypeMask = $000F;
- mb_IconMask = $00F0;
- mb_DefMask = $0F00;
- mb_ModeMask = $3000;
- mb_MiscMask = $C000;
-
- { MessageBox return values }
-
- const
- id_Ok = 1;
- id_Cancel = 2;
- id_Abort = 3;
- id_Retry = 4;
- id_Ignore = 5;
- id_Yes = 6;
- id_No = 7;
-
- { Windows API routines }
-
- function AccessResource(Instance, ResInfo: THandle): Integer;
- function AllocDStoCSAlias(Selector: Word): Word;
- function AllocSelector(Selector: Word): Word;
- function ChangeSelector(SourceSelector, DestSelector: Word): Word;
- procedure DOS3Call;
- procedure FatalExit(Code: Integer);
- function FindResource(Instance: THandle; Name, ResType: PChar): THandle;
- procedure FreeLibrary(LibModule: THandle);
- function FreeResource(ResData: THandle): Bool;
- function FreeSelector(Selector: Word): Word;
- function GetDOSEnvironment: PChar;
- function GetFreeSpace(Flag: Word): Longint;
- function GetModuleFileName(Module: THandle; Filename: PChar; Size: Integer): Integer;
- function GetModuleHandle(ModuleName: PChar): THandle;
- function GetModuleUsage(Module: THandle): Integer;
- function GetProcAddress(Module: THandle; ProcName: PChar): TFarProc;
- function GetSelectorBase(Selector: Word): Longint;
- function GetSelectorLimit(Selector: Word): Longint;
- function GetVersion: Longint;
- function GetWinFlags: Longint;
- function GlobalAlloc(Flags: Word; Bytes: Longint): THandle;
- function GlobalAllocPtr(Flags: Word; Bytes: Longint): Pointer;
- function GlobalCompact(MinFree: Longint): Longint;
- function GlobalDiscard(Mem: THandle): THandle;
- function GlobalDosAlloc(Bytes: Longint): Longint;
- function GlobalDosFree(Selector: Word): Word;
- procedure GlobalFix(Mem: THandle);
- function GlobalFlags(Mem: THandle): Word;
- function GlobalFree(Mem: THandle): THandle;
- function GlobalFreePtr(P: Pointer): THandle;
- function GlobalHandle(Mem: Word): Longint;
- function GlobalLock(Mem: THandle): Pointer;
- function GlobalLRUNewest(Mem: THandle): THandle;
- function GlobalLRUOldest(Mem: THandle): THandle;
- procedure GlobalNotify(NotifyProc: TFarProc);
- function GlobalPageLock(Selector: THandle): Word;
- function GlobalPageUnlock(Selector: THandle): Word;
- function GlobalPtrHandle(P: Pointer): THandle;
- function GlobalReAlloc(Mem: THandle; Bytes: Longint; Flags: Word): THandle;
- function GlobalReAllocPtr(P: Pointer; Bytes: Longint; Flags: Word): Pointer;
- function GlobalSize(Mem: THandle): Longint;
- function GlobalUnfix(Mem: THandle): Bool;
- function GlobalUnlock(Mem: THandle): Bool;
- function LoadLibrary(LibFileName: PChar): THandle;
- function LoadResource(Instance: THandle; ResInfo: THandle): THandle;
- function LoadString(Instance: THandle; ID: Word; Buffer: PChar;
- BufferMax: Integer): Integer;
- function LockResource(ResData: THandle): Pointer;
- function LockSegment(Segment: Word): THandle;
- function MessageBox(WndParent: THandle; Text, Caption: PChar;
- TextType: Word): Integer;
- function PrestoChangoSelector(SourceSelector, DestSelector: Word): Word;
- function SetSelectorBase(Selector: Word; Base: Longint): Word;
- function SetSelectorLimit(Selector: Word; Limit: Longint): Word;
- function SizeOfResource(Instance, ResInfo: THandle): Longint;
- function UnlockResource(ResData: THandle): Bool;
- function UnlockSegment(Segment: Word): THandle;
-
- { Inline routines }
-
- function MakeLong(A, B: Word): Longint;
- inline(
- $5A/ { POP DX }
- $58); { POP AX }
-
- function LoWord(A: Longint): Word;
- inline(
- $58/ { POP AX }
- $5A); { POP DX }
-
- function HiWord(A: Longint): Word;
- inline(
- $5A/ { POP DX }
- $58); { POP AX }
-
- function LoByte(A: Word): Byte;
- inline(
- $58/ { POP AX }
- $32/$E4); { XOR AH,AH }
-
- function HiByte(A: Word): Byte;
- inline(
- $58/ { POP AX }
- $8A/$C4/ { MOV AL,AH }
- $32/$E4); { XOR AH,AH }
-
- implementation
-
- { KERNEL routines }
-
- procedure FatalExit; external 'KERNEL' index 1;
- function GetVersion; external 'KERNEL' index 3;
- function GlobalAlloc; external 'KERNEL' index 15;
- function GlobalReAlloc; external 'KERNEL' index 16;
- function GlobalFree; external 'KERNEL' index 17;
- function GlobalLock; external 'KERNEL' index 18;
- function GlobalUnlock; external 'KERNEL' index 19;
- function UnlockResource; external 'KERNEL' index 19;
- function GlobalSize; external 'KERNEL' index 20;
- function GlobalHandle; external 'KERNEL' index 21;
- function GlobalFlags; external 'KERNEL' index 22;
- function LockSegment; external 'KERNEL' index 23;
- function UnlockSegment; external 'KERNEL' index 24;
- function GlobalCompact; external 'KERNEL' index 25;
- function GetModuleHandle; external 'KERNEL' index 47;
- function GetModuleUsage; external 'KERNEL' index 48;
- function GetModuleFileName; external 'KERNEL' index 49;
- function GetProcAddress; external 'KERNEL' index 50;
- function FindResource; external 'KERNEL' index 60;
- function LoadResource; external 'KERNEL' index 61;
- function LockResource; external 'KERNEL' index 62;
- function FreeResource; external 'KERNEL' index 63;
- function AccessResource; external 'KERNEL' index 64;
- function SizeOfResource; external 'KERNEL' index 65;
- function LoadLibrary; external 'KERNEL' index 95;
- procedure FreeLibrary; external 'KERNEL' index 96;
- procedure DOS3Call; external 'KERNEL' index 102;
- function GetDOSEnvironment; external 'KERNEL' index 131;
- function GetWinFlags; external 'KERNEL' index 132;
- procedure GlobalNotify; external 'KERNEL' index 154;
- function GlobalLRUOldest; external 'KERNEL' index 163;
- function GlobalLRUNewest; external 'KERNEL' index 164;
- function GetFreeSpace; external 'KERNEL' index 169;
- function AllocDStoCSAlias; external 'KERNEL' index 171;
- function AllocSelector; external 'KERNEL' index 175;
- function FreeSelector; external 'KERNEL' index 176;
- function ChangeSelector; external 'KERNEL' index 177;
- function PrestoChangoSelector; external 'KERNEL' index 177;
- function GlobalDosAlloc; external 'KERNEL' index 184;
- function GlobalDosFree; external 'KERNEL' index 185;
- function GetSelectorBase; external 'KERNEL' index 186;
- function SetSelectorBase; external 'KERNEL' index 187;
- function GetSelectorLimit; external 'KERNEL' index 188;
- function SetSelectorLimit; external 'KERNEL' index 189;
- function GlobalPageLock; external 'KERNEL' index 191;
- function GlobalPageUnlock; external 'KERNEL' index 192;
- procedure GlobalFix; external 'KERNEL' index 197;
- function GlobalUnfix; external 'KERNEL' index 198;
-
- { USER routines }
-
- function MessageBox; external 'USER' index 1;
- function LoadString; external 'USER' index 176;
-
- { Wrapper routines }
-
- function GlobalDiscard(Mem: THandle): THandle; assembler;
- asm
- PUSH Mem
- XOR AX,AX
- PUSH AX
- PUSH AX
- MOV AX,gmem_Moveable
- PUSH AX
- CALL GlobalReAlloc
- end;
-
- function GlobalPtrHandle(P: Pointer): THandle; assembler;
- asm
- PUSH P.Word[2]
- CALL GlobalHandle
- end;
-
- function GlobalAllocPtr(Flags: Word; Bytes: Longint): Pointer; assembler;
- asm
- PUSH Flags
- PUSH Bytes.Word[2]
- PUSH Bytes.Word[0]
- CALL GlobalAlloc
- PUSH AX
- CALL GlobalLock
- end;
-
- function GlobalReAllocPtr(P: Pointer; Bytes: Longint;
- Flags: Word): Pointer; assembler;
- asm
- PUSH P.Word[2]
- CALL GlobalHandle
- PUSH AX
- PUSH AX
- CALL GlobalUnlock
- PUSH Bytes.Word[2]
- PUSH Bytes.Word[0]
- PUSH Flags
- CALL GlobalReAlloc
- PUSH AX
- CALL GlobalLock
- end;
-
- function GlobalFreePtr(P: Pointer): THandle; assembler;
- asm
- PUSH P.Word[2]
- CALL GlobalHandle
- PUSH AX
- PUSH AX
- CALL GlobalUnlock
- CALL GlobalFree
- end;
-
- end.
-