Divert ReadFile() and CloseHandle().

This commit is contained in:
Sam Hocevar
2010-09-22 23:38:36 +00:00
committed by sam
parent 58bac4bfc4
commit 2552b8cae1
3 changed files with 45 additions and 2 deletions
+1 -1
View File
@@ -54,7 +54,7 @@ AC_CHECK_FUNCS(__getdelim __srefill __filbuf __srget __uflow)
AC_CHECK_FUNCS(open64 lseek64 mmap64 fopen64 freopen64 ftello64 fseeko64 fsetpos64)
AC_CHECK_FUNCS(__open64 __lseek64 __fopen64 __freopen64 __ftello64 __fseeko64 __fsetpos64)
AC_CHECK_FUNCS(__fgets_chk __fgets_unlocked_chk __fread_chk __fread_unlocked_chk __read_chk __recv_chk __recvfrom_chk)
AC_CHECK_FUNCS(CreateFileA CreateFileW)
AC_CHECK_FUNCS(CreateFileA CreateFileW ReadFile CloseHandle)
AC_CHECK_TYPES(sighandler_t, [], [],
[#define _GNU_SOURCE
+2
View File
@@ -24,6 +24,7 @@
/* #undef HAVE_AIO_READ */
/* #undef HAVE_ARPA_INET_H */
#define HAVE_BIND 1
#define HAVE_CLOSEHANDLE 1
#define HAVE_CONNECT 1
#define HAVE_CREATEFILEA 1
#define HAVE_CREATEFILEW 1
@@ -72,6 +73,7 @@
/* #undef HAVE_PRAGMA_INIT */
/* #undef HAVE_PREAD */
#define HAVE_PROCESS_H 1
#define HAVE_READFILE 1
/* #undef HAVE_READV */
#define HAVE_RECV 1
#define HAVE_RECVFROM 1
+42 -1
View File
@@ -40,11 +40,20 @@
static HANDLE (*ORIG(CreateFileA))(LPCTSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES,
DWORD, DWORD, HANDLE);
#endif
#if defined HAVE_CREATEFILEA
static HANDLE (*ORIG(CreateFileW))(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES,
DWORD, DWORD, HANDLE);
#endif
#if defined HAVE_READFILE
static BOOL (*ORIG(ReadFile))(HANDLE, LPVOID, DWORD, LPDWORD, LPOVERLAPPED);
#endif
#if defined HAVE_CLOSEHANDLE
static BOOL (*ORIG(CloseHandle))(HANDLE);
#endif
/*
* CreateFileA, CreateFileW
*/
#if defined HAVE_CREATEFILEA
HANDLE NEW(CreateFileA)(LPCTSTR lpFileName, DWORD dwDesiredAccess,
@@ -72,15 +81,47 @@ HANDLE NEW(CreateFileW)(LPCWSTR lpFileName, DWORD dwDesiredAccess,
}
#endif
/*
* ReadFile
*/
#if defined HAVE_READFILE
BOOL NEW(ReadFile)(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead,
LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
{
fprintf(stderr, "ReadFile diverted!\n");
return ORIG(ReadFile)(hFile, lpBuffer, nNumberOfBytesToRead,
lpNumberOfBytesRead, lpOverlapped);
}
#endif
/*
* CloseHandle
*/
#if defined HAVE_CLOSEHANDLE
BOOL NEW(CloseHandle)(HANDLE hObject)
{
fprintf(stderr, "CloseHandle diverted!\n");
return ORIG(CloseHandle)(hObject);
}
#endif
/* Win32 function table */
#if defined _WIN32
zzuf_table_t table_win32[] =
{
#if defined HAVE_CLOSEHANDLE
DIVERT(CloseHandle),
#endif
#if defined HAVE_CREATEFILEA
DIVERT(CreateFileA),
#endif
#if defined HAVE_CREATEFILEW
DIVERT(CreateFileW),
#endif
#if defined HAVE_READFILE
DIVERT(ReadFile),
#endif
DIVERT_END
};