#if(_MFC_VER >= 0x0700)
#include <WinBase.h>
#else
#include <Windows.h>
#include <TChar.h>
// WinBase.h より
typedef struct _MEMORYSTATUSEX {
DWORD dwLength;
DWORD dwMemoryLoad;
DWORDLONG ullTotalPhys;
DWORDLONG ullAvailPhys;
DWORDLONG ullTotalPageFile;
DWORDLONG ullAvailPageFile;
DWORDLONG ullTotalVirtual;
DWORDLONG ullAvailVirtual;
DWORDLONG ullAvailExtendedVirtual;
} MEMORYSTATUSEX, *LPMEMORYSTATUSEX;
typedef BOOL (WINAPI *PFnGlobalMemoryStatusEx) (LPMEMORYSTATUSEX lpBuffer) ;
////
//*******************************************************************************
// クラス名:Kernel32.DLL ラッパー
// 作成日 :’10/09/16
//*******************************************************************************
class WrapKernel32 {
public:
WrapKernel32 () ;
virtual ~WrapKernel32 () ;
public:
virtual BOOL GlobalMemoryStatusEx(LPMEMORYSTATUSEX lpBuffer) ;
protected:
HMODULE HLibrary ;
PFnGlobalMemoryStatusEx FnGlobalMemoryStatusEx ;
} ;
////
//*******************************************************************************
// 関数名 :コンストラクタ/デストラクタ
// 作成日 :’10/09/16
//*******************************************************************************
inline
WrapKernel32::WrapKernel32 ()
{
HLibrary = NULL ;
FnGlobalMemoryStatusEx = NULL ;
HLibrary = ::LoadLibrary (TEXT("Kernel32.DLL")) ;
if (HLibrary == NULL) { return ; }
FnGlobalMemoryStatusEx = (PFnGlobalMemoryStatusEx) GetProcAddress(HLibrary,("GlobalMemoryStatusEx")) ;
}
inline
WrapKernel32::~WrapKernel32 ()
{
if (HLibrary != NULL) {
FreeLibrary(HLibrary) ;
}
}
////
//*******************************************************************************
// 関数名 :それぞれの呼び出し
// 作成日 :’10/09/16
//*******************************************************************************
inline
BOOL WrapKernel32::GlobalMemoryStatusEx (LPMEMORYSTATUSEX lpBuffer)
{
if (FnGlobalMemoryStatusEx != NULL) {
return FnGlobalMemoryStatusEx (lpBuffer) ;
}
return FALSE ;
}
inline
BOOL WINAPI GlobalMemoryStatusEx(LPMEMORYSTATUSEX lpBuffer)
{
if (lpBuffer->dwLength != sizeof(MEMORYSTATUSEX)) {
#ifdef _DEBUG
afxDump << _T("GlobalMemoryStatusEx ... dwLength != ") << sizeof(MEMORYSTATUSEX)
<< _T(" ") << lpBuffer->dwLength << _T("\r\n") ;
#endif
}
WrapKernel32 wk32 ;
return wk32.GlobalMemoryStatusEx(lpBuffer) ;
}
#endif // (_MFC_VER >= 0x0700)
WrpKrnl3.hxx