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