|
@@ -122,7 +122,7 @@ TYPE
|
|
|
ASSERT ( LEN( buf ) >= ofs + len ); (* array bound check not implemented in Kernel32.WriteFile *)
|
|
|
IF (handle # Kernel32.InvalidHandleValue) THEN
|
|
|
written := 0;
|
|
|
- ret := Kernel32.WriteFile( handle, buf[ofs], len, written, ADDRESSOF(wOverlapped) );
|
|
|
+ ret := Kernel32.WriteFile( handle, buf[ofs], len, written, wOverlapped );
|
|
|
IF ret = Kernel32.False THEN
|
|
|
ret := Kernel32.GetOverlappedResult(handle,wOverlapped,written,Kernel32.True);
|
|
|
END;
|
|
@@ -143,7 +143,7 @@ TYPE
|
|
|
BEGIN
|
|
|
IF handle # Kernel32.InvalidHandleValue THEN
|
|
|
written := 0;
|
|
|
- ret := Kernel32.WriteFile( handle, ch, 1, written, ADDRESSOF(wOverlapped) );
|
|
|
+ ret := Kernel32.WriteFile( handle, ch, 1, written, wOverlapped );
|
|
|
IF ret = Kernel32.False THEN
|
|
|
ret := Kernel32.GetOverlappedResult(handle,wOverlapped,written,Kernel32.True);
|
|
|
END;
|
|
@@ -174,7 +174,7 @@ TYPE
|
|
|
(* blocking read of the minimally required amount of data *)
|
|
|
IF min > 0 THEN
|
|
|
read := 0;
|
|
|
- ret := Kernel32.ReadFile( handle, buf[ofs], min, read, ADDRESSOF(rOverlapped) );
|
|
|
+ ret := Kernel32.ReadFile( handle, buf[ofs], min, read, rOverlapped );
|
|
|
IF ret = Kernel32.False THEN
|
|
|
ret := Kernel32.GetOverlappedResult(handle,rOverlapped,read,Kernel32.True);
|
|
|
END;
|
|
@@ -188,7 +188,7 @@ TYPE
|
|
|
l := MIN(size,Available());
|
|
|
IF l > 0 THEN
|
|
|
read := 0;
|
|
|
- ret := Kernel32.ReadFile( handle, buf[ofs], l, read, ADDRESSOF(rOverlapped) );
|
|
|
+ ret := Kernel32.ReadFile( handle, buf[ofs], l, read, rOverlapped );
|
|
|
IF ret = Kernel32.False THEN
|
|
|
ret := Kernel32.GetOverlappedResult(handle,rOverlapped,read,Kernel32.True);
|
|
|
END;
|
|
@@ -208,7 +208,7 @@ TYPE
|
|
|
BEGIN
|
|
|
IF handle # Kernel32.InvalidHandleValue THEN
|
|
|
read := 0;
|
|
|
- ret := Kernel32.ReadFile( handle, ch, 1, read, ADDRESSOF(rOverlapped) );
|
|
|
+ ret := Kernel32.ReadFile( handle, ch, 1, read, rOverlapped );
|
|
|
IF ret = Kernel32.False THEN
|
|
|
ret := Kernel32.GetOverlappedResult(handle,rOverlapped,read,Kernel32.True);
|
|
|
END;
|
|
@@ -394,6 +394,7 @@ TYPE
|
|
|
PROCEDURE Close*;
|
|
|
BEGIN {EXCLUSIVE}
|
|
|
IF handle # Kernel32.InvalidHandleValue THEN
|
|
|
+ Kernel32.CancelIoEx(handle, NIL);
|
|
|
Kernel32.CloseHandle( handle ); handle := Kernel32.InvalidHandleValue;
|
|
|
IF rOverlapped.hEvent # NIL THEN Kernel32.CloseHandle(rOverlapped.hEvent); rOverlapped.hEvent := NIL; END;
|
|
|
IF wOverlapped.hEvent # NIL THEN Kernel32.CloseHandle(wOverlapped.hEvent); wOverlapped.hEvent := NIL; END;
|