under dramatic changes...
This commit is contained in:
@ -7,31 +7,39 @@ separate (H2.OS)
|
||||
package body File is
|
||||
|
||||
-- External functions and procedures
|
||||
function CreateFileA (lpFileName : Slim_String;
|
||||
dwDesiredAccess : Sysdef.DWORD;
|
||||
dwShareMode : Sysdef.DWORD;
|
||||
lpSecurityAttributes : Sysdef.PVOID; -- LPSECURITY_ATTRIBUTES;
|
||||
dwCreationDisposition: Sysdef.DWORD;
|
||||
dwFlagsAndAttributes : Sysdef.DWORD;
|
||||
hTemplateFile : Sysdef.HANDLE) return Sysdef.HANDLE;
|
||||
function CreateFileA (lpFileName : Standard.String;
|
||||
dwDesiredAccess : Sysdef.DWORD;
|
||||
dwShareMode : Sysdef.DWORD;
|
||||
lpSecurityAttributes : Sysdef.LPVOID; -- LPSECURITY_ATTRIBUTES;
|
||||
dwCreationDisposition: Sysdef.DWORD;
|
||||
dwFlagsAndAttributes : Sysdef.DWORD;
|
||||
hTemplateFile : Sysdef.HANDLE) return Sysdef.HANDLE;
|
||||
pragma Import (Stdcall, CreateFileA, "CreateFileA");
|
||||
|
||||
function CreateFileW (lpFileName : Wide_String;
|
||||
dwDesiredAccess : Sysdef.DWORD;
|
||||
dwShareMode : Sysdef.DWORD;
|
||||
lpSecurityAttributes : Sysdef.PVOID; -- LPSECURITY_ATTRIBUTES;
|
||||
dwCreationDisposition: Sysdef.DWORD;
|
||||
dwFlagsAndAttributes : Sysdef.DWORD;
|
||||
hTemplateFile : Sysdef.HANDLE) return Sysdef.HANDLE;
|
||||
function CreateFileW (lpFileName : Standard.Wide_String;
|
||||
dwDesiredAccess : Sysdef.DWORD;
|
||||
dwShareMode : Sysdef.DWORD;
|
||||
lpSecurityAttributes : Sysdef.LPVOID; -- LPSECURITY_ATTRIBUTES;
|
||||
dwCreationDisposition: Sysdef.DWORD;
|
||||
dwFlagsAndAttributes : Sysdef.DWORD;
|
||||
hTemplateFile : Sysdef.HANDLE) return Sysdef.HANDLE;
|
||||
pragma Import (Stdcall, CreateFileW, "CreateFileW");
|
||||
|
||||
procedure CloseFile (fd: Sysdef.HANDLE);
|
||||
procedure CloseFile (hFile: in Sysdef.HANDLE);
|
||||
pragma Import (Stdcall, CloseFile, "CloseFile");
|
||||
|
||||
function ReadFile (fd: Sysdef.HANDLE; buf: in System.Address; count: in Sysdef.size_t) return Sysdef.ssize_t;
|
||||
function ReadFile (hFile: in Sysdef.HANDLE;
|
||||
lpBuffer: in Sysdef.LPVOID;
|
||||
nNumberOfBytesToRead: in Sysdef.DWORD;
|
||||
lpNumberOfBytesRead: in Sysdef.LPDWORD;
|
||||
lpOverlapped: in Sysdef.LPVOID) return Sysdef.BOOL;
|
||||
pragma Import (Stdcall, ReadFile, "ReadFile");
|
||||
|
||||
function Sys_Write (fd: Sysdef.HANDLE; buf: in System.Address; count: in Sysdef.size_t) return Sysdef.ssize_t;
|
||||
function WriteFile (hFile: in Sysdef.HANDLE;
|
||||
lpBuffer: in Sysdef.LPVOID;
|
||||
nNumberOfBytesToWrite: in Sysdef.DWORD;
|
||||
lpNumberOfBytesWritten: in Sysdef.LPDWORD;
|
||||
lpOverlapped: in Sysdef.LPVOID) return Sysdef.BOOL;
|
||||
pragma Import (Stdcall, WriteFile, "WriteFile");
|
||||
|
||||
-- Common constants
|
||||
|
@ -2,9 +2,20 @@ with System;
|
||||
|
||||
package H2.Sysdef is
|
||||
|
||||
type PVOID is System.Address;
|
||||
subtype LPVOID is System.Address;
|
||||
subtype HANDLE is PVOID;
|
||||
|
||||
type BOOL is (FALSE, TRUE);
|
||||
for BOOL use (FALSE => 0, TRUE => 1);
|
||||
for BOOL'Size use 32;
|
||||
|
||||
type DWORD is mod 2 ** 32;
|
||||
type WORD is mod 2 ** 16;
|
||||
type BYTE is mod 2 ** 8;
|
||||
|
||||
type LPDWORD is access all DWORD;
|
||||
pragma Convention (C, LPDWORD);
|
||||
|
||||
INVALID_HANDLE_VALUE: constant HANDLE := HANDLE'Last;
|
||||
|
||||
end H2.Sysdef;
|
||||
|
Reference in New Issue
Block a user