W-ZERO3用 メモリ容量取得クラス

W-ZERO3 プログラミングコンテスト用の部品を作り始める。
1月末まであと10日。実質、3日間。間に合うか?
複雑なことはできないので、とりあえず簡単にできるものを。
 
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
 
namespace Uchukamen.WZero3
{
    public class MemoryStatus
    {
        private class MEMORYSTATUS
        {
            public uint dwLength = 0;
            public uint dwMemoryLoad = 0;
            public uint dwTotalPhys = 0;
            public uint dwAvailPhys = 0;
            public uint dwTotalPageFile = 0;
            public uint dwAvailPageFile = 0;
            public uint dwTotalVirtual = 0;
            public uint dwAvailVirtual = 0;
        }
        [DllImport("CoreDll.dll")]
        private static extern void GlobalMemoryStatus
        (
        MEMORYSTATUS lpBuffer
        );
        [DllImport("CoreDll.dll")]
        public static extern int GetSystemMemoryDivision
        (
        ref uint lpdwStorePages,
        ref uint lpdwRamPages,
        ref uint lpdwPageSize
        );
        private float totalPhys = 0;
        public float TotalPhysicalMB
        {
            get { return totalPhys; }
        }
        private float availPhys = 0;
        public float AvailPhysicalMB
        {
            get { return availPhys; }
        }
        private float totalVirtual = 0;
        public float TotalVirtualMB
        {
            get { return totalVirtual; }
        }
        private float availVirtual = 0;
        public float AvailVirtualMB
        {
            get { return availVirtual; }
        }
        public void Get()
        {
            uint storePages = 0;
            uint ramPages = 0;
            uint pageSize = 0;
            int res = GetSystemMemoryDivision(ref storePages, ref ramPages, ref pageSize);
            MEMORYSTATUS memStatus = new MEMORYSTATUS();
            GlobalMemoryStatus(memStatus);
            totalPhys = memStatus.dwTotalPhys / 1024F / 1024F;
            availPhys = memStatus.dwAvailPhys / 1024F / 1024F;
            totalVirtual = memStatus.dwTotalVirtual / 1024F / 1024F;
            availVirtual = memStatus.dwAvailVirtual / 1024F / 1024F;
        }
    }
}
 
呼び出し
            MemoryStatus mstat = new MemoryStatus();
            mstat.Get();            textBox1.Text =
             "合計 物理   " + mstat.TotalPhysicalMB.ToString("n2") + " MB\r\n" +
             "空き 物理   " + mstat.AvailPhysicalMB.ToString("n2") + " MB\r\n" +
             "合計 仮想   " + mstat.TotalVirtualMB.ToString("n2") + " MB\r\n" +
             "空き 仮想   " + mstat.AvailVirtualMB.ToString("n2") + " MB\r\n";
 

Windows Mobile 開発メモ

開発環境構築メモ
 
1.VS2005 をインストール
2.Windows Mobile 5.0 SDK for Pocket PC (英語)をインストール 約174MB
   READMEによると、
  SDKを入れる前に、Please disable any virus checking software prior to installation. すること。
  ActiveSync over Ethernetは動かない。
  言語ごとにあるので、Windows Mobile 5.0 Emulator Images for Pocket PC – JPN.msi を選択。約106MB
  インストール時に、SDKとActiveSync 4.0 が必要と表示されるが、必要なし。
 
 
 

Google Maps API Version 2 Documentation

 
 結構遊べそう。
 

Visual Source Safe のクライアントライセンス

 
によると、
 

ライセンス

Visual SourceSafe のライセンスは、製品をインストールまたは使用するコンピュータごとに必要です。たとえば、100 人が Visual SourceSafe データベースを使用する場合、著作権法を遵守するためには、100 個の Visual SourceSafe ライセンスを購入する必要があります。ユーザーがクライアント コンピュータに Visual SourceSafe をインストールする場合、ライセンスされた製品パッケージの CD キーを各ユーザーごとに用意する必要があります。すべてのユーザー用に同じ CD キーを使用してインストールすることはできますが、その場合でも、ライセンス数はユーザー全員の分を用意する必要があります。

とあり、ユーザーー全員の分が必要となる。小売価格で8万円~9万円するので、大規模開発だと相当な出費になる・・・CVSやSource Forgeに走るのも無理ない。