Subversion Repositories Kolibri OS

Rev

Rev 7983 | 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.     KERNEL = "kernel32.dll";
  18.     USER   = "user32.dll";
  19.     MSVCRT = "msvcrt.dll";
  20.  
  21.  
  22. TYPE
  23.  
  24.     DLL_ENTRY* = API.DLL_ENTRY;
  25.  
  26.     STRING = ARRAY 260 OF CHAR;
  27.  
  28.     TCoord* = RECORD
  29.  
  30.         X*, Y*: WCHAR
  31.  
  32.     END;
  33.  
  34.     TSmallRect* = RECORD
  35.  
  36.         Left*, Top*, Right*, Bottom*: WCHAR
  37.  
  38.     END;
  39.  
  40.     TConsoleScreenBufferInfo* = RECORD
  41.  
  42.         dwSize*:               TCoord;
  43.         dwCursorPosition*:     TCoord;
  44.         wAttributes*:          WCHAR;
  45.         srWindow*:             TSmallRect;
  46.         dwMaximumWindowSize*:  TCoord
  47.  
  48.     END;
  49.  
  50.     TSystemTime* = RECORD
  51.  
  52.         Year*,
  53.         Month*,
  54.         DayOfWeek*,
  55.         Day*,
  56.         Hour*,
  57.         Min*,
  58.         Sec*,
  59.         MSec*:  WCHAR
  60.  
  61.     END;
  62.  
  63.     tm* = RECORD
  64.  
  65.         sec*,
  66.         min*,
  67.         hour*,
  68.         mday*,
  69.         mon*,
  70.         year*,
  71.         wday*,
  72.         yday*,
  73.         isdst*: SYSTEM.CARD32
  74.  
  75.     END;
  76.  
  77.     PSecurityAttributes* = POINTER TO TSecurityAttributes;
  78.  
  79.     TSecurityAttributes* = RECORD
  80.  
  81.         nLength*:               SYSTEM.CARD32;
  82.         lpSecurityDescriptor*:  INTEGER;
  83.         bInheritHandle*:        SYSTEM.CARD32 (* BOOL *)
  84.  
  85.     END;
  86.  
  87.     TFileTime* = RECORD
  88.  
  89.         dwLowDateTime*,
  90.         dwHighDateTime*: SYSTEM.CARD32
  91.  
  92.     END;
  93.  
  94.     TWin32FindData* = RECORD
  95.  
  96.         dwFileAttributes*:    SYSTEM.CARD32;
  97.         ftCreationTime*:      TFileTime;
  98.         ftLastAccessTime*:    TFileTime;
  99.         ftLastWriteTime*:     TFileTime;
  100.         nFileSizeHigh*:       SYSTEM.CARD32;
  101.         nFileSizeLow*:        SYSTEM.CARD32;
  102.         dwReserved0*:         SYSTEM.CARD32;
  103.         dwReserved1*:         SYSTEM.CARD32;
  104.         cFileName*:           STRING;
  105.         cAlternateFileName*:  ARRAY 14 OF CHAR;
  106.         dwFileType*:          SYSTEM.CARD32;
  107.         dwCreatorType*:       SYSTEM.CARD32;
  108.         wFinderFlags*:        WCHAR
  109.  
  110.     END;
  111.  
  112.     OFSTRUCT* = RECORD
  113.  
  114.         cBytes*:      BYTE;
  115.         fFixedDisk*:  BYTE;
  116.         nErrCode*:    WCHAR;
  117.         Reserved1*:   WCHAR;
  118.         Reserved2*:   WCHAR;
  119.         szPathName*:  ARRAY OFS_MAXPATHNAME OF CHAR
  120.  
  121.     END;
  122.  
  123.     POverlapped* = POINTER TO OVERLAPPED;
  124.  
  125.     OVERLAPPED* = RECORD
  126.  
  127.         Internal*:      INTEGER;
  128.         InternalHigh*:  INTEGER;
  129.         Offset*:        SYSTEM.CARD32;
  130.         OffsetHigh*:    SYSTEM.CARD32;
  131.         hEvent*:        INTEGER
  132.  
  133.     END;
  134.  
  135.  
  136. PROCEDURE [windows-, KERNEL, ""] SetConsoleCursorPosition* (hConsoleOutput, dwCursorPosition: INTEGER): INTEGER;
  137.  
  138. PROCEDURE [windows-, KERNEL, ""] GetConsoleScreenBufferInfo* (hConsoleOutput: INTEGER; ConsoleScreenBufferInfo: TConsoleScreenBufferInfo): INTEGER;
  139.  
  140. PROCEDURE [windows-, KERNEL, ""] FillConsoleOutputCharacterA* (hConsoleOutput, cCaracter, nLength, dwWriteCoord, lpNumberOfCharsWritten: INTEGER): INTEGER;
  141.  
  142. PROCEDURE [windows-, KERNEL, ""] FillConsoleOutputAttribute* (hConsoleOutput, wAttribute, nLength, dwWriteCoord, lpNumberOfAttrsWritten: INTEGER): INTEGER;
  143.  
  144. PROCEDURE [windows-, KERNEL, ""] SetConsoleTextAttribute* (hConsoleOutput, wAttributes: INTEGER): INTEGER;
  145.  
  146. PROCEDURE [windows-, KERNEL, ""] GetStdHandle* (nStdHandle: INTEGER): INTEGER;
  147.  
  148. PROCEDURE [windows-, KERNEL, ""] CloseHandle* (hObject: INTEGER): INTEGER;
  149.  
  150. PROCEDURE [windows-, KERNEL, ""] WriteFile* (hFile, Buffer, nNumberOfBytesToRead, lpNumberOfBytesRead: INTEGER; lpOverlapped: POverlapped): INTEGER;
  151.  
  152. PROCEDURE [windows-, KERNEL, ""] ReadFile* (hFile, Buffer, nNumberOfBytesToRead, lpNumberOfBytesRead: INTEGER; lpOverlapped: POverlapped): INTEGER;
  153.  
  154. PROCEDURE [windows-, KERNEL, ""] GetCommandLineA* (): INTEGER;
  155.  
  156. PROCEDURE [windows-, KERNEL, ""] GlobalAlloc* (uFlags, dwBytes: INTEGER): INTEGER;
  157.  
  158. PROCEDURE [windows-, KERNEL, ""] GlobalFree* (hMem: INTEGER): INTEGER;
  159.  
  160. PROCEDURE [windows-, KERNEL, ""] ExitProcess* (code: INTEGER);
  161.  
  162. PROCEDURE [windows-, KERNEL, ""] GetTickCount* (): INTEGER;
  163.  
  164. PROCEDURE [windows-, KERNEL, ""] Sleep* (dwMilliseconds: INTEGER);
  165.  
  166. PROCEDURE [windows-, KERNEL, ""] FreeLibrary* (hLibModule: INTEGER): INTEGER;
  167.  
  168. PROCEDURE [windows-, KERNEL, ""] GetProcAddress* (hModule, name: INTEGER): INTEGER;
  169.  
  170. PROCEDURE [windows-, KERNEL, ""] LoadLibraryA* (name: INTEGER): INTEGER;
  171.  
  172. PROCEDURE [windows-, KERNEL, ""] AllocConsole* (): BOOLEAN;
  173.  
  174. PROCEDURE [windows-, KERNEL, ""] FreeConsole* (): BOOLEAN;
  175.  
  176. PROCEDURE [windows-, KERNEL, ""] GetLocalTime* (T: TSystemTime);
  177.  
  178. PROCEDURE [windows-, KERNEL, ""] RemoveDirectoryA* (lpPathName: INTEGER): INTEGER;
  179.  
  180. PROCEDURE [windows-, KERNEL, ""] GetFileAttributesA* (lpPathName: INTEGER): SET;
  181.  
  182. PROCEDURE [windows-, KERNEL, ""] CreateDirectoryA* (lpPathName: INTEGER; lpSecurityAttributes: PSecurityAttributes): INTEGER;
  183.  
  184. PROCEDURE [windows-, KERNEL, ""] FindFirstFileA* (lpFileName: INTEGER; lpFindFileData: TWin32FindData): INTEGER;
  185.  
  186. PROCEDURE [windows-, KERNEL, ""] DeleteFileA* (lpFileName: INTEGER): INTEGER;
  187.  
  188. PROCEDURE [windows-, KERNEL, ""] FindClose* (hFindFile: INTEGER): INTEGER;
  189.  
  190. PROCEDURE [windows-, KERNEL, ""] CreateFileA* (
  191.         lpFileName, dwDesiredAccess, dwShareMode: INTEGER;
  192.         lpSecurityAttributes: PSecurityAttributes;
  193.         dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile: INTEGER): INTEGER;
  194.  
  195. PROCEDURE [windows-, KERNEL, ""] OpenFile* (lpFileName: INTEGER; lpReOpenBuff: OFSTRUCT; uStyle: INTEGER): INTEGER;
  196.  
  197. PROCEDURE [windows-, KERNEL, ""] SetFilePointer* (hFile, lDistanceToMove, lpDistanceToMoveHigh, dwMoveMethod: INTEGER): INTEGER;
  198.  
  199. PROCEDURE [windows-, KERNEL, ""] ReadConsoleA* (hConsoleInput, lpBuffer, nNumberOfCharsToRead, lpNumberOfCharsRead, lpReserved: INTEGER): INTEGER;
  200.  
  201. PROCEDURE [windows-, KERNEL, ""] WriteConsoleW* (hConsoleOutput, lpBuffer, nNumberOfCharsToWrite, lpNumberOfCharsWritten, lpReserved: INTEGER): INTEGER;
  202.  
  203. PROCEDURE [windows-, KERNEL, ""] WriteConsoleA* (hConsoleOutput, lpBuffer, nNumberOfCharsToWrite, lpNumberOfCharsWritten, lpReserved: INTEGER): INTEGER;
  204.  
  205. PROCEDURE [windows-, USER,   ""] MessageBoxA* (hWnd, lpText, lpCaption, uType: INTEGER): INTEGER;
  206.  
  207. PROCEDURE [windows-, USER,   ""] MessageBoxW* (hWnd, lpText, lpCaption, uType: INTEGER): INTEGER;
  208.  
  209. PROCEDURE [windows-, USER,   ""] CreateWindowExA* (
  210.         dwExStyle, lpClassName, lpWindowName, dwStyle, X, Y,
  211.         nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam: INTEGER): INTEGER;
  212.  
  213. PROCEDURE [windows-, MSVCRT, ""] time* (ptr: INTEGER): INTEGER;
  214.  
  215. PROCEDURE [windows-, MSVCRT, ""] mktime* (time: tm): INTEGER;
  216.  
  217.  
  218. PROCEDURE SetDllEntry* (process_detach, thread_detach, thread_attach: DLL_ENTRY);
  219. BEGIN
  220.     API.SetDll(process_detach, thread_detach, thread_attach)
  221. END SetDllEntry;
  222.  
  223.  
  224. END WINAPI.