From 4a285f0633be47b4fd4e11d4d3981cee6a29dbd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Tue, 29 Jul 2014 14:00:46 +0000 Subject: [PATCH] [CONSRV] Add the optional "number of things read/written" parameters back. svn path=/branches/condrv_restructure/; revision=63769 --- win32ss/user/winsrv/consrv/condrv/text.c | 33 ++++++++++++++---------- win32ss/user/winsrv/consrv/conoutput.c | 26 ++++++++----------- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/win32ss/user/winsrv/consrv/condrv/text.c b/win32ss/user/winsrv/consrv/condrv/text.c index bef1bf0e273..ff7ffa73f4d 100644 --- a/win32ss/user/winsrv/consrv/condrv/text.c +++ b/win32ss/user/winsrv/consrv/condrv/text.c @@ -892,7 +892,7 @@ ConDrvReadConsoleOutputString(IN PCONSOLE Console, IN ULONG NumCodesToRead, IN PCOORD ReadCoord, // OUT PCOORD EndCoord, - OUT PULONG CodesRead) + OUT PULONG NumCodesRead OPTIONAL) { SHORT Xpos, Ypos; PVOID ReadBuffer; @@ -900,8 +900,7 @@ ConDrvReadConsoleOutputString(IN PCONSOLE Console, ULONG CodeSize; PCHAR_INFO Ptr; - if (Console == NULL || Buffer == NULL || - ReadCoord == NULL || /* EndCoord == NULL || */ CodesRead == NULL) + if (Console == NULL || Buffer == NULL || ReadCoord == NULL /* || EndCoord == NULL */) { return STATUS_INVALID_PARAMETER; } @@ -910,6 +909,8 @@ ConDrvReadConsoleOutputString(IN PCONSOLE Console, ASSERT(Console == Buffer->Header.Console); ASSERT((StringBuffer != NULL) || (StringBuffer == NULL && NumCodesToRead == 0)); + if (NumCodesRead) *NumCodesRead = 0; + switch (CodeType) { case CODE_ASCII: @@ -985,7 +986,8 @@ ConDrvReadConsoleOutputString(IN PCONSOLE Console, // EndCoord->X = Xpos; // EndCoord->Y = (Ypos - Buffer->VirtualY + Buffer->ScreenBufferSize.Y) % Buffer->ScreenBufferSize.Y; - *CodesRead = (ULONG)((ULONG_PTR)ReadBuffer - (ULONG_PTR)StringBuffer) / CodeSize; + if (NumCodesRead) + *NumCodesRead = (ULONG)((ULONG_PTR)ReadBuffer - (ULONG_PTR)StringBuffer) / CodeSize; // <= NumCodesToRead return STATUS_SUCCESS; @@ -997,9 +999,9 @@ ConDrvWriteConsoleOutputString(IN PCONSOLE Console, IN CODE_TYPE CodeType, IN PVOID StringBuffer, IN ULONG NumCodesToWrite, - IN PCOORD WriteCoord /*, - OUT PCOORD EndCoord, - OUT PULONG CodesWritten */) + IN PCOORD WriteCoord, + // OUT PCOORD EndCoord, + OUT PULONG NumCodesWritten OPTIONAL) { NTSTATUS Status = STATUS_SUCCESS; PVOID WriteBuffer = NULL; @@ -1008,8 +1010,7 @@ ConDrvWriteConsoleOutputString(IN PCONSOLE Console, ULONG CodeSize; PCHAR_INFO Ptr; - if (Console == NULL || Buffer == NULL || - WriteCoord == NULL /* || EndCoord == NULL || CodesWritten == NULL */) + if (Console == NULL || Buffer == NULL || WriteCoord == NULL /* || EndCoord == NULL */) { return STATUS_INVALID_PARAMETER; } @@ -1018,6 +1019,8 @@ ConDrvWriteConsoleOutputString(IN PCONSOLE Console, ASSERT(Console == Buffer->Header.Console); ASSERT((StringBuffer != NULL) || (StringBuffer == NULL && NumCodesToWrite == 0)); + if (NumCodesWritten) *NumCodesWritten = 0; + switch (CodeType) { case CODE_ASCII: @@ -1114,7 +1117,7 @@ ConDrvWriteConsoleOutputString(IN PCONSOLE Console, Cleanup: if (tmpString) RtlFreeHeap(RtlGetProcessHeap(), 0, tmpString); - // CodesWritten = Written; + // if (NumCodesWritten) *NumCodesWritten = Written; return Status; } @@ -1124,13 +1127,13 @@ ConDrvFillConsoleOutput(IN PCONSOLE Console, IN CODE_TYPE CodeType, IN CODE_ELEMENT Code, IN ULONG NumCodesToWrite, - IN PCOORD WriteCoord /*, - OUT PULONG CodesWritten */) + IN PCOORD WriteCoord, + OUT PULONG NumCodesWritten OPTIONAL) { DWORD X, Y, Length; // , Written = 0; PCHAR_INFO Ptr; - if (Console == NULL || Buffer == NULL || WriteCoord == NULL /* || CodesWritten == NULL */) + if (Console == NULL || Buffer == NULL || WriteCoord == NULL) { return STATUS_INVALID_PARAMETER; } @@ -1138,6 +1141,8 @@ ConDrvFillConsoleOutput(IN PCONSOLE Console, /* Validity check */ ASSERT(Console == Buffer->Header.Console); + if (NumCodesWritten) *NumCodesWritten = 0; + if (CodeType == CODE_ASCII) { /* Conversion from the ASCII char to the UNICODE char */ @@ -1189,7 +1194,7 @@ ConDrvFillConsoleOutput(IN PCONSOLE Console, TermDrawRegion(Console, &UpdateRect); } - // CodesWritten = Written; // NumCodesToWrite; + // if (NumCodesWritten) *NumCodesWritten = Written; // NumCodesToWrite; return STATUS_SUCCESS; } diff --git a/win32ss/user/winsrv/consrv/conoutput.c b/win32ss/user/winsrv/consrv/conoutput.c index 275c2ed9924..9bb862a6ef5 100644 --- a/win32ss/user/winsrv/consrv/conoutput.c +++ b/win32ss/user/winsrv/consrv/conoutput.c @@ -525,7 +525,7 @@ ConDrvReadConsoleOutputString(IN PCONSOLE Console, IN ULONG NumCodesToRead, IN PCOORD ReadCoord, // OUT PCOORD EndCoord, - OUT PULONG CodesRead); + OUT PULONG NumCodesRead OPTIONAL); CSR_API(SrvReadConsoleOutputString) { NTSTATUS Status; @@ -607,9 +607,9 @@ ConDrvWriteConsoleOutputString(IN PCONSOLE Console, IN CODE_TYPE CodeType, IN PVOID StringBuffer, IN ULONG NumCodesToWrite, - IN PCOORD WriteCoord /*, - OUT PCOORD EndCoord, - OUT PULONG CodesWritten */); + IN PCOORD WriteCoord, + // OUT PCOORD EndCoord, + OUT PULONG NumCodesWritten OPTIONAL); CSR_API(SrvWriteConsoleOutputString) { NTSTATUS Status; @@ -677,11 +677,9 @@ CSR_API(SrvWriteConsoleOutputString) WriteOutputCodeRequest->CodeType, pCode, WriteOutputCodeRequest->NumCodes, - &WriteOutputCodeRequest->Coord /*, - &WriteOutputCodeRequest->EndCoord, - &WriteOutputCodeRequest->NrCharactersWritten */); - - // WriteOutputCodeRequest->NrCharactersWritten = Written; + &WriteOutputCodeRequest->Coord, + // &WriteOutputCodeRequest->EndCoord, + &WriteOutputCodeRequest->NumCodes); ConSrvReleaseScreenBuffer(Buffer, TRUE); return Status; @@ -693,8 +691,8 @@ ConDrvFillConsoleOutput(IN PCONSOLE Console, IN CODE_TYPE CodeType, IN CODE_ELEMENT Code, IN ULONG NumCodesToWrite, - IN PCOORD WriteCoord /*, - OUT PULONG CodesWritten */); + IN PCOORD WriteCoord, + OUT PULONG NumCodesWritten OPTIONAL); CSR_API(SrvFillConsoleOutput) { NTSTATUS Status; @@ -721,10 +719,8 @@ CSR_API(SrvFillConsoleOutput) CodeType, FillOutputRequest->Code, FillOutputRequest->NumCodes, - &FillOutputRequest->WriteCoord /*, - &FillOutputRequest->NrCharactersWritten */); - - // FillOutputRequest->NrCharactersWritten = Written; + &FillOutputRequest->WriteCoord, + &FillOutputRequest->NumCodes); ConSrvReleaseScreenBuffer(Buffer, TRUE); return Status;