/*--------------------------------------------------------------
* GetNumberOfConsoleMouseButtons
*
- * @unimplemented
+ * @implemented
*/
BOOL
WINAPI
GetNumberOfConsoleMouseButtons(LPDWORD lpNumberOfMouseButtons)
{
- DPRINT1("GetNumberOfConsoleMouseButtons(0x%p) UNIMPLEMENTED!\n", lpNumberOfMouseButtons);
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
+ CONSOLE_API_MESSAGE ApiMessage;
+ PCONSOLE_GETMOUSEINFO GetMouseInfoRequest = &ApiMessage.Data.GetMouseInfoRequest;
+
+ GetMouseInfoRequest->ConsoleHandle = NtCurrentPeb()->ProcessParameters->ConsoleHandle;
+
+ CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
+ NULL,
+ CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepGetMouseInfo),
+ sizeof(*GetMouseInfoRequest));
+ if (!NT_SUCCESS(ApiMessage.Status))
+ {
+ BaseSetLastNTError(ApiMessage.Status);
+ return FALSE;
+ }
+
+ *lpNumberOfMouseButtons = GetMouseInfoRequest->NumButtons;
+ return TRUE;
}
static
BOOL
IntScrollConsoleScreenBuffer(HANDLE hConsoleOutput,
- const SMALL_RECT *lpScrollRectangle,
- const SMALL_RECT *lpClipRectangle,
+ CONST SMALL_RECT* lpScrollRectangle,
+ CONST SMALL_RECT* lpClipRectangle,
COORD dwDestinationOrigin,
- const CHAR_INFO *lpFill,
+ CONST CHAR_INFO* lpFill,
BOOL bUnicode)
{
- NTSTATUS Status;
CONSOLE_API_MESSAGE ApiMessage;
PCONSOLE_SCROLLSCREENBUFFER ScrollScreenBufferRequest = &ApiMessage.Data.ScrollScreenBufferRequest;
- ScrollScreenBufferRequest->OutputHandle = hConsoleOutput;
- ScrollScreenBufferRequest->Unicode = bUnicode;
+ ScrollScreenBufferRequest->ConsoleHandle = NtCurrentPeb()->ProcessParameters->ConsoleHandle;
+ ScrollScreenBufferRequest->OutputHandle = hConsoleOutput;
ScrollScreenBufferRequest->ScrollRectangle = *lpScrollRectangle;
if (lpClipRectangle != NULL)
}
ScrollScreenBufferRequest->DestinationOrigin = dwDestinationOrigin;
- ScrollScreenBufferRequest->Fill = *lpFill;
-
- Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
- NULL,
- CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepScrollScreenBuffer),
- sizeof(CONSOLE_SCROLLSCREENBUFFER));
+ ScrollScreenBufferRequest->Fill = *lpFill;
+ ScrollScreenBufferRequest->Unicode = bUnicode;
- if (!NT_SUCCESS(Status))
+ CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
+ NULL,
+ CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepScrollScreenBuffer),
+ sizeof(*ScrollScreenBufferRequest));
+ if (!NT_SUCCESS(ApiMessage.Status))
{
- BaseSetLastNTError(Status);
+ BaseSetLastNTError(ApiMessage.Status);
return FALSE;
}
BOOL
WINAPI
ScrollConsoleScreenBufferA(HANDLE hConsoleOutput,
- CONST SMALL_RECT *lpScrollRectangle,
- CONST SMALL_RECT *lpClipRectangle,
+ CONST SMALL_RECT* lpScrollRectangle,
+ CONST SMALL_RECT* lpClipRectangle,
COORD dwDestinationOrigin,
- CONST CHAR_INFO *lpFill)
+ CONST CHAR_INFO* lpFill)
{
return IntScrollConsoleScreenBuffer(hConsoleOutput,
- (PSMALL_RECT)lpScrollRectangle,
- (PSMALL_RECT)lpClipRectangle,
+ lpScrollRectangle,
+ lpClipRectangle,
dwDestinationOrigin,
- (PCHAR_INFO)lpFill,
+ lpFill,
FALSE);
}
static BOOL
-IntSetConsoleTitle(CONST VOID *lpConsoleTitle, DWORD dwNumChars, BOOLEAN bUnicode)
+IntSetConsoleTitle(CONST VOID *lpConsoleTitle, BOOLEAN bUnicode)
{
CONSOLE_API_MESSAGE ApiMessage;
PCONSOLE_GETSETCONSOLETITLE TitleRequest = &ApiMessage.Data.TitleRequest;
PCSR_CAPTURE_BUFFER CaptureBuffer;
+ DWORD dwNumChars = (lpConsoleTitle ? (bUnicode ? wcslen(lpConsoleTitle) : strlen(lpConsoleTitle)) : 0);
+
TitleRequest->ConsoleHandle = NtCurrentPeb()->ProcessParameters->ConsoleHandle;
TitleRequest->Length = dwNumChars * (bUnicode ? sizeof(WCHAR) : sizeof(CHAR));
TitleRequest->Unicode = bUnicode;
WINAPI
SetConsoleTitleW(LPCWSTR lpConsoleTitle)
{
- return IntSetConsoleTitle(lpConsoleTitle, wcslen(lpConsoleTitle), TRUE);
+ return IntSetConsoleTitle(lpConsoleTitle, TRUE);
}
WINAPI
SetConsoleTitleA(LPCSTR lpConsoleTitle)
{
- return IntSetConsoleTitle(lpConsoleTitle, strlen(lpConsoleTitle), FALSE);
+ return IntSetConsoleTitle(lpConsoleTitle, FALSE);
}
BOOL
WINAPI
-GetConsoleNlsMode(HANDLE hConsole, LPDWORD lpMode)
+SetConsoleCursorMode(HANDLE hConsole, BOOL Unknown1, BOOL Unknown2)
{
STUB;
return FALSE;
BOOL
WINAPI
-SetConsoleCursorMode(HANDLE hConsole, BOOL Unknown1, BOOL Unknown2)
+GetConsoleNlsMode(HANDLE hConsole, LPDWORD lpMode)
{
STUB;
return FALSE;
BOOL
WINAPI
-SetConsoleLocalEUDC(DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4)
+SetConsoleNlsMode(HANDLE hConsole, DWORD dwMode)
{
STUB;
return FALSE;
BOOL
WINAPI
-SetConsoleNlsMode(HANDLE hConsole, DWORD dwMode)
+SetConsoleLocalEUDC(DWORD Unknown1, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4)
{
STUB;
return FALSE;