seclan のほえほえルーム

| |

・Win9x で RSRC32.DLL を使ってシステム/GDI/USER リソース使用率を得る方法 (1999/08/10 [])
 Win9x ではベースが 16 bit なので、GDI や USER で大きなリソースをたくさん消費できません。したがって、このリソースの使用率に常に気を配る必要があります。現在の使用率は、GDI や USER というリソース名で表現されます。システムリソースは、この GDI と USER リソースのうちの小さい方の値と同じです。
 それを取得する方法は、Win16 API ならば、GetFreeSystemResources という API を使えば簡単に取得することができますが、Win32 には本来必要がないのでそのような API は存在しません。しかし、Win9x のような OS の場合には、Win32 上から何とかして取得したくなります。
 その取得の一つの方法として、RSRC32.DLL を使う方法があります。ただしこの DLL はすべての Windows に含まれているわけではないので注意が必要です。具体的な方法を以下に示します。ただしエラー処理を省略してあります。

RSRC32.DLL を使ったリソース使用率の取得方法

UINT WINAPI (*GetFreeResources32)(UINT);
  //UINT の部分の引数
  #define GFR32_SYSTEM 0
  #define GFR32_GDI   1
  #define GFR32_USER  2
HMODULE hm;
int usage;

hm = (HMODULE)LoadLibrary("RSRC32.DLL");
GetFreeResources32 = (UINT WINAPI (*)(UINT))GetProcAddress(hm,
                      "_MyGetFreeSystemResources32@4");

usage = GetFreeResources32(GFR32_SYSTEM); //SYSTEM リソース (%)
usage = GetFreeResources32(GFR32_GDI);   //GDI リソース  (%)
usage = GetFreeResources32(GFR32_USER);  //USER リソース (%)

FreeLibrary(hm);

 基本的には RSRC32.DLL に含まれている "_MyGetFreeSystemResources32@4" という関数を呼び出すだけです。この関数の引数は、上で示したように、0 が SYSTEM、1 が GDI、2 が USER リソースを取得することを意味します。戻り値はその使用率(%)です。

by seclan

関連


| |

 

配信

4.34 msec