Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. (*
  2.     BSD 2-Clause License
  3.  
  4.     Copyright (c) 2019-2020, Anton Krotov
  5.     All rights reserved.
  6. *)
  7.  
  8. MODULE WINAPI;
  9.  
  10. IMPORT SYSTEM, API;
  11.  
  12.  
  13. CONST
  14.  
  15.     OFS_MAXPATHNAME* = 128;
  16.  
  17.  
  18. TYPE
  19.  
  20.     DLL_ENTRY* = API.DLL_ENTRY;
  21.  
  22.     STRING = ARRAY 260 OF CHAR;
  23.  
  24.     TCoord* = RECORD
  25.  
  26.         X*, Y*: WCHAR
  27.  
  28.     END;
  29.  
  30.     TSmallRect* = RECORD
  31.  
  32.         Left*, Top*, Right*, Bottom*: WCHAR
  33.  
  34.     END;
  35.  
  36.     TConsoleScreenBufferInfo* = RECORD
  37.  
  38.         dwSize*:               TCoord;
  39.         dwCursorPosition*:     TCoord;
  40.         wAttributes*:          WCHAR;
  41.         srWindow*:             TSmallRect;
  42.         dwMaximumWindowSize*:  TCoord
  43.  
  44.     END;
  45.  
  46.     TSystemTime* = RECORD
  47.  
  48.         Year*,
  49.         Month*,
  50.         DayOfWeek*,
  51.         Day*,
  52.         Hour*,
  53.         Min*,
  54.         Sec*,
  55.         MSec*:  WCHAR
  56.  
  57.     END;
  58.  
  59.     PSecurityAttributes* = POINTER TO TSecurityAttributes;
  60.  
  61.     TSecurityAttributes* = RECORD
  62.  
  63.         nLength*:               INTEGER;
  64.         lpSecurityDescriptor*:  INTEGER;
  65.         bInheritHandle*:        INTEGER
  66.  
  67.     END;
  68.  
  69.     TFileTime* = RECORD
  70.  
  71.         dwLowDateTime*,
  72.         dwHighDateTime*: INTEGER
  73.  
  74.     END;
  75.  
  76.     OFSTRUCT* = RECORD
  77.  
  78.         cBytes*:      CHAR;
  79.         fFixedDisk*:  CHAR;
  80.         nErrCode*:    WCHAR;
  81.         Reserved1*:   WCHAR;
  82.         Reserved2*:   WCHAR;
  83.         szPathName*:  ARRAY OFS_MAXPATHNAME OF CHAR
  84.  
  85.     END;
  86.  
  87.     POverlapped* = POINTER TO OVERLAPPED;
  88.  
  89.     OVERLAPPED* = RECORD
  90.  
  91.         Internal*:      INTEGER;
  92.         InternalHigh*:  INTEGER;
  93.         Offset*:        INTEGER;
  94.         OffsetHigh*:    INTEGER;
  95.         hEvent*:        INTEGER
  96.  
  97.     END;
  98.  
  99.  
  100. PROCEDURE [windows-, "kernel32.dll", "SetConsoleCursorPosition"]
  101.     SetConsoleCursorPosition* (hConsoleOutput, dwCursorPosition: INTEGER): INTEGER;
  102.  
  103. PROCEDURE [windows-, "kernel32.dll", "GetConsoleScreenBufferInfo"]
  104.     GetConsoleScreenBufferInfo* (hConsoleOutput: INTEGER; ConsoleScreenBufferInfo: TConsoleScreenBufferInfo): INTEGER;
  105.  
  106. PROCEDURE [windows-, "kernel32.dll", "FillConsoleOutputCharacterA"]
  107.     FillConsoleOutputCharacter* (hConsoleOutput, cCaracter, nLength, dwWriteCoord, lpNumberOfCharsWritten: INTEGER): INTEGER;
  108.  
  109. PROCEDURE [windows-, "kernel32.dll", "FillConsoleOutputAttribute"]
  110.     FillConsoleOutputAttribute* (hConsoleOutput, wAttribute, nLength, dwWriteCoord, lpNumberOfAttrsWritten: INTEGER): INTEGER;
  111.  
  112. PROCEDURE [windows-, "kernel32.dll", "SetConsoleTextAttribute"]
  113.     SetConsoleTextAttribute* (hConsoleOutput, wAttributes: INTEGER): INTEGER;
  114.  
  115. PROCEDURE [windows-, "kernel32.dll", "GetStdHandle"]
  116.     GetStdHandle* (nStdHandle: INTEGER): INTEGER;
  117.  
  118. PROCEDURE [windows-, "kernel32.dll", "CloseHandle"]
  119.     CloseHandle* (hObject: INTEGER): INTEGER;
  120.  
  121. PROCEDURE [windows-, "kernel32.dll", "WriteFile"]
  122.     WriteFile* (hFile, Buffer, nNumberOfBytesToRead, lpNumberOfBytesRead: INTEGER; lpOverlapped: POverlapped): INTEGER;
  123.  
  124. PROCEDURE [windows-, "kernel32.dll", "ReadFile"]
  125.     ReadFile* (hFile, Buffer, nNumberOfBytesToRead, lpNumberOfBytesRead: INTEGER; lpOverlapped: POverlapped): INTEGER;
  126.  
  127. PROCEDURE [windows-, "kernel32.dll", "GetCommandLineA"]
  128.     GetCommandLine* (): INTEGER;
  129.  
  130. PROCEDURE [windows-, "kernel32.dll", "GlobalAlloc"]
  131.     GlobalAlloc* (uFlags, dwBytes: INTEGER): INTEGER;
  132.  
  133. PROCEDURE [windows-, "kernel32.dll", "GlobalFree"]
  134.     GlobalFree* (hMem: INTEGER): INTEGER;
  135.  
  136. PROCEDURE [windows-, "kernel32.dll", "ExitProcess"]
  137.     ExitProcess* (code: INTEGER);
  138.  
  139. PROCEDURE [windows-, "kernel32.dll", "GetTickCount"]
  140.     GetTickCount* (): INTEGER;
  141.  
  142. PROCEDURE [windows-, "kernel32.dll", "Sleep"]
  143.     Sleep* (dwMilliseconds: INTEGER);
  144.  
  145. PROCEDURE [windows-, "kernel32.dll", "FreeLibrary"]
  146.     FreeLibrary* (hLibModule: INTEGER): INTEGER;
  147.  
  148. PROCEDURE [windows-, "kernel32.dll", "GetProcAddress"]
  149.     GetProcAddress* (hModule, name: INTEGER): INTEGER;
  150.  
  151. PROCEDURE [windows-, "kernel32.dll", "LoadLibraryA"]
  152.     LoadLibraryA* (name: INTEGER): INTEGER;
  153.  
  154. PROCEDURE [windows-, "kernel32.dll", "AllocConsole"]
  155.     AllocConsole* (): BOOLEAN;
  156.  
  157. PROCEDURE [windows-, "kernel32.dll", "FreeConsole"]
  158.     FreeConsole* (): BOOLEAN;
  159.  
  160. PROCEDURE [windows-, "kernel32.dll", "GetLocalTime"]
  161.     GetLocalTime* (T: TSystemTime);
  162.  
  163.  
  164. PROCEDURE SetDllEntry* (process_detach, thread_detach, thread_attach: DLL_ENTRY);
  165. BEGIN
  166.     API.SetDll(process_detach, thread_detach, thread_attach)
  167. END SetDllEntry;
  168.  
  169.  
  170. END WINAPI.