<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Hi Paul,</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">The patch looks mostly good for me.<br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">On 2/20/19 6:33 PM, Paul Gofman wrote:<br>
</div>
<blockquote type="cite"
cite="mid:20190220173357.8329-3-gofmanp@gmail.com">
<div class="moz-text-plain" wrap="true" graphical-quote="true"
style="font-family: -moz-fixed; font-size: 12px;"
lang="x-unicode">
<pre class="moz-quote-pre" wrap=""> - if (send_completion) NTDLL_AddCompletion( hFile, cvalue, status, total );
- if (async_read && (options & FILE_NO_INTERMEDIATE_BUFFERING) && status == STATUS_SUCCESS)
- return STATUS_PENDING;
- return status;
+ ret_status = async_read && (options & FILE_NO_INTERMEDIATE_BUFFERING) && status == STATUS_SUCCESS
+ ? STATUS_PENDING : status;
+
+ if (send_completion) NTDLL_AddCompletion( hFile, cvalue, status, total, ret_status == STATUS_PENDING );
+ return ret_status;
}</pre>
</div>
</blockquote>
<p><br>
</p>
<p>Do you really need a separated ret_status variable? It seems that
you could just set status to STATUS_PENDING instead.<br>
</p>
<p><br>
</p>
<blockquote type="cite"
cite="mid:20190220173357.8329-3-gofmanp@gmail.com">
<div class="moz-text-plain" wrap="true" graphical-quote="true"
style="font-family: -moz-fixed; font-size: 12px;"
lang="x-unicode">
<pre class="moz-quote-pre" wrap="">
@@ -1089,7 +1090,7 @@ NTSTATUS WINAPI NtReadFileScatter( HANDLE file, HANDLE event, PIO_APC_ROUTINE ap
if (event) NtSetEvent( event, NULL );
if (apc) NtQueueApcThread( GetCurrentThread(), (PNTAPCFUNC)apc,
(ULONG_PTR)apc_user, (ULONG_PTR)io_status, 0 );
- if (send_completion) NTDLL_AddCompletion( file, cvalue, status, total );
+ if (send_completion) NTDLL_AddCompletion( file, cvalue, status, total, TRUE );
return STATUS_PENDING;
@@ -1408,7 +1409,7 @@ err:
if (status != STATUS_PENDING && hEvent) NtResetEvent( hEvent, NULL );
}
- if (send_completion) NTDLL_AddCompletion( hFile, cvalue, status, total );
+ if (send_completion) NTDLL_AddCompletion( hFile, cvalue, status, total, status == STATUS_PENDING );</pre>
</div>
</blockquote>
<p><br>
</p>
<p>Unless I'm missing, send_completion will never be set if status
== STATUS_PENDING in this case, so you could just pass FALSE.<br>
</p>
<p><br>
</p>
<blockquote type="cite"
cite="mid:20190220173357.8329-3-gofmanp@gmail.com">
<div class="moz-text-plain" wrap="true" graphical-quote="true"
style="font-family: -moz-fixed; font-size: 12px;"
lang="x-unicode">
<pre class="moz-quote-pre" wrap="">
return status;
}
@@ -1500,7 +1501,7 @@ NTSTATUS WINAPI NtWriteFileGather( HANDLE file, HANDLE event, PIO_APC_ROUTINE ap
if (status != STATUS_PENDING && event) NtResetEvent( event, NULL );
}
- if (send_completion) NTDLL_AddCompletion( file, cvalue, status, total );
+ if (send_completion) NTDLL_AddCompletion( file, cvalue, status, total, status == STATUS_PENDING );
</pre>
</div>
</blockquote>
<p><br>
</p>
<p>Same as above.</p>
<p><br>
</p>
<p>Thanks,</p>
<p>Jacek<br>
</p>
</body>
</html>