本文整理汇总了C++中ORIGINAL_KRNL函数的典型用法代码示例。如果您正苦于以下问题:C++ ORIGINAL_KRNL函数的具体用法?C++ ORIGINAL_KRNL怎么用?C++ ORIGINAL_KRNL使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ORIGINAL_KRNL函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: OnExitProcess
// May be called from "C" programs
VOID WINAPI OnExitProcess(UINT uExitCode)
{
//typedef BOOL (WINAPI* OnExitProcess_t)(UINT uExitCode);
ORIGINAL_KRNL(ExitProcess);
#if 0
if (gbIsLessProcess)
{
_ASSERTE(FALSE && "Continue to ExitProcess");
}
#endif
gnDllState |= ds_OnExitProcess;
#ifdef PRINT_ON_EXITPROCESS_CALLS
wchar_t szInfo[80]; _wsprintf(szInfo, SKIPCOUNT(szInfo) L"\n\x1B[1;31;40m::ExitProcess(%u) called\x1B[m\n", uExitCode);
WriteProcessed(szInfo, lstrlen(szInfo), NULL);
#endif
// And terminate our threads
DoDllStop(false, ds_OnExitProcess);
bool bUseForceTerminate;
// Issue 1865: Due to possible dead locks in LdrpAcquireLoaderLock() call TerminateProcess
bUseForceTerminate = gbHookServerForcedTermination;
#ifdef USE_GH_272_WORKAROUND
// gh#272: For unknown yet reason existance of nvd3d9wrap.dll (or nvd3d9wrapx.dll on 64-bit)
// caused stack overflow with following calls
//
// nvd3d9wrap!GetNVDisplayW+0x174f
// nvd3d9wrap!GetNVDisplayW+0x174f
// user32!_UserClientDllInitialize+0x2ca
// ntdll!LdrpCallInitRoutine+0x14
// ntdll!LdrShutdownProcess+0x1aa
// ntdll!RtlExitUserProcess+0x74
// kernel32!ExitProcessStub+0x12
// CallExit!main+0x47
if (!bUseForceTerminate && GetModuleHandle(WIN3264TEST(L"nvd3d9wrap.dll",L"nvd3d9wrapx.dll")))
{
bUseForceTerminate = true;
}
#endif // USE_GH_272_WORKAROUND
if (bUseForceTerminate)
{
ORIGINAL_KRNL(TerminateProcess);
F(TerminateProcess)(GetCurrentProcess(), uExitCode);
return; // Assume not to get here
}
F(ExitProcess)(uExitCode);
}
开发者ID:AITW,项目名称:ConEmu,代码行数:55,代码来源:hkProcess.cpp
示例2: OnCreateConsoleScreenBuffer
HANDLE WINAPI OnCreateConsoleScreenBuffer(DWORD dwDesiredAccess, DWORD dwShareMode, const SECURITY_ATTRIBUTES *lpSecurityAttributes, DWORD dwFlags, LPVOID lpScreenBufferData)
{
//typedef HANDLE(WINAPI* OnCreateConsoleScreenBuffer_t)(DWORD dwDesiredAccess, DWORD dwShareMode, const SECURITY_ATTRIBUTES *lpSecurityAttributes, DWORD dwFlags, LPVOID lpScreenBufferData);
ORIGINAL_KRNL(CreateConsoleScreenBuffer);
#ifdef SHOWCREATEBUFFERINFO
wchar_t szDebugInfo[255];
msprintf(szDebugInfo, countof(szDebugInfo), L"CreateConsoleScreenBuffer(0x%X,0x%X,0x%X,0x%X,0x%X)",
dwDesiredAccess, dwShareMode, (DWORD)(DWORD_PTR)lpSecurityAttributes, dwFlags, (DWORD)(DWORD_PTR)lpScreenBufferData);
#endif
if ((dwShareMode & (FILE_SHARE_READ|FILE_SHARE_WRITE)) != (FILE_SHARE_READ|FILE_SHARE_WRITE))
dwShareMode |= (FILE_SHARE_READ|FILE_SHARE_WRITE);
if ((dwDesiredAccess & (GENERIC_READ|GENERIC_WRITE)) != (GENERIC_READ|GENERIC_WRITE))
dwDesiredAccess |= (GENERIC_READ|GENERIC_WRITE);
if (!ghStdOutHandle)
ghStdOutHandle = GetStdHandle(STD_OUTPUT_HANDLE);
HANDLE h = INVALID_HANDLE_VALUE;
if (F(CreateConsoleScreenBuffer))
h = F(CreateConsoleScreenBuffer)(dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwFlags, lpScreenBufferData);
#ifdef SHOWCREATEBUFFERINFO
msprintf(szDebugInfo+lstrlen(szDebugInfo), 32, L"=0x%X", (DWORD)(DWORD_PTR)h);
GuiMessageBox(ghConEmuWnd, szDebugInfo, L"ConEmuHk", MB_SETFOREGROUND|MB_SYSTEMMODAL);
#endif
return h;
}
开发者ID:chase-miller,项目名称:ConEmu,代码行数:32,代码来源:hkConsole.cpp
示例3: OnGetConsoleWindow
HWND WINAPI OnGetConsoleWindow(void)
{
//typedef HWND (WINAPI* OnGetConsoleWindow_t)(void);
ORIGINAL_KRNL(GetConsoleWindow);
_ASSERTE(F(GetConsoleWindow) != GetRealConsoleWindow);
// && F(GetConsoleWindow) != GetConsoleWindow - for minhook generation
if (ghConEmuWndDC && IsWindow(ghConEmuWndDC) /*ghConsoleHwnd*/)
{
if (ghAttachGuiClient)
{
// В GUI режиме (notepad, putty) отдавать реальный результат GetRealConsoleWindow()
// в этом режиме не нужно отдавать ни ghConEmuWndDC, ни серверную консоль
HWND hReal = GetRealConsoleWindow();
return hReal;
}
else
{
//return ghConsoleHwnd;
return ghConEmuWndDC;
}
}
HWND h;
h = F(GetConsoleWindow)();
return h;
}
开发者ID:chase-miller,项目名称:ConEmu,代码行数:28,代码来源:hkConsole.cpp
示例4: OnFreeConsole
BOOL WINAPI OnFreeConsole(void)
{
//typedef BOOL (WINAPI* OnFreeConsole_t)(void);
ORIGINAL_KRNL(FreeConsole);
BOOL lbRc = FALSE;
if (ph && ph->PreCallBack)
{
SETARGS(&lbRc);
if (!ph->PreCallBack(&args))
return lbRc;
}
//ReleaseConsoleInputSemaphore();
lbRc = F(FreeConsole)();
if (ph && ph->PostCallBack)
{
SETARGS(&lbRc);
ph->PostCallBack(&args);
}
return lbRc;
}
开发者ID:chase-miller,项目名称:ConEmu,代码行数:26,代码来源:hkConsole.cpp
示例5: OnWriteFile
BOOL WINAPI OnWriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
{
//typedef BOOL (WINAPI* OnWriteFile_t)(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped);
ORIGINAL_KRNL(WriteFile);
BOOL lbRc = FALSE;
CEAnsi* pObj = NULL;
if (lpBuffer && nNumberOfBytesToWrite && hFile)
{
bool bConOut = false;
if (HandleKeeper::IsAnsiCapable(hFile, &bConOut) && ((pObj = CEAnsi::Object()) != NULL))
{
lbRc = pObj->OurWriteConsoleA(hFile, (LPCSTR)lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten);
goto wrap;
}
else if (bConOut && CEAnsi::ghAnsiLogFile)
{
CEAnsi::WriteAnsiLogA((LPCSTR)lpBuffer, nNumberOfBytesToWrite);
}
}
lbRc = F(WriteFile)(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, lpOverlapped);
wrap:
return lbRc;
}
开发者ID:Maximus5,项目名称:ConEmu,代码行数:25,代码来源:hkStdIO.cpp
示例6: OnCreateNamedPipeW
HANDLE WINAPI OnCreateNamedPipeW(LPCWSTR lpName, DWORD dwOpenMode, DWORD dwPipeMode, DWORD nMaxInstances,DWORD nOutBufferSize, DWORD nInBufferSize, DWORD nDefaultTimeOut,LPSECURITY_ATTRIBUTES lpSecurityAttributes)
{
//typedef HANDLE(WINAPI* OnCreateNamedPipeW_t)(LPCWSTR lpName, DWORD dwOpenMode, DWORD dwPipeMode, DWORD nMaxInstances,DWORD nOutBufferSize, DWORD nInBufferSize, DWORD nDefaultTimeOut,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
ORIGINAL_KRNL(CreateNamedPipeW);
#ifdef _DEBUG
if (!lpName || !*lpName)
{
_ASSERTE(lpName && *lpName);
}
else
{
int nLen = lstrlen(lpName)+64;
wchar_t* psz = (wchar_t*)malloc(nLen*sizeof(*psz));
if (psz)
{
msprintf(psz, nLen, L"CreateNamedPipeW(%s)\n", lpName);
DebugString(psz);
free(psz);
}
}
#endif
HANDLE hPipe = F(CreateNamedPipeW)(lpName, dwOpenMode, dwPipeMode, nMaxInstances, nOutBufferSize, nInBufferSize, nDefaultTimeOut, lpSecurityAttributes);
return hPipe;
} // OnCreateNamedPipeW
开发者ID:Maximus5,项目名称:ConEmu,代码行数:26,代码来源:hkStdIO.cpp
示例7: OnSetConsoleActiveScreenBuffer
BOOL WINAPI OnSetConsoleActiveScreenBuffer(HANDLE hConsoleOutput)
{
//typedef BOOL (WINAPI* OnSetConsoleActiveScreenBuffer_t)(HANDLE hConsoleOutput);
ORIGINAL_KRNL(SetConsoleActiveScreenBuffer);
if (!ghStdOutHandle)
ghStdOutHandle = GetStdHandle(STD_OUTPUT_HANDLE);
#ifdef _DEBUG
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);
HANDLE hErr = GetStdHandle(STD_ERROR_HANDLE);
#endif
BOOL lbRc = FALSE;
if (F(SetConsoleActiveScreenBuffer))
lbRc = F(SetConsoleActiveScreenBuffer)(hConsoleOutput);
if (lbRc && (ghCurrentOutBuffer || (hConsoleOutput != ghStdOutHandle)))
{
#ifdef SHOWCREATEBUFFERINFO
CONSOLE_SCREEN_BUFFER_INFO lsbi = {};
BOOL lbTest = GetConsoleScreenBufferInfo(hConsoleOutput, &lsbi);
DWORD nErrCode = GetLastError();
_ASSERTE(lbTest && lsbi.dwSize.Y && "GetConsoleScreenBufferInfo(hConsoleOutput) failed");
#endif
ghCurrentOutBuffer = hConsoleOutput;
RequestLocalServerParm Parm = {(DWORD)sizeof(Parm), slsf_SetOutHandle, &ghCurrentOutBuffer};
RequestLocalServer(&Parm);
}
return lbRc;
}
开发者ID:chase-miller,项目名称:ConEmu,代码行数:34,代码来源:hkConsole.cpp
示例8: OnTerminateThread
BOOL WINAPI OnTerminateThread(HANDLE hThread, DWORD dwExitCode)
{
//typedef BOOL (WINAPI* OnTerminateThread_t)(HANDLE hThread, UINT dwExitCode);
ORIGINAL_KRNL(TerminateThread);
BOOL lbRc;
#if 0
if (gbIsLessProcess)
{
_ASSERTE(FALSE && "Continue to terminate thread");
}
#endif
if (hThread == GetCurrentThread())
{
// And terminate our service threads
gnDllState |= ds_OnTerminateThread;
// Main thread is abnormally terminating?
if (GetCurrentThreadId() == gnHookMainThreadId)
{
DoDllStop(false, ds_OnTerminateThread);
}
}
lbRc = F(TerminateThread)(hThread, dwExitCode);
return lbRc;
}
开发者ID:1833183060,项目名称:ConEmu,代码行数:29,代码来源:hkProcess.cpp
示例9: OnSetConsoleMode
BOOL WINAPI OnSetConsoleMode(HANDLE hConsoleHandle, DWORD dwMode)
{
//typedef BOOL (WINAPI* OnSetConsoleMode_t)(HANDLE hConsoleHandle, DWORD dwMode);
ORIGINAL_KRNL(SetConsoleMode);
BOOL lbRc = FALSE;
#if 0
if (!(dwMode & ENABLE_PROCESSED_OUTPUT))
{
_ASSERTEX((dwMode & ENABLE_PROCESSED_OUTPUT)==ENABLE_PROCESSED_OUTPUT);
}
#endif
if (gbIsVimProcess)
{
if ((dwMode & (ENABLE_WRAP_AT_EOL_OUTPUT|ENABLE_PROCESSED_OUTPUT)) != (ENABLE_WRAP_AT_EOL_OUTPUT|ENABLE_PROCESSED_OUTPUT))
{
if (CEAnsi::IsOutputHandle(hConsoleHandle))
{
dwMode |= ENABLE_WRAP_AT_EOL_OUTPUT|ENABLE_PROCESSED_OUTPUT;
}
else
{
dwMode |= ENABLE_WINDOW_INPUT;
}
}
}
lbRc = F(SetConsoleMode)(hConsoleHandle, dwMode);
return lbRc;
}
开发者ID:michaellukashov,项目名称:ConEmu,代码行数:32,代码来源:hkConsoleOutput.cpp
示例10: OnWriteConsoleInputA
BOOL WINAPI OnWriteConsoleInputA(HANDLE hConsoleInput, const INPUT_RECORD *lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsWritten)
{
//typedef BOOL (WINAPI* OnWriteConsoleInputA_t)(HANDLE hConsoleInput, const INPUT_RECORD *lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsWritten);
ORIGINAL_KRNL(WriteConsoleInputA);
BOOL lbRc = FALSE;
#ifdef _DEBUG
PreWriteConsoleInput(FALSE, lpBuffer, nLength);
#endif
if (ph && ph->PreCallBack)
{
SETARGS4(&lbRc,hConsoleInput,lpBuffer,nLength,lpNumberOfEventsWritten);
// Если функция возвращает FALSE - реальная запись не будет вызвана
if (!ph->PreCallBack(&args))
return lbRc;
}
lbRc = F(WriteConsoleInputA)(hConsoleInput, lpBuffer, nLength, lpNumberOfEventsWritten);
if (ph && ph->PostCallBack)
{
SETARGS4(&lbRc,hConsoleInput,lpBuffer,nLength,lpNumberOfEventsWritten);
ph->PostCallBack(&args);
}
return lbRc;
}
开发者ID:1833183060,项目名称:ConEmu,代码行数:29,代码来源:hkConsoleInput.cpp
示例11: OnGetNumberOfConsoleInputEvents
BOOL WINAPI OnGetNumberOfConsoleInputEvents(HANDLE hConsoleInput, LPDWORD lpcNumberOfEvents)
{
//typedef BOOL (WINAPI* OnGetNumberOfConsoleInputEvents_t)(HANDLE hConsoleInput, LPDWORD lpcNumberOfEvents);
SUPPRESSORIGINALSHOWCALL;
ORIGINAL_KRNL(GetNumberOfConsoleInputEvents);
BOOL lbRc = FALSE;
//if (gpFarInfo && bMainThread)
// TouchReadPeekConsoleInputs();
if (ph && ph->PreCallBack)
{
SETARGS2(&lbRc,hConsoleInput,lpcNumberOfEvents);
// Если функция возвращает FALSE - реальное чтение не будет вызвано
if (!ph->PreCallBack(&args))
return lbRc;
}
lbRc = F(GetNumberOfConsoleInputEvents)(hConsoleInput, lpcNumberOfEvents);
// Hiew fails pasting from clipboard on high speed
if (gbIsHiewProcess && lpcNumberOfEvents && (*lpcNumberOfEvents > 1))
{
*lpcNumberOfEvents = 1;
}
if (ph && ph->PostCallBack)
{
SETARGS2(&lbRc,hConsoleInput,lpcNumberOfEvents);
ph->PostCallBack(&args);
}
return lbRc;
}
开发者ID:1833183060,项目名称:ConEmu,代码行数:35,代码来源:hkConsoleInput.cpp
示例12: OnReadConsoleInputA
BOOL WINAPI OnReadConsoleInputA(HANDLE hConsoleInput, PINPUT_RECORD lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsRead)
{
//typedef BOOL (WINAPI* OnReadConsoleInputA_t)(HANDLE hConsoleInput, PINPUT_RECORD lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsRead);
SUPPRESSORIGINALSHOWCALL;
ORIGINAL_KRNL(ReadConsoleInputA);
//if (gpFarInfo && bMainThread)
// TouchReadPeekConsoleInputs(0);
BOOL lbRc = FALSE;
#if defined(_DEBUG)
#if 1
UINT nCp = GetConsoleCP();
UINT nOutCp = GetConsoleOutputCP();
UINT nOemCp = GetOEMCP();
UINT nAnsiCp = GetACP();
#endif
#endif
// To minimize startup duration and possible problems
// hook server will start on first 'user interaction'
CheckHookServer();
if (ph && ph->PreCallBack)
{
SETARGS4(&lbRc,hConsoleInput,lpBuffer,nLength,lpNumberOfEventsRead);
// Если функция возвращает FALSE - реальное чтение не будет вызвано
if (!ph->PreCallBack(&args))
return lbRc;
}
CESERVER_CONSOLE_APP_MAPPING* pAppMap = NULL;
PreReadConsoleInput(hConsoleInput, rcif_Ansi|rcif_LLInput, &pAppMap);
//#ifdef USE_INPUT_SEMAPHORE
//DWORD nSemaphore = ghConInSemaphore ? WaitForSingleObject(ghConInSemaphore, INSEMTIMEOUT_READ) : 1;
//_ASSERTE(nSemaphore<=1);
//#endif
lbRc = F(ReadConsoleInputA)(hConsoleInput, lpBuffer, nLength, lpNumberOfEventsRead);
PostReadConsoleInput(hConsoleInput, rcif_Ansi|rcif_LLInput, pAppMap);
//#ifdef USE_INPUT_SEMAPHORE
//if ((nSemaphore == WAIT_OBJECT_0) && ghConInSemaphore) ReleaseSemaphore(ghConInSemaphore, 1, NULL);
//#endif
if (ph && ph->PostCallBack)
{
SETARGS4(&lbRc,hConsoleInput,lpBuffer,nLength,lpNumberOfEventsRead);
ph->PostCallBack(&args);
}
if (lbRc && lpNumberOfEventsRead && *lpNumberOfEventsRead && lpBuffer)
{
OnPeekReadConsoleInput('R', 'A', hConsoleInput, lpBuffer, *lpNumberOfEventsRead);
}
return lbRc;
}
开发者ID:qyqx,项目名称:ConEmu,代码行数:60,代码来源:hkConsoleInput.cpp
示例13: OnGetLargestConsoleWindowSize
COORD WINAPI OnGetLargestConsoleWindowSize(HANDLE hConsoleOutput)
{
//typedef COORD (WINAPI* OnGetLargestConsoleWindowSize_t)(HANDLE hConsoleOutput);
ORIGINAL_KRNL(GetLargestConsoleWindowSize);
COORD cr = {80,25}, crLocked = {0,0};
if (ghConEmuWndDC && IsVisibleRectLocked(crLocked))
{
cr = crLocked;
}
else
{
if (F(GetLargestConsoleWindowSize))
{
cr = F(GetLargestConsoleWindowSize)(hConsoleOutput);
}
// Wine BUG
//if (!cr.X || !cr.Y)
if ((cr.X == 80 && cr.Y == 24) && IsWine())
{
cr.X = 255;
cr.Y = 255;
}
}
return cr;
}
开发者ID:chase-miller,项目名称:ConEmu,代码行数:28,代码来源:hkConsole.cpp
示例14: OnTerminateProcess
// For example, mintty is terminated ‘abnormally’. It calls TerminateProcess instead of ExitProcess.
BOOL WINAPI OnTerminateProcess(HANDLE hProcess, UINT uExitCode)
{
//typedef BOOL (WINAPI* OnTerminateProcess_t)(HANDLE hProcess, UINT uExitCode);
ORIGINAL_KRNL(TerminateProcess);
BOOL lbRc;
if (hProcess == GetCurrentProcess())
{
#ifdef PRINT_ON_EXITPROCESS_CALLS
wchar_t szInfo[80]; _wsprintf(szInfo, SKIPCOUNT(szInfo) L"\n\x1B[1;31;40m::TerminateProcess(%u) called\x1B[m\n", uExitCode);
WriteProcessed2(szInfo, lstrlen(szInfo), NULL, wps_Error);
#endif
gnDllState |= ds_OnTerminateProcess;
// We don't need to do proper/full deinitialization,
// because the process is to be terminated abnormally
DoDllStop(false, ds_OnTerminateProcess);
lbRc = F(TerminateProcess)(hProcess, uExitCode);
}
else
{
lbRc = F(TerminateProcess)(hProcess, uExitCode);
}
return lbRc;
}
开发者ID:1833183060,项目名称:ConEmu,代码行数:28,代码来源:hkProcess.cpp
示例15: OnSetConsoleTextAttribute
// Sets the attributes of characters written to the console screen buffer by
// the WriteFile or WriteConsole function, or echoed by the ReadFile or ReadConsole function.
// This function affects text written after the function call.
BOOL WINAPI OnSetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes)
{
//typedef BOOL (WINAPI* OnSetConsoleTextAttribute_t)(HANDLE hConsoleOutput, WORD wAttributes);
ORIGINAL_KRNL(SetConsoleTextAttribute);
BOOL lbRc = FALSE;
if (ph && ph->PreCallBack)
{
SETARGS2(&lbRc, hConsoleOutput, wAttributes);
ph->PreCallBack(&args);
}
#ifdef _DEBUG
// We do not care if visible ChildGui is doing smth in their console
// Process here only our native console windows
if ((ghAttachGuiClient == NULL) && !gbAttachGuiClient && (wAttributes != 7))
{
wchar_t szDbgInfo[128];
msprintf(szDbgInfo, countof(szDbgInfo), L"PID=%u, SetConsoleTextAttribute=0x%02X(%u)\n", GetCurrentProcessId(), (int)wAttributes, (int)wAttributes);
DebugString(szDbgInfo);
}
#endif
lbRc = F(SetConsoleTextAttribute)(hConsoleOutput, wAttributes);
if (ph && ph->PostCallBack)
{
SETARGS2(&lbRc, hConsoleOutput, wAttributes);
ph->PostCallBack(&args);
}
return lbRc;
}
开发者ID:DreamersStudio,项目名称:ConEmu,代码行数:37,代码来源:hkConsoleOutput.cpp
示例16: OnWriteConsoleOutputA
BOOL WINAPI OnWriteConsoleOutputA(HANDLE hConsoleOutput,const CHAR_INFO *lpBuffer,COORD dwBufferSize,COORD dwBufferCoord,PSMALL_RECT lpWriteRegion)
{
//typedef BOOL (WINAPI* OnWriteConsoleOutputA_t)(HANDLE hConsoleOutput,const CHAR_INFO *lpBuffer,COORD dwBufferSize,COORD dwBufferCoord,PSMALL_RECT lpWriteRegion);
ORIGINAL_KRNL(WriteConsoleOutputA);
BOOL lbRc = FALSE;
#ifdef _DEBUG
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD dwMode = 0;
GetConsoleMode(hOut, &dwMode);
GetConsoleMode(hConsoleOutput, &dwMode);
#endif
if (ph && ph->PreCallBack)
{
SETARGS5(&lbRc, hConsoleOutput, lpBuffer, &dwBufferSize, &dwBufferCoord, lpWriteRegion);
ph->PreCallBack(&args);
}
lbRc = F(WriteConsoleOutputA)(hConsoleOutput, lpBuffer, dwBufferSize, dwBufferCoord, lpWriteRegion);
if (ph && ph->PostCallBack)
{
SETARGS5(&lbRc, hConsoleOutput, lpBuffer, &dwBufferSize, &dwBufferCoord, lpWriteRegion);
ph->PostCallBack(&args);
}
return lbRc;
}
开发者ID:DreamersStudio,项目名称:ConEmu,代码行数:29,代码来源:hkConsoleOutput.cpp
示例17: OnSetConsoleCursorPosition
BOOL WINAPI OnSetConsoleCursorPosition(HANDLE hConsoleOutput, COORD dwCursorPosition)
{
//typedef BOOL (WINAPI* OnSetConsoleCursorPosition_t)(HANDLE,COORD);
ORIGINAL_KRNL(SetConsoleCursorPosition);
BOOL lbRc;
if (gbIsVimAnsi)
{
#ifdef DUMP_VIM_SETCURSORPOS
wchar_t szDbg[80]; msprintf(szDbg, countof(szDbg), L"ViM trying to set cursor pos: {%i,%i}\n", (UINT)dwCursorPosition.X, (UINT)dwCursorPosition.Y);
OutputDebugString(szDbg);
#endif
lbRc = FALSE;
}
else
{
lbRc = F(SetConsoleCursorPosition)(hConsoleOutput, dwCursorPosition);
}
if (ghConsoleCursorChanged)
SetEvent(ghConsoleCursorChanged);
return lbRc;
}
开发者ID:chase-miller,项目名称:ConEmu,代码行数:25,代码来源:hkConsole.cpp
示例18: OnReadConsoleA
BOOL WINAPI OnReadConsoleA(HANDLE hConsoleInput, LPVOID lpBuffer, DWORD nNumberOfCharsToRead, LPDWORD lpNumberOfCharsRead, LPVOID pInputControl)
{
// typedef BOOL (WINAPI* OnReadConsoleA_t)(HANDLE hConsoleInput, LPVOID lpBuffer, DWORD nNumberOfCharsToRead, LPDWORD lpNumberOfCharsRead, LPVOID pInputControl);
SUPPRESSORIGINALSHOWCALL;
ORIGINAL_KRNL(ReadConsoleA);
BOOL lbRc = FALSE;
OnReadConsoleStart(false, hConsoleInput, lpBuffer, nNumberOfCharsToRead, lpNumberOfCharsRead, pInputControl);
lbRc = F(ReadConsoleA)(hConsoleInput, lpBuffer, nNumberOfCharsToRead, lpNumberOfCharsRead, pInputControl);
DWORD nErr = GetLastError();
// gh#465: For consistence with OnReadConsoleW
if (lbRc && lpBuffer && lpNumberOfCharsRead && *lpNumberOfCharsRead
// pInputControl has no evvect on ANSI version
&& (*lpNumberOfCharsRead <= 3))
{
// To avoid checking of the mapping, we check result first
const char* pchTest = (const char*)lpBuffer;
if ((pchTest[0] == 26 /* Ctrl-Z / ^Z / (char)('Z' - '@') */)
&& (((*lpNumberOfCharsRead == 3) && (pchTest[1] == '\r') && (pchTest[2] == '\n')) // Expected variant
|| ((*lpNumberOfCharsRead == 2) && (pchTest[1] == '\n')) // Possible variant?
))
{
if (isProcessCtrlZ())
*lpNumberOfCharsRead = 0;
}
}
OnReadConsoleEnd(lbRc, false, hConsoleInput, lpBuffer, nNumberOfCharsToRead, lpNumberOfCharsRead, pInputControl);
SetLastError(nErr);
return lbRc;
}
开发者ID:1833183060,项目名称:ConEmu,代码行数:34,代码来源:hkConsoleInput.cpp
示例19: OnGetLocalTime
void WINAPI OnGetLocalTime(LPSYSTEMTIME lpSystemTime)
{
//typedef void (WINAPI* OnGetLocalTime_t)(LPSYSTEMTIME);
ORIGINAL_KRNL(GetLocalTime);
if (!GetTime(false, lpSystemTime))
F(GetLocalTime)(lpSystemTime);
}
开发者ID:AITW,项目名称:ConEmu,代码行数:8,代码来源:hkKernel.cpp
示例20: OnGetConsoleAliasesW
DWORD WINAPI OnGetConsoleAliasesW(LPWSTR AliasBuffer, DWORD AliasBufferLength, LPWSTR ExeName)
{
//typedef DWORD (WINAPI* OnGetConsoleAliasesW_t)(LPWSTR AliasBuffer, DWORD AliasBufferLength, LPWSTR ExeName);
ORIGINAL_KRNL(GetConsoleAliasesW);
DWORD nError = 0;
DWORD nRc = F(GetConsoleAliasesW)(AliasBuffer,AliasBufferLength,ExeName);
if (!nRc)
{
nError = GetLastError();
// финт ушами
if (nError == ERROR_NOT_ENOUGH_MEMORY) // && gdwServerPID)
{
DWORD nServerPID = gnServerPID;
HWND hConWnd = GetRealConsoleWindow();
_ASSERTE(hConWnd == ghConWnd);
//MFileMapping<CESERVER_CONSOLE_MAPPING_HDR> ConInfo;
//ConInfo.InitName(CECONMAPNAME, (DWORD)hConWnd); //-V205
//CESERVER_CONSOLE_MAPPING_HDR *pInfo = ConInfo.Open();
//if (pInfo
// && (pInfo->cbSize >= sizeof(CESERVER_CONSOLE_MAPPING_HDR))
// //&& (pInfo->nProtocolVersion == CESERVER_REQ_VER)
// )
//{
// nServerPID = pInfo->nServerPID;
// ConInfo.CloseMap();
//}
if (nServerPID)
{
CESERVER_REQ_HDR In;
ExecutePrepareCmd(&In, CECMD_GETALIASES, sizeof(CESERVER_REQ_HDR));
CESERVER_REQ* pOut = ExecuteSrvCmd(nServerPID/*gdwServerPID*/, (CESERVER_REQ*)&In, hConWnd);
if (pOut)
{
size_t nData = min(AliasBufferLength,(pOut->hdr.cbSize-sizeof(pOut->hdr)));
if (nData)
{
memmove(AliasBuffer, pOut->Data, nData);
nRc = TRUE;
}
ExecuteFreeResult(pOut);
}
}
}
if (!nRc)
SetLastError(nError); // вернуть, вдруг какая функция его поменяла
}
return nRc;
}
开发者ID:chase-miller,项目名称:ConEmu,代码行数:57,代码来源:hkConsole.cpp
注:本文中的ORIGINAL_KRNL函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论