PATH:
opt
/
bitninja-threat-hunting
/
node_modules
/
node-pty
/
deps
/
winpty
/
misc
// // Verify that console selection blocks writes to an inactive console screen // buffer. Writes TEST PASSED or TEST FAILED to the popup console window. // #include <windows.h> #include <stdio.h> #include <string> #include "TestUtil.cc" const int SC_CONSOLE_MARK = 0xFFF2; const int SC_CONSOLE_SELECT_ALL = 0xFFF5; bool g_useMark = false; CALLBACK DWORD pausingThread(LPVOID dummy) { HWND hwnd = GetConsoleWindow(); trace("Sending selection to freeze"); SendMessage(hwnd, WM_SYSCOMMAND, g_useMark ? SC_CONSOLE_MARK : SC_CONSOLE_SELECT_ALL, 0); Sleep(1000); trace("Sending escape WM_CHAR to unfreeze"); SendMessage(hwnd, WM_CHAR, 27, 0x00010001); Sleep(1000); } static HANDLE createBuffer() { HANDLE buf = CreateConsoleScreenBuffer( GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CONSOLE_TEXTMODE_BUFFER, NULL); ASSERT(buf != INVALID_HANDLE_VALUE); return buf; } static void runTest(bool useMark, bool createEarly) { trace("======================================="); trace("useMark=%d createEarly=%d", useMark, createEarly); g_useMark = useMark; HANDLE buf = INVALID_HANDLE_VALUE; if (createEarly) { buf = createBuffer(); } CreateThread(NULL, 0, pausingThread, NULL, 0, NULL); Sleep(500); if (!createEarly) { trace("Creating buffer"); TimeMeasurement tm1; buf = createBuffer(); const double elapsed1 = tm1.elapsed(); if (elapsed1 >= 0.250) { printf("!!! TEST FAILED !!!\n"); Sleep(2000); return; } } trace("Writing to aux buffer"); TimeMeasurement tm2; DWORD actual = 0; BOOL ret = WriteConsoleW(buf, L"HI", 2, &actual, NULL); const double elapsed2 = tm2.elapsed(); trace("Writing to aux buffer: finished: ret=%d actual=%d (elapsed=%1.3f)", ret, actual, elapsed2); if (elapsed2 < 0.250) { printf("!!! TEST FAILED !!!\n"); } else { printf("TEST PASSED\n"); } Sleep(2000); } int main(int argc, char **argv) { if (argc == 1) { startChildProcess(L"child"); return 0; } std::string arg = argv[1]; if (arg == "child") { for (int useMark = 0; useMark <= 1; useMark++) { for (int createEarly = 0; createEarly <= 1; createEarly++) { runTest(useMark, createEarly); } } printf("done...\n"); Sleep(1000); } return 0; }
[-] DebugServer.py
[edit]
[+]
Font-Report-June2016
[-] Win32Echo1.cc
[edit]
[-] font-notes.txt
[edit]
[-] ShowArgv.cc
[edit]
[-] SetCursorPos.cc
[edit]
[-] UnicodeDoubleWidthTest.cc
[edit]
[-] SetBufferSize.cc
[edit]
[-] GetFont.cc
[edit]
[-] FreezePerfTest.cc
[edit]
[-] color-test.sh
[edit]
[+]
..
[-] ShowConsoleInput.cc
[edit]
[-] MouseInputNotes.txt
[edit]
[-] DebugClient.py
[edit]
[-] ScreenBufferTest2.cc
[edit]
[-] Win10WrapTest1.cc
[edit]
[-] VeryLargeRead.cc
[edit]
[-] FormatChar.h
[edit]
[-] ChangeScreenBuffer.cc
[edit]
[-] IdentifyConsoleWindow.ps1
[edit]
[-] DumpLines.py
[edit]
[-] EnableExtendedFlags.txt
[edit]
[-] TestUtil.cc
[edit]
[-] MoveConsoleWindow.cc
[edit]
[-] ClearConsole.cc
[edit]
[-] IsNewConsole.cc
[edit]
[-] ConoutMode.cc
[edit]
[-] SetWindowRect.cc
[edit]
[-] ConinMode.cc
[edit]
[-] WindowsBugCrashReader.cc
[edit]
[-] WriteConsole.cc
[edit]
[-] UnicodeWideTest1.cc
[edit]
[-] Notes.txt
[edit]
[-] Win32Test2.cc
[edit]
[-] ScreenBufferFreezeInactive.cc
[edit]
[-] GetConsolePos.cc
[edit]
[-] VkEscapeTest.cc
[edit]
[-] Win32Test1.cc
[edit]
[-] winbug-15048.cc
[edit]
[-] Win32Write1.cc
[edit]
[-] ScreenBufferTest.cc
[edit]
[-] OSVersion.cc
[edit]
[-] BufferResizeTests.cc
[edit]
[-] Spew.py
[edit]
[-] build32.sh
[edit]
[-] build64.sh
[edit]
[-] SetFont.cc
[edit]
[-] SelectAllTest.cc
[edit]
[-] UnixEcho.cc
[edit]
[-] ConinMode.ps1
[edit]
[-] Utf16Echo.cc
[edit]
[-] UnicodeWideTest2.cc
[edit]
[-] FontSurvey.cc
[edit]
[-] GetCh.cc
[edit]
[-] Win10WrapTest2.cc
[edit]
[-] Win32Echo2.cc
[edit]
[-] Win32Test3.cc
[edit]
[-] Win10ResizeWhileFrozen.cc
[edit]