Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
EmulateGetStdHandle.cpp
Abstract: Normally, when a process is created, members hStdInput, hStdOutput, and hStdError of STARTUPINFO struct are set to NULL. Some apps like Baby-Sitters Club Activity Center and Baby-Sitters Club 3-rd Grade Disk 2 may check these handles and send Error messages. This shim can be used in this case to send appropriate handles and prevent program terminate.
History:
06/14/2000 a-vales created 11/29/2000 andyseti Converted into AppSpecific shim.
--*/
#include "precomp.h"
IMPLEMENT_SHIM_BEGIN(EmulateGetStdHandle) #include "ShimHookMacro.h"
APIHOOK_ENUM_BEGIN APIHOOK_ENUM_ENTRY(GetStdHandle) APIHOOK_ENUM_END
HANDLE APIHOOK(GetStdHandle)( DWORD nStdHandle) { HANDLE hStd = ORIGINAL_API(GetStdHandle)(nStdHandle);
if (hStd == 0) { switch (nStdHandle) { case STD_INPUT_HANDLE: LOGN( eDbgLevelError, "Correcting GetStdHandle(STD_INPUT_HANDLE). Returning handle = 1."); hStd = (HANDLE) 1; break; case STD_OUTPUT_HANDLE: LOGN( eDbgLevelError, "Correcting GetStdHandle(STD_OUTPUT_HANDLE). Returning handle = 2."); hStd = (HANDLE) 2; break;
case STD_ERROR_HANDLE: LOGN( eDbgLevelError, "Correcting GetStdHandle(STD_ERROR_HANDLE). Returning handle = 3."); hStd = (HANDLE) 3; break; } }
return hStd; }
/*++
Register hooked functions
--*/
HOOK_BEGIN
APIHOOK_ENTRY(KERNEL32.DLL, GetStdHandle)
HOOK_END
IMPLEMENT_SHIM_END
|