Flush and invalidate cache on closing handle
This commit is contained in:
parent
af2c31c466
commit
0366daad05
24
ANSI.c
24
ANSI.c
@ -2549,6 +2549,7 @@ const char APIProcessThreads[] = "API-MS-Win-Core-ProcessThreads-";
|
|||||||
const char APIProcessEnvironment[] = "API-MS-Win-Core-ProcessEnvironment-";
|
const char APIProcessEnvironment[] = "API-MS-Win-Core-ProcessEnvironment-";
|
||||||
const char APILibraryLoader[] = "API-MS-Win-Core-LibraryLoader-";
|
const char APILibraryLoader[] = "API-MS-Win-Core-LibraryLoader-";
|
||||||
const char APIFile[] = "API-MS-Win-Core-File-";
|
const char APIFile[] = "API-MS-Win-Core-File-";
|
||||||
|
const char APIHandle[] = "API-MS-Win-Core-Handle-";
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
@ -2564,6 +2565,7 @@ API_DATA APIs[] =
|
|||||||
{ APIProcessEnvironment, sizeof(APIProcessEnvironment) - 1, NULL },
|
{ APIProcessEnvironment, sizeof(APIProcessEnvironment) - 1, NULL },
|
||||||
{ APILibraryLoader, sizeof(APILibraryLoader) - 1, NULL },
|
{ APILibraryLoader, sizeof(APILibraryLoader) - 1, NULL },
|
||||||
{ APIFile, sizeof(APIFile) - 1, NULL },
|
{ APIFile, sizeof(APIFile) - 1, NULL },
|
||||||
|
{ APIHandle, sizeof(APIHandle) - 1, NULL },
|
||||||
{ NULL, 0, NULL }
|
{ NULL, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3569,6 +3571,27 @@ WINAPI MyCreateConsoleScreenBuffer( DWORD dwDesiredAccess, DWORD dwShareMode,
|
|||||||
lpScreenBufferData );
|
lpScreenBufferData );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL
|
||||||
|
WINAPI MyCloseHandle( HANDLE hObject )
|
||||||
|
{
|
||||||
|
int c;
|
||||||
|
|
||||||
|
EnterCriticalSection( &CritSect );
|
||||||
|
|
||||||
|
FlushBuffer();
|
||||||
|
|
||||||
|
for (c = 0; c < CACHE; ++c)
|
||||||
|
if (cache[c].h == hObject)
|
||||||
|
{
|
||||||
|
cache[c].h = INVALID_HANDLE_VALUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
LeaveCriticalSection( &CritSect );
|
||||||
|
|
||||||
|
return CloseHandle( hObject );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// My...
|
// My...
|
||||||
@ -3731,6 +3754,7 @@ HookFn Hooks[] = {
|
|||||||
HOOK( APIFile, CreateFileA ),
|
HOOK( APIFile, CreateFileA ),
|
||||||
HOOK( APIFile, CreateFileW ),
|
HOOK( APIFile, CreateFileW ),
|
||||||
HOOK( APIKernel, CreateConsoleScreenBuffer ),
|
HOOK( APIKernel, CreateConsoleScreenBuffer ),
|
||||||
|
HOOK( APIHandle, CloseHandle ),
|
||||||
HOOK( APIKernel, FillConsoleOutputAttribute ),
|
HOOK( APIKernel, FillConsoleOutputAttribute ),
|
||||||
HOOK( APIKernel, FillConsoleOutputCharacterA ),
|
HOOK( APIKernel, FillConsoleOutputCharacterA ),
|
||||||
HOOK( APIKernel, FillConsoleOutputCharacterW ),
|
HOOK( APIKernel, FillConsoleOutputCharacterW ),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user