@@ -50,14 +50,17 @@ void afile_write(struct afile *a, const void *data, size_t len,
50
50
a -> write .error = ERROR_IO_PENDING ;
51
51
52
52
ioq_ovl_wait (& a -> write .ovl , write_done );
53
- if (!WriteFile (a -> handle , data , len , NULL ,
53
+ if (!WriteFile (a -> handle , data , len , & a -> write . size ,
54
54
ioq_ovl_lpo (& a -> write .ovl ))) {
55
55
const syserr_t e = GetLastError ();
56
56
57
57
if (e != ERROR_IO_PENDING ) {
58
58
a -> write .error = e ;
59
59
ioq_ovl_trigger (& a -> write .ovl );
60
60
}
61
+ } else {
62
+ a -> write .error = 0 ;
63
+ ioq_ovl_trigger (& a -> write .ovl );
61
64
}
62
65
}
63
66
@@ -87,12 +90,16 @@ void afile_read(struct afile *a, void *data, size_t len,
87
90
a -> read .error = ERROR_IO_PENDING ;
88
91
89
92
ioq_ovl_wait (& a -> read .ovl , read_done );
90
- if (!ReadFile (a -> handle , data , len , NULL , ioq_ovl_lpo (& a -> read .ovl ))) {
93
+ if (!ReadFile (a -> handle , data , len , & a -> read .size ,
94
+ ioq_ovl_lpo (& a -> read .ovl ))) {
91
95
const syserr_t e = GetLastError ();
92
96
93
97
if (e != ERROR_IO_PENDING ) {
94
98
a -> read .error = e ;
95
99
ioq_ovl_trigger (& a -> read .ovl );
96
100
}
101
+ } else {
102
+ a -> read .error = 0 ;
103
+ ioq_ovl_trigger (& a -> read .ovl );
97
104
}
98
105
}
0 commit comments