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.     TWin32FindData* = RECORD
  77.  
  78.         dwFileAttributes*:    SET;
  79.         ftCreationTime*:      TFileTime;
  80.         ftLastAccessTime*:    TFileTime;
  81.         ftLastWriteTime*:     TFileTime;
  82.         nFileSizeHigh*:       INTEGER;
  83.         nFileSizeLow*:        INTEGER;
  84.         dwReserved0*:         INTEGER;
  85.         dwReserved1*:         INTEGER;
  86.         cFileName*:           STRING;
  87.         cAlternateFileName*:  ARRAY 14 OF CHAR
  88.  
  89.     END;
  90.  
  91.     OFSTRUCT* = RECORD
  92.  
  93.         cBytes*:      CHAR;
  94.         fFixedDisk*:  CHAR;
  95.         nErrCode*:    WCHAR;
  96.         Reserved1*:   WCHAR;
  97.         Reserved2*:   WCHAR;
  98.         szPathName*:  ARRAY OFS_MAXPATHNAME OF CHAR
  99.  
  100.     END;
  101.  
  102.     POverlapped* = POINTER TO OVERLAPPED;
  103.  
  104.     OVERLAPPED* = RECORD
  105.  
  106.         Internal*:      INTEGER;
  107.         InternalHigh*:  INTEGER;
  108.         Offset*:        INTEGER;
  109.         OffsetHigh*:    INTEGER;
  110.         hEvent*:        INTEGER
  111.  
  112.     END;
  113.  
  114.  
  115. PROCEDURE [windows-, "kernel32.dll", "SetConsoleCursorPosition"]
  116.     SetConsoleCursorPosition* (hConsoleOutput, dwCursorPosition: INTEGER): INTEGER;
  117.  
  118. PROCEDURE [windows-, "kernel32.dll", "GetConsoleScreenBufferInfo"]
  119.     GetConsoleScreenBufferInfo* (hConsoleOutput: INTEGER; ConsoleScreenBufferInfo: TConsoleScreenBufferInfo): INTEGER;
  120.  
  121. PROCEDURE [windows-, "kernel32.dll", "FillConsoleOutputCharacterA"]
  122.     FillConsoleOutputCharacter* (hConsoleOutput, cCaracter, nLength, dwWriteCoord, lpNumberOfCharsWritten: INTEGER): INTEGER;
  123.  
  124. PROCEDURE [windows-, "kernel32.dll", "FillConsoleOutputAttribute"]
  125.     FillConsoleOutputAttribute* (hConsoleOutput, wAttribute, nLength, dwWriteCoord, lpNumberOfAttrsWritten: INTEGER): INTEGER;
  126.  
  127. PROCEDURE [windows-, "kernel32.dll", "SetConsoleTextAttribute"]
  128.     SetConsoleTextAttribute* (hConsoleOutput, wAttributes: INTEGER): INTEGER;
  129.  
  130. PROCEDURE [windows-, "kernel32.dll", "GetStdHandle"]
  131.     GetStdHandle* (nStdHandle: INTEGER): INTEGER;
  132.  
  133. PROCEDURE [windows-, "kernel32.dll", "GetLocalTime"]
  134.     GetLocalTime* (T: TSystemTime);
  135.  
  136. PROCEDURE [windows-, "kernel32.dll", "RemoveDirectoryA"]
  137.     RemoveDirectory* (lpPathName: INTEGER): INTEGER;
  138.  
  139. PROCEDURE [windows-, "kernel32.dll", "GetFileAttributesA"]
  140.     GetFileAttributes* (lpPathName: INTEGER): SET;
  141.  
  142. PROCEDURE [windows-, "kernel32.dll", "CreateDirectoryA"]
  143.     CreateDirectory* (lpPathName: INTEGER; lpSecurityAttributes: PSecurityAttributes): INTEGER;
  144.  
  145. PROCEDURE [windows-, "kernel32.dll", "FindFirstFileA"]
  146.     FindFirstFile* (lpFileName: INTEGER; lpFindFileData: TWin32FindData): INTEGER;
  147.  
  148. PROCEDURE [windows-, "kernel32.dll", "DeleteFileA"]
  149.     DeleteFile* (lpFileName: INTEGER): INTEGER;
  150.  
  151. PROCEDURE [windows-, "kernel32.dll", "FindClose"]
  152.     FindClose* (hFindFile: INTEGER): INTEGER;
  153.  
  154. PROCEDURE [windows-, "kernel32.dll", "CloseHandle"]
  155.     CloseHandle* (hObject: INTEGER): INTEGER;
  156.  
  157. PROCEDURE [windows-, "kernel32.dll", "CreateFileA"]
  158.     CreateFile* (
  159.         lpFileName, dwDesiredAccess, dwShareMode: INTEGER;
  160.         lpSecurityAttributes: PSecurityAttributes;
  161.         dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile: INTEGER): INTEGER;
  162.  
  163. PROCEDURE [windows-, "kernel32.dll", "OpenFile"]
  164.     OpenFile* (lpFileName: INTEGER; lpReOpenBuff: OFSTRUCT; uStyle: INTEGER): INTEGER;
  165.  
  166. PROCEDURE [windows-, "kernel32.dll", "SetFilePointer"]
  167.     SetFilePointer* (hFile, lDistanceToMove, lpDistanceToMoveHigh, dwMoveMethod: INTEGER): INTEGER;
  168.  
  169. PROCEDURE [windows-, "kernel32.dll", "ReadFile"]
  170.     ReadFile* (hFile, Buffer, nNumberOfBytesToRead, lpNumberOfBytesRead: INTEGER; lpOverlapped: POverlapped): INTEGER;
  171.  
  172. PROCEDURE [windows-, "kernel32.dll", "WriteFile"]
  173.     WriteFile* (hFile, Buffer, nNumberOfBytesToRead, lpNumberOfBytesRead: INTEGER; lpOverlapped: POverlapped): INTEGER;
  174.  
  175. PROCEDURE [windows-, "kernel32.dll", "ReadConsoleA"]
  176.     ReadConsole* (hConsoleInput, lpBuffer, nNumberOfCharsToRead, lpNumberOfCharsRead, lpReserved: INTEGER): INTEGER;
  177.  
  178. PROCEDURE [windows-, "kernel32.dll", "GetCommandLineA"]
  179.     GetCommandLine* (): INTEGER;
  180.  
  181. PROCEDURE [windows-, "kernel32.dll", "GlobalAlloc"]
  182.     GlobalAlloc* (uFlags, dwBytes: INTEGER): INTEGER;
  183.  
  184. PROCEDURE [windows-, "kernel32.dll", "GlobalFree"]
  185.     GlobalFree* (hMem: INTEGER): INTEGER;
  186.  
  187. PROCEDURE [windows-, "kernel32.dll", "WriteConsoleW"]
  188.     WriteConsoleW* (hConsoleOutput, lpBuffer, nNumberOfCharsToWrite, lpNumberOfCharsWritten, lpReserved: INTEGER): INTEGER;
  189.  
  190. PROCEDURE [windows-, "kernel32.dll", "ExitProcess"]
  191.     ExitProcess* (code: INTEGER);
  192.  
  193. PROCEDURE [windows-, "kernel32.dll", "WriteConsoleA"]
  194.     WriteConsole* (hConsoleOutput, lpBuffer, nNumberOfCharsToWrite, lpNumberOfCharsWritten, lpReserved: INTEGER): INTEGER;
  195.  
  196. PROCEDURE [windows-, "kernel32.dll", "GetTickCount"]
  197.     GetTickCount* (): INTEGER;
  198.  
  199. PROCEDURE [windows-, "kernel32.dll", "Sleep"]
  200.     Sleep* (dwMilliseconds: INTEGER);
  201.  
  202. PROCEDURE [windows-, "kernel32.dll", "FreeLibrary"]
  203.     FreeLibrary* (hLibModule: INTEGER): INTEGER;
  204.  
  205. PROCEDURE [ccall, "msvcrt.dll", "rand"]
  206.     rand* (): INTEGER;
  207.  
  208. PROCEDURE [ccall, "msvcrt.dll", "srand"]
  209.     srand* (seed: INTEGER);
  210.  
  211. PROCEDURE [windows-, "user32.dll", "MessageBoxA"]
  212.     MessageBoxA* (hWnd, lpText, lpCaption, uType: INTEGER): INTEGER;
  213.  
  214. PROCEDURE [windows-, "user32.dll", "MessageBoxW"]
  215.     MessageBox* (hWnd, lpText, lpCaption, uType: INTEGER): INTEGER;
  216.  
  217. PROCEDURE [windows-, "user32.dll", "CreateWindowExA"]
  218.     CreateWindowEx* (
  219.         dwExStyle, lpClassName, lpWindowName, dwStyle, X, Y,
  220.         nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam: INTEGER): INTEGER;
  221.  
  222. PROCEDURE [windows-, "kernel32.dll", "GetProcAddress"]
  223.     GetProcAddress* (hModule, name: INTEGER): INTEGER;
  224.  
  225. PROCEDURE [windows-, "kernel32.dll", "LoadLibraryA"]
  226.     LoadLibraryA* (name: INTEGER): INTEGER;
  227.  
  228. PROCEDURE [windows-, "kernel32.dll", "AllocConsole"]
  229.     AllocConsole* (): BOOLEAN;
  230.  
  231. PROCEDURE [windows-, "kernel32.dll", "FreeConsole"]
  232.     FreeConsole* (): BOOLEAN;
  233.  
  234.  
  235. PROCEDURE SetDllEntry* (process_detach, thread_detach, thread_attach: DLL_ENTRY);
  236. BEGIN
  237.     API.SetDll(process_detach, thread_detach, thread_attach)
  238. END SetDllEntry;
  239.  
  240.  
  241. END WINAPI.
  242.