#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)
0 人中 0 人がこの 投稿 は役に立ったと言っています。