Listing 5 Providing missing functions
#ifdef WDN_SHAREDCU
# define GetFileSizeEx_impl GetFileSizeEx
. . .
#endif /* WDN_SHAREDCU */
. . .
static BOOL WINAPI GetFileSizeEx_impl_NT(HANDLE hFile, PLARGE_INTEGER lpFileSize)
{
typedef BOOL (WINAPI *PFnGetFileSizeEx)(HANDLE , PLARGE_INTEGER );
PFnGetFileSizeEx pfn = (PFnGetFileSizeEx)GetProcAddress(GetInstance_Kernel32(), "GetFileSizeEx");
return (NULL == pfn) ? FALSE : pfn(hFile, lpFileSize);
}
static BOOL WINAPI GetFileSizeEx_impl_9x(HANDLE hFile, PLARGE_INTEGER lpFileSize)
{
DWORD dwHigh;
DWORD dwLow = GetFileSize(hFile, &dwHigh);
if( dwLow != INVALID_FILE_SIZE ||
GetLastError() == ERROR_SUCCESS)
{
lpFileSize->LowPart = dwLow;
lpFileSize->HighPart = dwHigh;
return TRUE;
}
return FALSE;
}
#ifdef WDN_SHAREDCU
# pragma warning(disable : 4273)
#endif /* WDN_SHAREDCU */
#ifdef WDN_DLL
extern __declspec(dllexport)
#endif /* WDN_DLL */
BOOL WINAPI GetFileSizeEx_impl(HANDLE hFile, PLARGE_INTEGER lpFileSize)
{
if(IsWinNT4Plus())
{
debug_printf("GetFileSizeEx_impl: calling GetFileSizeEx_impl_NT()\n");
return GetFileSizeEx_impl_NT(hFile, lpFileSize);
}
else
{
debug_printf("GetFileSizeEx_impl: calling GetFileSizeEx_impl_9x()\n");
return GetFileSizeEx_impl_9x(hFile, lpFileSize);
}
}
#ifdef WDN_SHAREDCU
# pragma warning(default : 4273)
#endif /* WDN_SHAREDCU */