Subversion Repositories Kolibri OS

Rev

Rev 7983 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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