VC 6 で GlobalMemoryStatusEx

#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

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ

  • Categories:


コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください