[KMTESTS]

- Handle WriteConsole's inability to write large buffers

svn path=/branches/GSoC_2011/KMTestSuite/; revision=53175
This commit is contained in:
Thomas Faber 2011-08-11 08:50:46 +00:00
parent 72ddf854a5
commit b65e65ac17

View file

@ -219,11 +219,20 @@ OutputResult(
{
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;
}