Leaked source code of windows server 2003
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.
 
 
 
 
 
 

67 lines
1.5 KiB

/*
Copyright (c) 2002 Microsoft Corporation
Module Name:
BeyondAtlantis.cpp
Abstract:
Fix disk space error caused by bad string passed to
GetDiskFreeSpace. This root path is also bad on Win9x. No idea
why that doesn't affect it.
History:
05/31/2002 linstev Created
*/
#include "precomp.h"
IMPLEMENT_SHIM_BEGIN(BeyondAtlantis)
#include "ShimHookMacro.h"
APIHOOK_ENUM_BEGIN
APIHOOK_ENUM_ENTRY(GetDiskFreeSpaceA)
APIHOOK_ENUM_END
BOOL
APIHOOK(GetDiskFreeSpaceA)(
LPCSTR lpRootPathName,
LPDWORD lpSectorsPerCluster,
LPDWORD lpBytesPerSector,
LPDWORD lpNumberOfFreeClusters,
LPDWORD lpTotalNumberOfClusters
)
{
if (lpRootPathName && (strncmp(lpRootPathName, "tla", 3) == 0)) {
CSTRING_TRY
{
CString csPath;
csPath.GetCurrentDirectoryW();
CString csDrive;
csPath.SplitPath(&csDrive, NULL, NULL, NULL);
return ORIGINAL_API(GetDiskFreeSpaceA)(csDrive.GetAnsi(), lpSectorsPerCluster,
lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters);
}
CSTRING_CATCH
{
}
}
return ORIGINAL_API(GetDiskFreeSpaceA)(lpRootPathName, lpSectorsPerCluster,
lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters);
}
HOOK_BEGIN
APIHOOK_ENTRY(KERNEL32.DLL, GetDiskFreeSpaceA)
HOOK_END
IMPLEMENT_SHIM_END