Windows CE (.NET) とか IoTとか

組込みWindows と IoTの話を扱います

CE.NETのビルド番号

Windows CEマシンではコントロールパネルのシステムでビルド番号が表示されます。

BuildNumber.JPG

このビルド番号がPlatform Builderのどこから来るのか調べてみました。

1. まず、コントロールパネルのソースコード

PUBLIC\WCESHELLFE\OAK\CTLPNL\CPLMAIN\system.cpp

から、ビルド番号がGetVersionEx APIの結果であることがわかります。

2. 次に、PrivateツリーのカーネルソースコードGetVersionEx で検索すると、

PRIVATE\WINCEOS\COREOS\CORE\DLL\apis.c

BOOL GetVersionEx(LPOSVERSIONINFO lpver) {

(中略)

lpver->dwBuildNumber = CE_BUILD_VER;

のようなコードが見つかります。(要するにCOREDLL内で処理しているわけですね。)

3. 最後に、CE_BUILD_VER がどこで定義されているか調べます。apis.cの先頭のあたりに

#include "windows.h"

#include "nkintr.h"

#include "bldver.h"

#include "kernel.h"

(中略)

#include "cscode.c"

とあるので、これらのどれかだろうと見当をつけて調べてみると、はたして

PUBLIC\COMMON\SDK\INC\bldver.h

に、以下の定義を見つけました。

#define CE_BUILD_VER 1088

要するにSDKのインクルードファイルにあるんですね。これでカスタムSDKを作ったときに、元になったビルド番号も知ることができることがわかりました。