ワーキングセット情報の取得(C言語)

説明:

関数呼出し後五秒間待つ。次に、その時点でフォアグラウンドウィンドウとなっているウィンドウを探し、そのウィンドウを作成したプロセスをオープンする。最後に、オープンしたプロセスのワーキングセット情報を取得し、表示する。

キーワード:

QueryWorkingSet

サンプルコード:

void DispWorkingSet()
{
	DWORD i;
	DWORD ProcessId;
	HANDLE hProcess;
	HWND hWnd;
	char WindowTitle[1000];
	DWORD ws[10000];
	BOOL bResult;

	/* 五秒間待機 */
	for(i=5; i>0; i--) {
		printf("%d秒前\n", i);
		Sleep(1000);
	}

	/* この時点でフォアグラウンドウィンドウを所有しているプロセスをオープン */
	hWnd = GetForegroundWindow();
	GetWindowText(hWnd, WindowTitle, 1000);
	GetWindowThreadProcessId(hWnd, &ProcessId);
	hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, ProcessId);

	/* ワーキングセットの情報を取得 */
	printf("%s のワーキングセット情報:\n", WindowTitle);
	bResult = QueryWorkingSet(hProcess, ws, 10000);
	CloseHandle(hProcess);
	if(!bResult) {
		printf("working set can not query.\n");
		return;
	}

	/* 結果を表示 */
	for(i=1; i<=ws[0]; i++) {
		printf("%08x: ", ws[i] & 0xfffff000);
		if((ws[i] & 0x5) == 0x5) printf("copy-on-write "); 
		else if(ws[i] & 0x1) printf("read-only ");
		else if(ws[i] & 0x4) printf("read/write ");
		if(ws[i] & 0x2) printf("executable ");
		if(ws[i] & 0x100) printf("shared ");
		printf("\n");
	};
}

(original text:1999/01/06 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。