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.
|
|
/*
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
|