[ros-diffs] [tfaber] 53175: [KMTESTS] - Handle WriteConsole's inability to write large buffers
tfaber at svn.reactos.org
tfaber at svn.reactos.org
Thu Aug 11 08:50:47 UTC 2011
Author: tfaber
Date: Thu Aug 11 08:50:46 2011
New Revision: 53175
URL: http://svn.reactos.org/svn/reactos?rev=53175&view=rev
Log:
[KMTESTS]
- Handle WriteConsole's inability to write large buffers
Modified:
branches/GSoC_2011/KMTestSuite/kmtests/kmtest/kmtest.c
Modified: branches/GSoC_2011/KMTestSuite/kmtests/kmtest/kmtest.c
URL: http://svn.reactos.org/svn/reactos/branches/GSoC_2011/KMTestSuite/kmtests/kmtest/kmtest.c?rev=53175&r1=53174&r2=53175&view=diff
==============================================================================
--- branches/GSoC_2011/KMTestSuite/kmtests/kmtest/kmtest.c [iso-8859-1] (original)
+++ branches/GSoC_2011/KMTestSuite/kmtests/kmtest/kmtest.c [iso-8859-1] Thu Aug 11 08:50:46 2011
@@ -219,11 +219,20 @@
{
DWORD Error = ERROR_SUCCESS;
DWORD BytesWritten;
+ DWORD LogBufferLength;
+ DWORD Offset = 0;
+ /* WriteConsole seems to handle at most ~32kB */
+ const DWORD BlockSize = 8 * 1024;
KmtFinishTest(TestName);
- if (!WriteConsoleA(GetStdHandle(STD_OUTPUT_HANDLE), ResultBuffer->LogBuffer, ResultBuffer->LogBufferLength, &BytesWritten, NULL))
- error(Error);
+ LogBufferLength = ResultBuffer->LogBufferLength;
+ for (Offset = 0; Offset < LogBufferLength; Offset += BlockSize)
+ {
+ DWORD Length = min(LogBufferLength - Offset, BlockSize);
+ if (!WriteConsoleA(GetStdHandle(STD_OUTPUT_HANDLE), ResultBuffer->LogBuffer + Offset, Length, &BytesWritten, NULL))
+ error(Error);
+ }
return Error;
}
More information about the Ros-diffs
mailing list