2007/4/3

Windows Embedded CE 6.0 Platform Builder Service Pack 1 は、Windows CE Embedded CE 6.0 に新機能、機能向上、およびバグ フィックスを提供するものです。

また、Visual Studio 2005 シェルでホストされる Windows Embedded CE 6.0 用 Platform Builder のツールも含まれます。旧リリースの Platform Builder の機能に加え、Visual Studio 環境で提供されるさまざまな機能も利用できます。Visual Studio 2005 のツールの詳細については、『Platform Builder ユーザーズ ガイド』を参照してください。

Windows Embedded CE 6.0 Platform Builder Service Pack 1 は、旧バージョンに比べ、次の主要エリアが更新されています。

目次

システム要件

Windows Embedded CE 6.0 Platform Builder Service Pack 1 を使用するには、次の要件を満たす必要があります。

  • 600 Hz Pentium III 以降のプロセッサ、1 GHz 推奨。
  • Microsoft Windows 2000 Professional Service Pack 4 以降、Windows XP Professional Service Pack 2 以降、または Windows Vista。
  • 512 MB RAM、1 GB RAM 推奨。
  • ツールを含む単独マイクロプロセッサ インストールの場合は 4 GB のハードディスク空き領域。マイクロプロセッサを追加するごとに 1.7 GB のハードディスク空き領域が必要。製品全体をインストールする場合は、約 18 GB が必要。
  • 1024 x 768 の画面解像度、256 色。
  • Microsoft マウスまたは同等のポインティング デバイスとキーボード。
  • デバッグ サポート用のシリアル ポートまたはイーサネット カード (LAN ハブを推奨)。
  • DVD-ROM デバイス。

Windows Embedded CE 6.0 Platform Builder Service Pack 1 のインストール

Windows Embedded CE 6.0 Platform Builder Service Pack 1 をインストールする前に、次のタスクを完了させておく必要があります。

  • 管理者特権があることを確認します。
  • Windows Embedded CE 6.0 Platform Builder Service Pack 1 のプレリリース版をすべてアンインストールします。
Windows Embedded CE 6.0 Platform Builder Service Pack 1 のインストール方法
  1. Windows の管理者特権で、開発用ワークステーションにログオンします。

    メモ :
    インストールの完了後にツールを実行する場合は、Windows 管理者特権でログオンする必要はありません。
  2. Windows Embedded CE 6.0 Platform Builder Service Pack 1 の .msi ファイルをダウンロードし、実行します。

  3. [ようこそ] ダイアログ ボックスが表示されたら、[インストール] をクリックして画面の指示に従います。

インストールは、システム仕様に応じて通常 5 分から 10 分かかります。

Windows Embedded CE 6.0 Platform Builder Service Pack 1 のアンインストール

Windows Embedded CE 6.0 Platform Builder Service Pack 1 をアンインストールするには、次の手順を実行します。

Windows Embedded CE 6.0 Platform Builder Service Pack 1 のアンインストール方法
  1. 管理者として Windows にログオンします。

  2. [プログラムの追加と削除] を使用し、Windows Embedded CE 6.0 Platform Builder Service Pack 1 を削除します。

  3. CE 6.0 システムをシステムに残しておく場合は、[プログラムの追加と削除] を使用して CE 6.0 を修復します。

    -または-

    CE 6.0 システムをシステムから削除する場合は、[プログラムの追加と削除] を使用して CE 6.0 を削除します。

Windows Embedded CE 6.0 のインストールに関する問題

MMC の機能を有効にし、RDP またはターミナル サービスを使用して Windows Embedded CE 6.0 をインストールする

システム管理者は、リモート デスクトップ プロトコル (RDP) またはターミナル サービス セッションでプログラムをインストールすることはできません。

ただし、次の手順を実行すると、Microsoft 管理コンソール (MMC) のグループ ポリシー設定でこの機能を有効にすることができます。

MMC のポリシー設定を変更し、RDP で Windows Embedded CE 6.0 インストールを有効にする方法
  1. [スタート] をクリックし、[実行] を選択します。

  2. gpedit.msc」と入力し、[OK] をクリックします。

    [グループ ポリシー] ウィンドウが開きます。

  3. コンピュータの構成、管理用テンプレート、および Windows コンポーネントの各ノードを展開します。

  4. [Windows インストーラ] を選択します。

  5. 右ペインで、[管理者がターミナル サービス セッションからインストールできるようにする] をダブルクリックします。

    [プロパティ] ダイアログ ボックスが開きます。

  6. [設定] タブをクリックし、[有効] を選択します。

  7. [OK] をクリックします。

このコンピュータを使用し、ターミナル サービスからログオンし、Windows Embedded CE 6.0 などのプログラムをインストールできます。

Windows Embedded CE 6.0 のインストール時に、Visual Studio ヘルプが使用できない

Platform Builder は、ヘルプ コンポーネントを Visual Studio と共有しています。したがって、Platform Builder のセットアップ中に Visual Studio ヘルプが正常に動作しないことがあります。Platform Builder のインストール中は、Visual Studio ヘルプを使用しないでください。

異なるアカウントでヘルプを起動すると、[セットアップ] ダイアログ ボックスが表示される

あるアカウントで Platform Builder をインストールし、別のアカウントで Platform Builder を使用すると、[Help 2.0 Setup] (ヘルプ 2.0 のセットアップ) ダイアログ ボックスが表示されることがあります。

他のアプリケーションを開いているときに、[インストールの準備中] ダイアログ ボックスが表示される

Platform Builder のインストール後、Windows Embedded CE、Visual Studio ヘルプ ドキュメント ビューアを開いたり、Microsoft Office アプリケーションを起動したりすると、[インストールの準備中] ダイアログ ボックスが表示されることがあります。このダイアログ ボックスは、オンデマンドでのインストールによって表示されるものです。インストーラが終了するまで待つ必要があります。

これ以降、これらのアプリケーションを起動するたびにこのダイアログ ボックスが表示される場合は、次の手順を実行します。

インストールを完了させるため、レジストリ設定を編集する方法
  1. 拡張子が .reg のテキスト ファイルを作成します。

  2. 次の行をファイルに追加します。

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\TypeLib\{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.2]
    @="Microsoft Office 10.0 Object Library"
    "PrimaryInteropAssemblyName"="Office, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    [HKEY_CLASSES_ROOT\TypeLib\{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.2\0]
    [HKEY_CLASSES_ROOT\TypeLib\{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.2\0\win32]
    @="C:\\Program Files\\Common Files\\Microsoft Shared\\office10\\mso.dll"
    [HKEY_CLASSES_ROOT\TypeLib\{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.2\FLAGS]
    @="0"
    [HKEY_CLASSES_ROOT\TypeLib\{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.2\HELPDIR]
    @=""
  3. ファイルを保存して閉じます。

  4. ファイルをダブルクリックし、[はい] をクリックします。

Windows CE 5.0 をアンインストールすると、別インストールされる Windows Embedded CE 6.0 で必要となるレジストリ キーが削除される

開発者用ワークステーションに、Windows CE 5.0 および Windows Embedded CE 6.0 Platform Builder Service Pack 1 が別インストールされている場合、Windows CE 5.0 をアンインストールすると、HKLM\Software\CoreCon\1\1\InstallDir の下にあるレジストリ キーが削除されます。Windows Embedded CE 6.0 Platform Builder Service Pack 1 を正常に動作させるには、これらのレジストリ キーが必要になります。

この問題を解決するには、セットアップ ウィザードで Windows Embedded CE 6.0 Platform Builder Service Pack 1 のインストールを修復します。

Windows Embedded CE 6.0 Platform Builder Service Pack 1 の新機能

Windows Embedded CE 6.0 Platform Builder Service Pack 1 は、以下の領域において新機能を提供します。

Remote Tools Framework

Remote Tools Framework は、Windows Embedded CE ベースのデバイスを診断、テストするツールを開発するためのフレームワークです。プラグインの開発を可能にするため、デスクトップ側の .NET クラス ライブラリ (DLL) と一連のデバイス側ライブラリ (ネイティブ DLL と .NET クラス ライブラリ) を組み合わせているほか、プラグインをロードするシェルもあります。

ハードウェアによるデバッグ

Platform Builder のハードウェアによるデバッグ機能は OS を完全に認識でき、デバイス エミュレータをサポートするために改良された exDI2 サンプルも実装されています。

ドキュメントの更新

Remote Tools Framework のドキュメントに加え、CeDebugX のドキュメントなど、テスト キットとデバッグに関する新情報がリリース ノートに追加されました。以下のセクションを参照してください。

Windows Embedded CE 6.0 Platform Builder Service Pack 1 の著作権情報

このドキュメントに記載されている情報 (URL などのインターネット Web サイトに関する情報を含む) は、将来予告なしに変更することがあります。別途記載されていない場合、このソフトウェアおよび関連するドキュメントで使用している会社、組織、製品、ドメイン名、電子メール アドレス、ロゴ、人物、場所、出来事などの名称は架空のものです。実在する商品名、団体名、個人名などとは一切関係ありません。お客様ご自身の責任において、適用されるすべての著作権関連法規に従ったご使用を願います。このドキュメントのいかなる部分も、米国 Microsoft Corporation の書面による許諾を受けることなく、その目的を問わず、どのような形態であっても、複製または譲渡することは禁じられています。ここでいう形態とは、複写や記録など、電子的な、または物理的なすべての手段を含みます。ただしこれは、著作権法上のお客様の権利を制限するものではありません。

マイクロソフトは、このドキュメントに記載されている内容に関し、特許、特許申請、商標、著作権、またはその他の無体財産権を有する場合があります。別途マイクロソフトのライセンス契約上に明示の規定のない限り、このドキュメントはこれらの特許、商標、著作権、またはその他の無体財産権に関する権利をお客様に許諾するものではありません。

© 2007 Microsoft Corporation. All rights reserved.

Microsoft、MS-DOS、Windows、Windows NT、Windows Server、Windows Vista、Active Desktop、Active Directory、ActiveSync、ActiveX、ClearType、IntelliMouse、IntelliSense、JScript、MSDN、MSN、Outlook、PowerPoint、Visual Basic、Visual C#、Visual C++、Visual InterDev、Visual Studio、Win32、および Windows Media は、米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。

このソフトウェアの一部は NCSA Mosaic をベースにしています。NCSA Mosaic は、イリノイ大学アーバン シャンペーン校の National Center for Supercomputing Applications によって開発されました。Spyglass Inc. とのライセンス契約に基づいて配布されています。

RSA Data Security, Inc. からライセンス付与されたセキュリティ ソフトウェアが含まれます。

その他すべての商標は、各社が所有しています。

ライセンス条項

Windows Embedded CE 6.0 Platform Builder Service Pack 1 および共有ソースのライセンス条項は、ディレクトリ C:\Program Files\Microsoft Platform Builder\6.00 からアクセスできます。

テクニカル サポートとコミュニティ

このリリースで利用可能なサポートおよびコミュニティのオプションの詳細については、Windows Embedded コミュニティを参照してください。

Windows Embedded CE 6.0 Platform Builder Service Pack 1 に含まれない Windows CE 5.0 の機能

Windows Embedded CE 6.0 Platform Builder Service Pack 1 に含まれない Windows CE 5.0 の機能については、OEM ドキュメントの「Windows Embedded CE 6.0 に含まれない Windows CE 5.0 の機能」のトピックを参照してください。

Windows Embedded CE 6.0 Platform Builder Service Pack 1 に関する既知の問題

Windows Vista のブートローダ

Windows Vista で他のすべてのプラットフォームのブートローダを正常に動作させるには、ブートローダを再ビルドする必要があります。これは、CEPC およびデバイス エミュレータのブートローダを除く、すべてのブートローダ (Eboot.*) に該当します。

ブートローダが再ビルドされると、更新されたブートローダでデバイスを再フラッシュする必要があります。更新されたブートローダは、通常、Eboot.bin または Eboot.nb0 と名付けられたフラット リリース ディレクトリにあります。

CEPC ブートローダは再ビルドする必要はありません。ただし、再フラッシュする必要はあります。

デバイス エミュレータのイメージの起動

Windows XP で Windows Embedded CE 6.0 以前のデバイス エミュレータ イメージを起動するには、次の手順を実行します。

  1. コマンド プロンプトで、ディレクトリを <Windows Embedded CE 6.0 のインストール ディレクトリ>/corecon/bin/ に変更します。
  2. Regsvr32 download_DEmulator.dll を実行します。
  3. こちらのマイクロソフト Web サイトから、Microsoft デバイス エミュレータ用の仮想マシン ネットワーク ドライバをインストールします。

Windows Vista で Windows Embedded CE 6.0 以前のデバイス エミュレータ イメージを起動するには、次の手順を実行します。

  1. 管理者としてコマンド プロンプトを開きます。
  2. ディレクトリを <Windows Embedded CE 6.0 のインストール ディレクトリ>/corecon/bin/ に変更します。
  3. Regsvr32 download_DEmulator.dll を実行します。
  4. こちらのマイクロソフト Web サイトからドライバ (Netsvwrap.msi) をダウンロードし、ローカル ドライブに保存します。
  5. 管理者としてコマンド プロンプトを開きます。
  6. msiexec/i netsvwrap.msi を実行します。

64 ビット システムでサポートされていない Platform Builder

Platform Builder および関連するデスクトップ ツールは、64 ビット版 Windows XP および 64 ビット版 Windows Vista を含め、デスクトップ用の 64 ビット版 Windows オペレーティング システムには対応していません。

Microsoft Smart Devices Remote Tools Framework および Windows Embedded CE 6.0 Platform Builder Service Pack 1 を同じコンピュータにインストールできない

Windows Embedded CE 6.0 Platform Builder Service Pack 1 をインストールする前に、[プログラムの追加と削除] を使用して Microsoft Smart Devices Remote Tools Framework をアンインストールします。Microsoft Smart Devices Remote Tools Framework を削除せずに Windows Embedded CE 6.0 Platform Builder Service Pack 1 をインストールするか、Windows Embedded CE 6.0 Platform Builder Service Pack 1 をインストールした後に Microsoft Smart Devices Remote Tools Framework をインストールすると、Windows Embedded CE 6.0 Platform Builder Service Pack 1 に含まれる Remote Tools Framework が正常に動作しないことがあります。この問題を解決するには、[プログラムの追加と削除] を使用して Microsoft Smart Devices Remote Tools Framework をアンインストールし、次に [プログラムの追加と削除] を使用して Windows Embedded CE 6.0 Platform Builder Service Pack 1 のインストールを修復します。

Remote Tools が読み取り専用の共有に格納されているデバイス イメージに接続できない

Platform Builder for CE 6.0 では、読み取り専用ディレクトリ (ネットワークなど) に格納されているデバイス イメージをロードすると、リモート ツールを接続できなくなります。これは、デバイス側バイナリを、そのパスにコピーする必要があるためです。

代わりに、KITL ブートストラップ サーバーの特殊モードを使用できます。デバイス イメージが読み取り専用フォルダに格納されている場合にリモート ツール接続を構成するには、次の手順を実行します。

  1. Platform Builder for Windows Embedded CE 6.0 で、[ファイル] メニューの [開く] を選択し、[プロジェクト] を選択します。
  2. 読み取り専用フォルダから *.bin を直接開きます。
  3. デバイスを接続し、デバイスが完全に起動するまで待ちます。
  4. リモート ツールで、[接続] メニューから [Windows CE Platform Manager の構成(P)] を選択し、[デバイス プロパティ] ダイアログ ボックスを開きます。
  5. [Windows CE Default Platform] (Windows CE の既定のプラットフォーム) を選択し、次に [既定のデバイス] を選択します。
  6. [プロパティ] をクリックします。
  7. 起動サーバーとして、KITL ブートストラップ サーバーが使用されていることを確認します。
  8. [構成] をクリックします。
  9. [CESHX 構成設定] ダイアログ ボックスで [代替フォルダ] を選択し、ローカル パスを入力します (c:\temp\KITLBootstrap など)。
  10. [OK] をクリックします。
  11. [デバイス プロパティ] ダイアログ ボックスで [テスト] をクリックし、接続が正しく行われることを確認します。
  12. 成功した場合は [OK] をクリックし、リモート ツールの再接続を試行します。接続が失敗した場合は、指定されたフォルダ パスが十分な空き領域のあるドライブにあることと、そのフォルダに対する書き込みアクセス権があることを確認します。

リモート コール プロファイラが、アプリケーション終了時にデータ収集を終了しない

リモート コール プロファイラの [起動] を選択し、[終了時に収集を終了] を選択すると、リモート コール プロファイラは指定のアプリケーションが終了してもデータの収集を停止しません。アプリケーションの終了を確認したうえで、[停止] をクリックしてデータ収集を終了する必要があります。

接続がキャンセルされると、リモート カーネル トラッカ プロセスを終了できない

Platform Builder がどのデバイスにも接続されていない状態でリモート カーネル トラッカを開始して [既定のデバイス] を選択し、リモート カーネル トラッカを閉じると、Kerneltracker.exe がバックグラウンドで実行されたままになります。

カーネル トラッカ プロセスを閉じるには、タスク マネージャを開き、Kerneltracker.exe プロセスを選択して [プロセスの終了] をクリックします。

Remote Tools Framework のプラグインをビルド中にエラーが発生する

Remote Tools Framework プラグインのビルド中に、次のビルド時エラー メッセージが表示されることがあります。

"Projects targeting .NET Compact Framework 1.0 require version 1.1 of the .NET Framework, which is not detected on this machine." (.NET Compact Framework 1.0 を対象にするプロジェクトには .NET Framework Version 1.1 が必要ですが、このコンピュータには見つかりません。)

Visual Studio 2005 (オリジナル リリース) があり、このメッセージが表示される場合は、Remote Tools Framework プラグインのビルドに必要となる適切な .NET Compact Framework 1.0 のサポートを含め、.NET Framework 1.1 がインストールされていることを確認します。必要なバージョンをダウンロードするには、こちらのマイクロソフト Web サイト、またはこちらのマイクロソフト Web サイトを参照してください。

[探す場所] ボックスで [現在のプロジェクト] が選択されていると、Visual Studio 2005 の [検索と置換] を使用した検索が失敗する

[検索と置換] ダイアログ ボックスを使用した検索が失敗すると、通常、"The operation could not be completed. No such interface supported." (操作を完了できませんでした。インターフェイスがサポートされていません。) というメッセージが表示されます。多くの場合、その理由は [探す場所] ボックスが [現在のプロジェクト] に設定されているためです。この設定は、Windows Embedded CE のランタイム イメージ (*.bin、*.nb0、*.dio、*.lst) でサポートされていません。

[探す場所] ボックスを、適宜 [開いているドキュメント]、[現在のドキュメント]、または [現在のウィンドウ] に設定します。

ノードが選択されていなければ、Remote Tools シェルおよびプラグイン エクスプローラのコンテキスト メニューが表示されない

マウスを右クリックしてノードのコンテキスト メニューを表示する前に、プラグイン エクスプローラか、Remote Tools シェルのデバイス ツリー ビューまたはプラグイン ツリー ビューで、ノードを選択する必要があります。ノードを先に選択せずに右クリックしてコンテキスト メニューを表示しようとすると、予期したコンテキストが表示されないことがあります。

この問題の解決方法は、今後のリリースで検討します。

モード変更の直後に [ターゲット] メニューをクリックすると、このメニューが保持される

Platform Builder で、他のメニューをクリック、またはデスクトップ上の他の部分をクリックしても、しばらくの間は [ターゲット] メニューが表示されたままになることがあります。この問題が発生した場合は、[デバッグ] メニューなどの他のメニューを表示できなくなり、[ターゲット] メニューが消えるまで 15 分ほどかかることがあります。

Platform Manager は、リモート ファイル ビューアを使用してデスクトップからデバイスに DOS 実行可能ファイルをコピーできない

リモート ファイル ビューア (Platform Builder 6.0 の) を使用し、デスクトップからデバイスに実行可能ファイル (*.exe) をエクスポートしようとした場合に、実行可能ファイルがターゲット CPU 向けにビルドされていなければ (たとえば、DOS.exe を ARMV4 デバイスにコピーする場合など)、エクスポート操作は失敗し、エラー メッセージも表示されません。これは、Platform Manager の既知の問題です。この問題は、Windows Embedded CE 6.0 Platform Builder Service Pack 1 でも修正されていません。

回避策として、リモート ファイル ビューアの Visual Studio 2005 バージョンを使用します。[スタート] > [すべてのプログラム] > [Microsoft Visual Studio 2005] > [Visual Studio Remote Tools] で起動できます。このバージョンのリモート ファイル ビューアはコア接続を使用するため、この問題は発生しません。

Remote Tools Framework のデバイス側の管理コードには、Windows Embedded CE 6.0 の完全な .NET Compact Framework が必要となる

デバイス側マネージ コードを使用する Remote Tools Framework プラグインを実行するには、デバイスに .NET Compact Framework のすべてのコンポーネントがインストールされている必要があります (Windows CE 5.0 の SYSGEN_DOTNET または Windows Embedded CE 6.0 の SYSGEN_DOTNETV2)。ヘッドレス フレームワークを備えた Windows Embedded CE 6.0 (SYSGEN_DOTNETV2_HEADLESS) では不十分です。デバイス側マネージ コードを持つ Remote Tools Framwork プラグインは、ヘッドレス .NET Compact Framework コンポーネントしかない Windows Embedded CE 6.0 デバイスでは実行できません。

Windows Embedded CE 5.0 または Platform Builder for Windows Mobile Version 5.0 および Platform Builder 6.0 がある場合、旧バージョンで x86 エミュレータを使用できない

Windows Embedded CE 6.0 Platform Builder Service Pack 1 を使用してインストールされた x86 エミュレータは、旧バージョンの Windows Embedded CE または Windows Mobile では動作しません。

この問題を回避するには、Emulatortransport_500.dll を %ProgramFiles%\common files\microsoft shared\corecon\5.01\bin にインストールします。

Windows CE 5.0 を使用している場合は、%ProgramFiles%\windows ce platform builder\5.00\corecon\bin からコピーします。

Windows Mobile Version 5.0 を使用している場合は、%ProgramFiles%\Platform builder for windows mobile\5.00\corecon\bin からコピーします。

Remote Tools Framework プラグインの切断と再接続の間隔が短すぎると、デバイスがハングするおそれがある

デバイスから Remote Tools Framework プラグインを切断した直後に、同じプラグインを再接続しようとすると、失敗するおそれがあります。これは物理デバイスで発生する可能性が高く、コア接続の内部的な問題であると思われます。この問題を回避するには、Remote Tools Framework プラグインを切断後、再接続するまでに数秒待ちます。

CETK は、Windows Vista の IP セキュリティで保護されたソケット上で接続できない

CETK は、次の状況下ではネットワークに接続できません。

  • コンピュータが Windows Vista を実行している。
  • コンピュータが、ローカルで上書きできない IP セキュリティ ポリシーを持つドメインに参加している。
  • ドメインに "Accept no communication unless it is IP security protected. (IP セキュリティで保護されていない通信は許可しない。)" と記された IP セキュリティ ポリシーがある。
  • ドメインに、"発信接続で IP セキュリティを試行し、ピアが IP セキュリティを使用できない場合はクリアする。" と記されたルールがある。

リモート ツールの OS 依存関係

リモート ツールがデバイスに接続すると、デバイス上でコードが実行されます。デバイス側コードを正常に実行するには、ターゲット デバイスのランタイム イメージにいくつかの機能が含まれる必要があります。ランタイム イメージがベースにするオペレーティング システム (OS) 設計にいずれかの機能が欠けている場合、リモート ツールはデバイスに接続できません。

次の表に、Platform Builder に含まれるリモート ツールをサポートするために、ランタイム イメージに含まれるべき機能を示します。

リモート ツール 必要な OS 依存関係

ファイル ビューア

なし

ヒープ ウォーカ

なし

プロセス ビューア

なし

レジストリ エディタ

なし

システム情報

なし

パフォーマンス モニタ

なし

カーネル トラッカ

なし

ズーム

最小限の GWES 構成 : SYSGEN_MINGWES および最小限の GDI 構成 : SYSGEN_MINGDI

スパイ

最小限の GWES 構成 : SYSGEN_MINGWES および最小限の GDI 構成 : SYSGEN_MINGDI

コール プロファイラ

各国語サポート (NLS)SYSGEN_CORELOC

-または-

英語 (米国) 各国語サポートのみ : SYSGEN_LOCUSA および標準の文字列関数 - ASCII (corestra): SYSGEN_CORESTRA

ARM アプリケーションのデバッグ中に、ASM 関数のステップを実行できない

ASM ファイルがコンパイルされた ARM アプリケーションをデバッグ中は、ASM 関数のステップを実行できません。ARM アセンブラは、ソースレベルのステップ実行に対してデバッグ情報を生成しません。

Platform Builder 4.x がインストールされているシステムに Platform Builder をインストールすると、デバッガ接続設定が変更され、デバッガが接続されない

Windows CE .NET 4.0、Windows CE .NET 4.1、または Windows NE .NET 4.2 がインストールされているマシンに、Windows Embedded CE 6.0 Platform Builder Service Pack 1 をインストールすると、リモート ツールの接続で問題が生じることがあります。

  • Platform Builder for Windows Embedded CE 6.0 のリモート ツールは、追加の起動サービスをインストールし (KITL ブートストラップ サービス)、これが Windows Embedded CE Platform Manager の接続オプションの既定の起動サーバーとして設定されることがあります。KITL ブートストラップ サーバー以外の起動サーバーを使用してください。Platform Manager の現在の接続オプションを確認するには、次の手順を実行します。
    1. Platform Builder の [ツール] メニュー、または Visual Studio 2005/Platform Builder for CE 6.0 で任意のリモート ツールを起動し、[ターゲット] メニューで [リモート ツール] を選択します。
    2. [接続] を選択し、[Windows CE Platform Manager の構成] を選択します。
    3. 既定のデバイスを選択し、[プロパティ] をクリックします。
  • バイナリ配布要件に準拠するため、Platform Builder 4.x および 5.0 でアクセス可能なリモート パフォーマンス モニタおよびリモート コール プロファイラ リモート ツールは、Windows Embedded CE 6.0 Platform Builder Service Pack 1 のインストール中に削除されます。したがって、これら 2 つのリモート ツールは実行できません。この問題は、次のように回避できます。
    1. 古い Windows Embedded CE インストールを修復します (4.0 の次に 5.0 など、順番に行うこと)。
    2. C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\bin および C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\bin\wce420 フォルダの内容を、コンピュータにバックアップします。
    3. Windows CE 6.0 をインストール (または修復) します。
    4. C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\bin および C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\bin\wce420 の該当するフォルダに、CePerfMon.exe および Msic.exe をコピーします。

SysInfo リモート ツールで .csi ファイルを開くと、UI が最新表示されない

システム情報リモート ツールを実行し、以前に取り込まれたいくつかのシステム情報が表示された状態で .csi ファイルを開くと、UI はその .csi ファイルの内容を反映しません。これは既知の問題であり、今後のリリースで対応します。

回避策としては、システム情報リモート ツールを終了し、再実行します (この時点で、デバイスを接続する必要はありません)。次に、[ファイル] メニューから .csi ファイルを開きます。

メモリ不足の状態でズームすると、エラー表示される

ズームイン リモート ツールを大きいデバイス イメージで実行すると、メモリ不足により、エラーが報告されることがあります。大きいデバイス イメージでズームイン リモート ツールを使用すると、"Connection to the device was lost." (デバイスへの接続が切断されました。) というエラー メッセージが表示されることがあります。

Platform Builder でズームインを実行している場合は、次のようなメッセージがデバッグ出力ウィンドウに表示されることもあります。

"Unable to create dib section...errorcode = 8" (dib セクションを作成できません ... errorcode = 8)

このエラーは、ビットマップの DIB ビット値を保持するため、メモリ バッファを割り当てているときに発生します。ただし、メモリ不足の状態はこれだけに限らないこともあります。このタイプのエラーは、ズームイン (Cezcli.exe) のデバイス側コードがメモリ不足になったことを示します。

この問題は、次のように回避できます。

  • デバイスで実行中の他のアプリケーションを終了し、メモリを解放する。
  • OS 設計を変更できる場合は、ビットマップ データに必要なバッファを割り当てるためにデバイスで十分なメモリを確保できるよう、メモリを解放します。

カーネル トラッカのメモリ使用量が増加する

カーネル トラッカ リモート ツールが長時間にわたって実行されると、デスクトップ コンピュータで使用されるメモリ量が非常に多くなることがあります。カーネル トラッカを長時間にわたって使用せずに制限されたバッファ モードで実行するか、カーネル トラッカを終了して再起動し、必要な場合にのみイベントを表示するようにします。

別のアプリケーションからプログラムを使用してレジストリを修正すると、レジストリ エディタ リモート ツールが完全に更新されない

デバイスで実行中の他のアプリケーションからプログラムを使用してレジストリ キーを修正しているときに、レジストリ エディタ リモート ツールを使用すると、選択中のノードが上位レベル ノード (HKEY_LOCAL_MACHINE など) でなければ、レジストリ エディタのビューを更新しても (F5 キー)、他のアプリケーションによって加えられた修正は反映されません。代わりに、ビューを更新する前に、上位レベル ノードのいずれかを選択します。ビューは、レジストリの最新状態で更新されます。

Platform Manager SDK のサンプルの中には、プロジェクトとコードの更新を必要とするものがある

次の Platform Manager のサンプル SDK プロジェクトは、インストールしただけでは正常にビルドされません。ただし、Visual Studio 2005 で簡単なステップを実行すると、修正することができます。

  • C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\Hello\Hello.vcw
  • C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\KTSubSample\KTSubSample.dsp
  • C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\PubSub\Publisher\hellopublisher.vcp
  • C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\PubSub\Subscriber\hellosubscriber.dsp
  • C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\PubSub\Test\PubSubTest.vcproj
  • C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\timeviewer\desktop\timeviewer.dsp
  • C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\timeviewer\device\timeviewerce.vcp

Visual Studio 2005 でサンプルをビルドするには、次の手順を実行します。

Hello.vcw

  1. Visual Studio 2005 で C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\Hello\Hello.vcw を開き、Visual Studio 2005 でプロジェクトを変換します。
  2. Hello.sln を、VCW ファイルと同じパスに保存します。CallCap\CallCap.vcproj および FastCap\FastCap.vcproj の 2 つの新しいファイルがあります。
  3. C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\Hello\Fastcap\Fastcap.cpp を開き、DoMultiThread の最初の for ループから int i 宣言を前の行に移動します。
  4. C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\Hello\Callcap\Callcap.cpp を開き、DoMultiThread の最初の for ループから int i 宣言を前の行に移動します。
  • Hello.sln をビルドします。デバッグおよびリリース構成が、エラーなくビルドされるはずです。

KTSubSample.dsp

  1. C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\KTSubSample\KTSubSample.dsp を開き、Visual Studio 2005 でプロジェクトを変換します。
  2. KTSubSample.sln を、DSP ファイルと同じパスに保存します。
  3. コマンド プロンプトを開き、ディレクトリを C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\include に変更します。
  4. Visual Studio 2005 フォルダが %PATH% 環境変数にあると想定し、MIDL CEPUBSUB.IDL を実行し、次に MIDL KTSUB.IDL を実行します。
  5. KTSubSample.cpp を開き、次の行をコメント アウトします。
    Enable3dControlsStatic();// MFC に静的にリンクする場合に呼び出します
  6. KTSubSample.sln をビルドします。デバッグおよびリリース構成が、エラーなくビルドされるはずです。

Hellopublisher.vcp

  1. C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\PubSub\Publisher\Hellopublisher.vcp を開き、Visual Studio 2005 でプロジェクトを変換します。
  2. Hellopublisher.sln を、VCP ファイルと同じパスに保存します。
  3. [プロジェクト] メニューで [プロパティ] をクリックします。
  4. [構成プロパティ]、[リンカ] の順にクリックし、次に [全般プロパティ] をクリックします。
  5. 次の項目を変更します。
    • 出力ファイル :..\..\bin\Target\armv4\HelloPublisher.dll から ..\..\bin\Target\armv4i\HelloPublisher.dll
    • 追加のライブラリ ディレクトリ :..\..\..\target\armv4 から ..\..\..\target\armv4i
    この手順を、必ずデバッグおよびリリース構成の両方で実行してください。この手順は、Visual Studio 2005 構成にインストールされている他のソリューション プラットフォーム (またはデバイス SDK) でも実行しなければならないことがあります。その場合は、ライブラリ パスのプロセッサ固有部分が異なることがあります。このライブラリは、更新された Visual Studio for Devices コンパイラまたはリンカでコンパイルされています。これらのコンパイラやリンカを入手するには、近日リリース予定の Visual Studio 2005 サービス パックが必要になります。Visual Studio 2005 の最新のサービス パックについては、Microsoft ダウンロード センターをご覧ください。Visual Studio 2005 (オリジナル リリース) を使用している場合は、次のリンカ エラーが発生します。"Error LNK2001:unresolved external symbol __GSHandlerCheck". (エラー LNK2001: 未解決の外部シンボル __ GSHandlerCheck)これらの変更を加えると、リンクはエラーなく作成されます。ただし、デバッグ構成のビルド中に、次の警告メッセージが表示されることがあります。
    • RComHelperCE.lib(MajRegistryhelper.obj) :"Warning LNK4204:C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\PubSub\Publisher\Pocket PC 2003 (ARMV4)\Debug\vc80.pdb is missing debugging information for referencing module; linking object as if no debug info." (警告 LNK4204: C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\PubSub\Publisher\Pocket PC 2003 (ARMV4)\Debug\vc80.pdb に参照モジュールのデバッグ情報がありません。デバッグ情報がない状態でオブジェクトがリンクされます。)
    • LIBCMTD.lib(gshandler.obj) :"Warning LNK4099:PDB Libbmtd.pdb was not found with C:\Program Files\Microsoft Visual Studio 8\VC\ce\lib\ARMV4\LIBCMTD.lib or at c:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\PubSub\Publisher\Pocket PC 2003 (ARMV4)\Debug\libbmtd.pdb; linking object as if no debug info." (警告 LNK4204: C:\Program Files\Microsoft Visual Studio 8\VC\ce\lib\ARMV4\LIBCMTD.lib または c:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\PubSub\Publisher\Pocket PC 2003 (ARMV4)\Debug\libbmtd.pdb に PDB Libbmtd.pdb がありません。デバッグ情報がない状態でオブジェクトがリンクされます。)
    リンクされているライブラリはリリース ビルド ライブラリなので、これらはどちらも無視できます。これらを使用してデバッグできません。
  6. Hellopublisher.sln をビルドします。デバッグおよびリリース構成は、エラーなくビルドされるはずです (Visual Studio 2005 のサービス パックを使用)。

Hellosubscriber.dsp

  1. Open C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\PubSub\Subscriber\Hellosubscriber.dsp を開き、Visual Studio 2005 でプロジェクトを変換します。
  2. Hellosubscriber.sln を、DSP ファイルと同じパスに保存します。
  3. HellpSub.cpp を開きます。
  4. CHelloSub::Open で、次の行を
    m_file = ::CreateFile(OLE2T(const_cast<unsigned short *>(filename)),GENERIC_WRITE,0,NULL,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    次のように変更します。
    #ifdef UNICODE
    m_file = ::CreateFile(T2CW_EX_DEF(OLE2CT(filename)),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);
    #else
    m_file = ::CreateFile(OLE2T(filename),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);
    #endif
  5. Stdafx.cpp を開き、#include <statreg.cpp> および #include <atlimpl.cpp> をコメント アウトします。
  6. リリース構成のいずれかをビルドしている場合は (Release MinDependency、Release MinSize、Unicode Release MinDependency、Unicode Release MinSize など)、Atlmincrt.lib を無視するためのリンカ オプションを設定する必要があります。次の手順を実行します。
    1. ソリューション エクスプローラで HelloSubscriber (プロジェクト) ノードを選択し、右クリックします。
    2. [プロパティ] を選択します。
    3. [構成] が次のいずれかのリリース構成に設定されていることを確認します。
    4. [構成プロパティ]、[リンカ] の順にクリックし、次に [入力] を選択します。
    5. [特定のライブラリの無視] を [Atlmincrt.lib] に設定します。
    デバッグ構成に対しては、この手順を実行する必要はありません。
  7. コマンド プロンプトを開き、ディレクトリを C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\include に変更します。
  8. Visual Studio 2005 フォルダが %PATH% 環境変数にあると想定し、MIDL CEPUBSUB.IDL を実行します。
  9. Hellosubscriber.sln をビルドします。デバッグおよびリリース構成が、エラーなくビルドされるはずです。

PubSubTest.vcproj

  1. C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\PubSub\Test\PubSubTest.vcproj を開き、Visual Studio 2005 でプロジェクトを変換します。
  2. PubSubTest.sln を .vcproj ファイルを同じパスに保存します。
  3. [プロジェクト] メニューの [プロパティ] を選択します。
  4. [構成プロパティ]、[C/C++] の順にクリックし、次に [全般] を選択します。
  5. [追加のインクルード ディレクトリ] を \..\..\platman\include から \..\..\include に変更します。
  6. [構成プロパティ]、[リンカ] の順にクリックし、次に [入力] を選択します。
  7. [追加の依存関係] を Rts.lib から \..\..\lib\dsktop\rts.lib に変更します。この手順を、必ずデバッグおよびリリース構成の両方で実行してください。
  8. まだ行っていない場合は、コマンド プロンプトを開き、ディレクトリを C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\include に変更します。
  9. MIDL CEMGR.IDL を実行し、次に MIDL CEMGRUI.IDL を実行します。
  10. PubSubTest.sln をビルドします。デバッグおよびリリース構成が、エラーなくビルドされるはずです。

Timeviewer.dsp

  1. C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\timeviewer\desktop\Timeviewer.dsp を開き、Visual Studio 2005 でプロジェクトを変換します。
  2. Timeviewer.sln を DSP ファイルと同じパスに保存します。
  3. TimeViewer.cpp を開きます。
  4. 次に示すように、ConnectedToDevice から呼び出された文字列関数のいくつかを、安全なバージョンを使用するよう修正します (関数名に _s を使用)。
    • 次の行を
         stRet = wcstombs(szDeviceName, pszName, sizeof szDeviceName);
      次のように変更します。
         size_t _PtNumOfCharConverted;
      stRet = wcstombs_s(&_PtNumOfCharConverted, szDeviceName, pszName, sizeof szDeviceName);
    • 次の行を
         strcpy(szTitle, "TimeViewer : ");
      次のように変更します。
         strcpy_s(szTitle, "TimeViewer : ");
    • 次の行を
         strcat(szTitle, szDeviceName);
      次のように変更します。
         strcat_s(szTitle, szDeviceName);
    • 次の行を
         wcscpy(wszDeviceExe, L"\\Windows\\TimeViewerCE.exe");
      次のように変更します。
         wcscpy_s(wszDeviceExe, L"\\Windows\\TimeViewerCE.exe");
  5. Timeviewer.sln をビルドします。デバッグおよびリリース構成が、エラーなくビルドされるはずです。

Timeviewerce.vcp

  1. C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce600\samples\timeviewer\device\Timeviewerce.vcp を開き、Visual Studio 2005 でプロジェクトを変換します。
  2. Timeviewerce.sln を、VCP ファイルと同じパスに保存します。
  3. Timeviewerce.sln をビルドします。デバッグおよびリリース構成が、エラーなくビルドされるはずです。

リモート スパイ ウィンドウのメッセージ表示機能が無効化された

OS セキュリティ ポリシーにより、スパイ リモート ツールの Windows Embedded CE 6.0 Platform Builder Service Pack 1 のウィンドウ メッセージをスパイする機能が無効になりました。[スパイ] を起動し、デスクトップ ウィンドウの子ウィンドウのメッセージをキャプチャしようとすると (handle != 0x00000000)、メッセージ ウィンドウがクライアントで開きます。Visual Studio 2005/Platform Builder Debug Output Window で、次のメッセージが表示されます。

"119985 PID:5b2002e TID:5b4002e ######### CeSpy - Message intercept and display not supported in this OS #########" (119985 PID:5b2002e TID:5b4002e ######### CeSpy - メッセージ傍受および表示は、この OS ではサポートされていません #########)

カーネル トラッカが、タイムスタンプのないイベントの後に、10 ms 遅延したイベントを表示する

カーネル トラッカで表示しているログ ファイルにタイムスタンプのないイベントが含まれている場合 (WaitForMultipleObjects など)、以降のイベントは 10 ms 遅延して表示されます。これは、以前に発生したタイムスタンプ付きイベントと同時にイベントが表示されないようにする、任意の遅延です。

リモート ツール

  • Remote Tools Framework は、フラット リリース ディレクトリが読み取り専用であるときにカーネルレベルのトランスポートを使用すると、接続されません。
  • 一度に 1 つのリモート ツールしかデバイスに接続できません。

eXDI1 バージョン ドライバは Platform Builder 6.0 システム デバッガによってサポートされていないため、eXDI2 バージョン ドライバに置換する必要がある

eXDI1 バージョン ドライバが選択され、[ターゲット接続] をクリックしてロードしてから [デバッガ] をクリックした場合、デバッガをアタッチしようとすると Platform Builder で例外が発生することがあります。

デバイス構成が削除されても、Remote Tools Framework バンドル入力エディタが削除済みの設定を残す

バンドル入力エディタの [デバイス] パネルからデバイスを削除すると、画面は [選択されたデバイス構成] セクションに表示された情報が更新されません。削除されたデバイスの情報が表示されたままの状態になります。これは、ユーザー インターフェイス (UI) および .cebundleinfo ファイルに保存されたデータが正しくない場合にのみ発生します。このような UI 動作は、今後のリリースで修正します。

デバッガ拡張機能を作成する方法

デバッガ拡張機能を作成するには、次の手順を実行します。

  1. WDBGAPI WinDbgExtensionDllInit (PWINDBG_EXTENSION_APIS lpExtensionApis, USHORT MajorVersion, USHORT MinorVersion) を無効にします。 lpExtensionApis は、Platform Builder からエクスポートされた関数を含む構造体へのポインタを指定します。 MajorVersion は使用されません。この構造体の役割は、オペレーティング システムのバージョンを通信することです。 MinorVersion は使用されません。この構造体の役割は、オペレーティング システムのバージョンを通信することです。
  2. 次のように ExtensionApiVersion 関数をエクスポートします。
    LPEXT_API_VERSION WDBGAPI ExtensionApiVersion(void)
    デバッガが ExtensionApiVersion 関数を呼び出すと、関数は EXT_API_VERSION へのポインタを返します。デバッガ拡張 DLL のバージョン番号は、デバッガのバージョンと一致する必要があります。 DECLARE_API( XXX ) は、無効となった WDBGAPI XXX(HANDLE hCurrentProcess, HANDLE hCurrentThread, ULONG dwCurrentPC, ULONG dwProcessor, PCSTR args) を拡張します。 hCurrentProcess は、現在のプロセスのハンドルを指定します。 hCurrentThread は、現在のスレッドのハンドルを指定します。 dwCurrentPC は、デバイスが停止した現在の命令を指定します。 dwProcessor は使用されません。 args は、拡張機能を呼び出すために [ターゲット コントロール] ウィンドウに入力されるコマンドの引数を指定します。

デバッガ拡張機能が実装されていない

次のデバッガ拡張機能は未実装です。

  • CheckControlC
  • GetDebuggerData
  • ReadControlSpace
  • ReadPhysical
  • SetThreadForOperation
  • WritetoSpace
  • WritePhysical

Ioctl 関数のドキュメントへの追加事項

入出力制御 (Ioctl) 関数には、次の用途があります。

ULONG Ioctl(
USHORT IoctlType,
PVOID lpvData,
ULONG cbSizeOfData)

利用可能な Ioctl 関数の一部を次に示します。

  • IG_GET_BOOTABLEDEVICE 現在起動中のデバイスの CoreCon デバイス ID を取得します。パラメータとしては、GUID を格納できるバッファへのポインタを取ります。Ioctl は、このバッファに GUID を書き込みます。
  • IG_GET_EXDI2_CCSERVICE 現在の eXDI2 デバッガ ドライバの ICcService インターフェイスを取得します。パラメータとしては、ポインタを格納できるバッファへのポインタを取ります。Ioctl は、refcount を 1 に設定した COM ポインタをバッファにコピー アウトします。
  • IG_GET_EXDI2_GENERIC 現在の eXDI2 デバッガ ドライバの IeXdi2Generic インターフェイスを取得します。
  • IG_GET_OSACCESS_CCSERVICE オペレーティング システム アウェアネス サービスの ICcService インターフェイスを取得します。
  • IG_GET_OSACCESS_GENERIC オペレーティング システム アウェアネス サービスの IOsAxsGeneric インターフェイスを取得します。

ドキュメントに関する問題

Windows Embedded CE 6.0 Platform Builder Service Pack 1 のドキュメンテーションに該当する既知の問題を次に示します。

  • 「SimplePluginManagedAsync サンプル」トピックでは、「必要なオペレーティング システムの依存関係」のセクションで .NET Compact Framework 1.0 を指定する必要があります。

Windows Embedded CE 6.0 Platform Builder Service Pack 1 の変更リスト

CETK

CETK には、次の変更点が加えられています。

  • CETK を Windows Vista でも動作できるよう更新。
  • Perf_winsock Test を更新し、タイムアウトとログ機能を改良。
  • テストの実行前と実行後に wzcsvc を有効化、または無効化できるよう、NDIS Wireless LAN を更新。
  • Bluetooth テストを更新。
  • Internet Explorer 7 で使用できるよう Apcontrol.exe を更新。
  • リアルタイム クロックから時間をフェッチする際に遅延を長引かせられるよう、RTC テストを更新。
  • NULL コマンドライン パラメータを円滑に処理できるよう、USB ストレス テストを更新。
  • カーネル テストを更新。
  • 内部的に使用可能な NTP サーバーのリストを、比較 RTC から NTP ドリフト テストに移動するよう、OAL テストを更新。
  • Apcontrol.exe を Authentication Matrix のデスクトップ バイナリとして追加。
  • ファイル システム テストを更新。
  • IOCTL を制限するための新しい OAL テストを追加。
  • 命令キャッシュ用の新しい OAL テストを追加。

カーネル トラッカの新しいサンプル .clg ファイル

サンプルの .clg ファイルは C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\sdk\wce###\samples\KTLogFiles\sample.clg にインストールされています。Windows Embedded CE 6.0 Platform Builder Service Pack 1 では、wce### は "wce600" です。このログ ファイルをカーネル トラッカで開くと、スレッドの興味深い動作を見ることができます。

削除されたコア接続 HLAPI

次のインターフェイスとすべてのメソッドは削除されました。

  • ICcConnection
  • ICcConnection::CloseProcessHandle
  • ICcConnection::ConnectDevice
  • ICcConnection::CreateStream
  • ICcConnection::DeleteDirectory
  • ICcConnection::DeviceId
  • ICcConnection::DisconnectDevice
  • ICcConnection::DownloadPackage
  • ICcConnection::EnumerateProcess
  • ICcConnection::GetFileInfo
  • ICcConnection::GetProcessExitCode
  • ICcConnection::GetSystemInfo
  • ICcConnection::IsConnected
  • ICcConnection::LaunchProcess
  • ICcConnection::MakeDirectory
  • ICcConnection::ReceiveFile
  • ICcConnection::RegistryCreateKey
  • ICcConnection::RegistyDeleteKey
  • ICcConnection::RegistyDeleteValue
  • ICcConnection::RegistyQueryValue
  • ICcConnection::RegistySetValue
  • ICcConnection::RemoveFile
  • ICcConnection::SearchFileSystem
  • ICcConnection::SendFile
  • ICcConnection::SetFileInfo
  • ICcConnection::TerminateProcess
  • ICcConnection::VerifyFilesInstalled
  • ICcServer::EnumerateConnections
  • ICcServer::GetConnection
  • ICcServer::GetConnectionFromId
  • ICcServer::GetDatastore
  • ICcServer::Locale
  • IConman
  • IConman::SetLocale
  • IConman::SetRegistryRoot
  • IConman::CreateNewServerGuid
  • IConman::EnumerateServerGuids
  • IConman::get_Datastore
  • IConman::GetDeviceFromServerGuid
  • IConman::GetServerFromServerGuid
  • IConman::GetServerGuidInfo

削除されたその他のインターフェイス

さらに、次の API も削除されました。

  • ICcCollection
  • ICcCollection::get_Count
  • ICcCollection::get_Item
  • ICcCollection::get_NewEnum
  • ICcDatastore
  • ICcDatastore::get_DeviceContainer
  • ICcDatastore::get_OSImageContainer
  • ICcDatastore::get_PackageContainer
  • ICcDatastore::get_PlatformContainer
  • ICcDatastore::get_PropertyContainer
  • ICcDatastore::get_ServiceCategoryContainer
  • ICcDatastore::get_Version
  • ICcDatastore::RegisterRefreshEvent
  • ICcDatastore::Save
  • ICcDatastore::UnregisterRefreshEvent
  • ICcDevice
  • ICcDevice::ClearOSImage
  • ICcDevice::ClearServiceMap
  • ICcDevice::GetOSImage
  • ICcDevice::GetServiceMap
  • ICcDevice::SetOSImage
  • ICcDevice::SetServiceMap
  • ICcDeviceContainer
  • ICcFile
  • ICcFile::get_FileContainer
  • ICcFile::get_IsCollection
  • ICcFile::MakeCollection
  • ICcFileContainer
  • ICcFormFactor
  • ICcFormFactorContainer
  • ICcObject
  • ICcObject::get_IsProtected
  • ICcObject::get_PropertyContainer
  • ICcObject::ID
  • ICcObject::Name
  • ICcObjectContainer
  • ICcObjectContainer::AddObject
  • ICcObjectContainer::DeleteObject
  • ICcObjectContainer::EnumerateObjects
  • ICcObjectContainer::FindObject
  • ICcOSImage
  • ICcOSImage::SupportedPlatform
  • ICcOSImageContainer
  • ICcPackageType
  • ICcPackageType::FileContainer
  • ICcPackageTypeContainer
  • ICcPlatform
  • ICcPlatform::DeviceContainer
  • ICcPlatform::FormFactorContainer
  • ICcPlatform::ProjectContainer
  • ICcPlatformContainer
  • ICcProject
  • ICcProjectContainer
  • ICcProperty
  • ICcProperty::AddPropertyContainer
  • ICcProperty::Value
  • ICcPropertyContainer
  • ICcServiceCategory
  • ICcServiceCategory::ServiceInfoContainer
  • ICcServiceCategoryContainer
  • ICcServiceInfo
  • ICcServiceInfoContainer
  • ICcTypeToArchitectureMap

削除された構造体と列挙子

次の構造体は削除されました。

  • FileInfo
  • FileVerifyInfo
  • FileVerifyReference
  • FileVerifyResult
  • FileVerifyVersion
  • SystemInfo

次の列挙子は削除されました。

  • FileCustomAction

ドキュメントの更新

Windows Embedded CE の次のリリースのドキュメントには、次の更新が追加されます。

CeDebugX

CeDebugX は、Platform Builder デバッガの拡張機能です。ブレーク時のシステムの状態に関する詳細情報を示し、クラッシュ、ハング、およびデッドロックの診断を試行します。

CeDebugX コマンドは、ブレーク時に Platform Builder の [ターゲット コントロール] ウィンドウを通じて利用できます。

システム情報

CeDebugX は、ブレーク時のシステムの重要な要素に関する詳細情報を表示する一連のコマンドを提供します。スレッド、プロセス、モジュール、同期オブジェクト、ヒープ、GDI オブジェクト、ウィンドウ、メッセージ キュー、およびその他のオブジェクトを細部にわたって検証するコマンドがあります。この情報は、デバッガの標準的な [スレッド]、[プロセス]、および [モジュール] ウィンドウを通じて利用できる基本情報を拡張し、カーネルおよびアプリケーション レベルのデバッグの効率性を高めるために提供されます。

自動診断

CeDebugX には、クラッシュ、ハング、またはデッドロックのタイプと詳しい性質を診断するために、システムの状態を評価するコマンドがあります。CeDebugX は、アクセス違反、スタック オーバーフロー、スピン スレッド、デッドロック、孤立クリティカル セクションおよびミューテックス、およびヒープ破損を検索します。1 つ以上の障害が検出されると、CeDebugX は、例外アドレス、呼び出し履歴、同期オブジェクトの所有権、メモリ評価など、その障害に関する詳細情報をできるだけ多く表示します。1 つ以上の障害が検出された場合、CeDebugX は、診断の重要度と信頼性順に並べ替えられた障害のリストを表示します。クラッシュまたはハングが検出されたが、明確な診断が不可能である場合は、CeDebugX は今後の調査のための提案を提供します。

CeDebugX の実行要件

CeDebugX にはアクティブなデバッグ セッションと、次のすべての条件を満たす必要があります。

  • Platform Builder がカーネル非依存トランスポート層 (KITL) を通じたターゲット デバイスに接続されていること。
  • デバッガがデバイスにロードされていること。
  • デバイスがデバッグ ブレーク状態であること。
  • Platform Builder に、デバイスのモジュールの有効なシンボルに対するアクセス権が与えられていること。

CeDebugX のロード

デバッグされる Windows Embedded CE のバージョンによって、CeDebugX のロード方法も異なります。CeDebugX には、Windows Embedded CE の主要バージョンに対応する個別のバイナリ バージョンがあります。

Cedebugx60.dll は、Windows Embedded CE 6.0 ベースの製品を対象としており、既定でロードされています。

Cedebugx50.dll は、Windows CE 5.0 ベースの製品を対象としており、手動でロードできます。

CeDebugX コマンドの完全なリストを見るには、「CeDebug コマンド」を参照してください。

CeDebugX によって生成されるファイルのリストについては、「CeDebugX ファイルによって生成されるファイル」を参照してください。

CeDebugX コマンド

CeDebugX を実行するための要件が満たされ、拡張機能が正常にロードされると、CeDebugX コマンドを [ターゲット コントロール] コマンド プロンプトで呼び出し、ターゲット デバイスのエラーと状態を診断できます。

すべてのデバッガ拡張コマンドの頭には、感嘆符 (!) を付ける必要があります。たとえば、!help などです。

大半のコマンドとパラメータに関する説明は、[ターゲット コントロール] コマンド プロンプトで「!<コマンド> /?」と入力すると表示できます。

次の表に、最も重要で便利なコマンドを示します。

コマンド 説明

!help

使用可能なすべてのコマンドを一覧表示します。

!refresh

拡張機能を、システムの現在の状態と同期させます。このコマンドは、すべての実行サイクルやブレーク サイクルの後、またはシステムの状態が変更されるたびに呼び出される必要があります。

!diagnose

ブレーク時の現在の状態に見られる、すべてのクラッシュまたはハングの自動診断を実行します。

!xml

明確な診断と詳細のシステム情報を XML ファイルにログし、フォーマット済みデータをブラウザ ウィンドウで表示します。

CeDebugX コマンドに関する詳細については、次のトピックで取り上げます。

ファイル作成に関するコマンドについては、「CeDebugX によって生成されるファイル」を参照してください。

診断コマンド

自動診断の主要コマンドは !diagnose all です。障害の性質が確実に分かっている場合は、診断プロシージャを個別に呼び出して時間を節約することができます。ただし、個別の診断コマンドが対象となる障害タイプを検出できなかった場合は、これ以上のアクションを実行しません。障害タイプの一部は関連しあっていることがあるため (デッドロックと不足、AV とヒープ破損など)、個別の診断プロシージャを呼び出すことは推奨されません。

次の表で、診断コマンドについて説明します。

コマンド 説明

!diagnose all

使用可能なすべての診断プロシージャを実行し、未知のタイプの障害を診断します。

!diagnose exception

スタック オーバーフローも含め、例外を診断します。

!diagnose starvation

スレッド不足を診断します。

!diagnose deadlock

デッドロックまたは孤立クリティカル セクション、またはミューテックスを診断します。

!diagnose heap

ヒープ破損を診断します。

!diagnose memory

メモリ不足状態を特定します。

!diagnose < インデックス >

複数の診断が行われる場合は、!diagnose コマンドは診断の一覧を表示します。個別診断の詳細を表示するには、上記の !diagnose コマンドで示される診断のインデックスと共に、このコマンドを使用します。

不足デルタのチェック

スレッド不足の状態は、ブレーク時には明確に識別できません。明確な診断を得るには、実行状態に再度切り替えて待機し、再度デバッガにブレークする必要があることがあります。

メモ :
実行とブレークを続けた後は、他の CeDebugX コマンドを実行する前に !refresh コマンドを入力する必要があります。

CeDebugX が 1 回目のパスで明確な不足状態を検出できなかった場合は、実行可能なスレッドの現在の状態に関する情報を保存し、次に示すように、続行するよう指示します。

"A starvation condition could be present in the system.Threads of priority X or below seem to be unable to run. (システムに不足状態がある可能性があります。優先度 X またはそれ以下のスレッドが実行されません。)"

次の手順を実行します。

1. デバッガで F5 キー (GO) を押し、30 秒間待ち、手動でブレークします。

2. !diagnose starvation デルタ コマンドを実行します。

これらの命令に従うと、CeDebugX は初回パスで保存された情報と、実行可能なスレッドの新しい情報を比較します。こうすると、コマンドは、不足を生じさせるおそれがある潜在的なスピン スレッドを簡単に特定できます。

スタック オーバーフロー

CeDebugX がスタック オーバーフローを検出すると、完全なスタック評価を実行します。CeDebugX は、オーバーフローしているスレッド スタックの各 DWORD をテキストとして評価し、既知のカーネル オブジェクトと比較します。CeDebugX は潜在的なアドレスの付近にあるシンボルを表示し、これらをフレーム ポインタとして識別します。

スタック評価情報は膨大な量になることもあるため、既定では [ターゲット コントロール] ウィンドウには表示されません。

完全なスタック評価は、拡張機能の作業ディレクトリの Stackeval.txt に保存されます。「CeDebugX によって生成されるファイル」も参照してください。

[ターゲット コントロール] ウィンドウでスタック評価を確認するには、!stackeval コマンドを使用します。

拡張機能のヘルプとコントロール

次の表に、CeDebugX のヘルプ コマンドと、一般的な制御コマンドについて説明します。

コマンド 説明 パラメータ

!help

使用可能な全てのコマンドを一覧表示します。

なし

!refresh

拡張機能を、システムの現在の状態と同期させます。このコマンドは、すべての実行サイクルやブレーク サイクルの後、またはシステムの状態が変更されるたびに呼び出される必要があります。

なし

!xml -s

拡張機能の作業ディレクトリの XML ファイルに、デバッグ情報を保存します。この情報はブラウザ ウィンドウに表示されます。このコマンドには、すべてのスレッド、プロセス、およびモジュールに関する情報に加え、診断結果 (ある場合) も含まれます。

XML を別の場所に保存するには、–s フラグを使用します。

-s

XML ファイルを別の場所に保存します。

!save

現在の作業ディレクトリにあるすべてのファイルを、[ファイルの保存] ダイアログ ボックスで選択した新しい場所に保存します。

なし

!version

CeDebugX バージョンとターゲット Windows Embedded CE バージョンを表示します (接続され、デバッグ中の場合)。

なし

!checksymbols

有効なカーネルおよび Windows グラフィックス、ウィンドウイング、イベント サブシステムのシンボルがロードされていることを確認します。

なし

!getworkingpath

CeDebugX の現在の作業ディレクトリのパスを表示します。

なし

!setworkingpath

現在の CeDebugX 作業ディレクトリを、[フォルダの参照] ダイアログ ボックスを使用して新しい場所に変更します。

なし

一般的なシステム情報

このトピックでは、CeDebugX の一般的なシステム情報コマンドについて説明します。次の表で、これらのコマンドについて説明します。

コマンド 説明 パラメータ

!exception

例外情報 (ある場合) と、現在のスレッド呼び出し履歴を表示します。

なし

!kinfo

UserKInfo テーブルの上位レベル情報を表示します。

なし

!disasm < addr > < process >

指定アドレスの混合表示を行います。

< addr >

仮想アドレス。

< process >

(オプション)

仮想メモリ コンテキストを指定するプロセス名、ハンドル、または ID。既定では、現在のプロセスに設定されます。

!getsym < addr > < process >

アドレスに最も近いシンボルを表示します。

< addr >

仮想アドレス。

< process >

(オプション)

プロセス コンテキスト。プロセス名、ハンドル、または ID のいずれかです。既定では、現在のプロセスに設定されます。

!dd < start address > < process >

ダンプ メモリ コンテキスト、256 バイトずつ。

< start address >

(オプション)

開始アドレス。指定されていない場合は、CeDebugX は最終ダンプの終了直後のアドレスを使用します。

< process >

(オプション)

仮想メモリ コンテキストを指定するプロセス名、ハンドル、または ID。既定では、現在のプロセスに設定されます。

!getsizeof < type | expr > < process >

型表現式または単項式のサイズをバイト単位で表示します。ブレーク時の C++ sizeof 演算子を表示します。

< type | expr >

型表現式または単項式。

< process >

(オプション)

プロセス コンテキスト。プロセス名、ハンドル、または ID のいずれかです。既定では、現在のプロセスに設定されます。

!d2x < int >

10 進の整数値を、16 進値に変換します。

< int >

整数値。

!x2i < hex >

16 進値を符号付きの 10 進の整数に変換します。

< hex >

16 進値。

!x2u <hex>

16 進値を符号なしの 10 進の整数に変換します。

< hex >

16 進値。

!ms2t < milliseconds >

ミリ秒カウントを時間、分、秒、およびミリ秒単位に変換します。

< milliseconds >

ミリ秒。

!expr < expression >

式を評価します。

< expression >

シンボル式。コンテキスト指定子も含めたウォッチ ウィンドウ構文を使用します。

!printstr < addr > <process> < # chars >

デバイス メモリから Unicode 文字列を読み取り、表示します。

< addr >

文字列のアドレス。

< process >

プロセス コンテキスト。プロセス名、ハンドル、または ID のいずれかです。

< # chars >

(オプション)

表示可能な最大文字数。既定では 256 文字に設定されています。

!printstra < addr > < process > < # chars >

デバイス メモリから ANSI 文字列を読み取り、表示します。

< addr >

文字列のアドレス。

< process >

プロセス コンテキスト。プロセス名、ハンドル、または ID のいずれかです。

< # chars >

(オプション)

表示可能な最大文字数。既定では 256 文字に設定されています。

スレッド情報

このトピックでは、スレッド情報を取得するための CeDebugX コマンドについて説明します。次の表で、これらのコマンドについて説明します。

コマンド 説明 パラメータ

!thread < pThread >

ポインタ値が指定されているスレッドの詳細情報を表示します。

< pThread >

スレッドのポインタ値。!threadlist コマンドによって取得できます。

!threadh < hThread >

ハンドル値が指定されているスレッドの詳細情報を表示します。

< hThread >

スレッドのハンドル値。!threadlist コマンドによって取得できます。

!threadlist < process >

指定されたプロセスのすべてのスレッドに関する概要情報を表示します。プロセスが指定されていない場合は、すべてのスレッドを表示します。

< process >

(オプション)

プロセス コンテキスト。プロセス名、ハンドル、または ID のいずれかです。既定では、現在のプロセスに設定されます。

!allthreads < process >

システムのすべてのスレッド、または指定プロセス (指定されている場合) の詳細情報を表示します。

< process >

(オプション)

プロセス コンテキスト。プロセス名、ハンドル、または ID のいずれかです。既定では、現在のプロセスに設定されます。

!runlist

現在実行可能なスレッドのリストと、現在実行中のスレッドを表示します。

なし

!sleeplist

Sleep 関数の呼び出しのスレッドも含めたスリープ中のスレッドと、WaitForMultipleObjects 呼び出しでスリープ中のスレッドのリストを表示します。

なし

!stackeval < pThread >

ポインタが指定されたスレッドに属する、スタックのすべての値を列挙します。この関数は、各値をシンボルまたは既知の値 (カーネル オブジェクト ハンドルまたは GWES オブジェクトなど)、または (可能な場合) スタック上の別の場所へのポインタに一致させるよう試行します。すべての値はテキストとして表示されます。スタック ポインタより下の値のみが表示され、評価可能であればフレーム境界も含まれます。

< pThread >

スレッドのポインタ値。!threadlist コマンドによって取得できます。

!stacktrace < pThread >

指定スレッドのスタック ポインタ、フレーム ポインタ、およびフレーム ポインタの PC を表示します。

< pThread >

スレッドのポインタ値。!threadlist コマンドによって取得できます。

!context < pThread >

指定のスレッドの現在のレジスタ コンテキストを表示します。

< pThread >

スレッドのポインタ値。!threadlist コマンドによって取得できます。

プロセス情報

このトピックでは、プロセス情報を取得するための CeDebugX コマンドについて説明します。次の表で、これらのコマンドについて説明します。

コマンド 説明 パラメータ

!proc < process >

プロセスに関する詳細情報を表示します。

< process >

プロセス名、ハンドル、または ID のいずれかです。

!proclist

実行中のすべてのプロセスに関する概要情報を表示します。

なし

モジュール情報

このトピックでは、モジュール情報を取得するための CeDebugX コマンドについて説明します。次の表で、これらのコマンドについて説明します。

コマンド 説明 パラメータ

!module < module >

名前またはモジュール オブジェクト ポインタによって識別される、モジュールに関する詳細情報を表示します。

< module >

モジュールの名前、または MODULE 構造体へのポインタ。モジュールの MODULE ポインタは、!modlist コマンドを使用して検索できます。

!modlist < process > < sort order >

!modlist all < sort order >

現在ロードされているすべてのモジュールに関する概要情報を表示します。

< process >

指定のプロセスによってロードされたモジュールを一覧表示します。プロセス名、名前、ハンドル、または ID のいずれかです。!proclist コマンドを参照してください。

all: システムの各プロセスによってロードされたモジュールを一覧表示します。

< sort order >

(オプション)

次のいずれかの値です。

name: モジュール名で並べ替えます。

va: モジュールのロード アドレスで並べ替えます。

ptr: カーネル オブジェクトへのポインタで並べ替えます。

ハンドル

このトピックでは、ハンドルに関する CeDebugX コマンドについて説明します。次の表で、これらのコマンドについて説明します。

コマンド 説明 パラメータ

!handlelist < process >

システムのハンドル、または指定プロセスに関する概要情報を表示します。

< process >

(オプション)

プロセス コンテキスト。プロセス名、ハンドル、または ID のいずれかです。既定では、すべてのプロセスのハンドルを表示するよう設定されています。

!handle < h >

指定のハンドルで示されるオブジェクトに関する詳細情報を表示します。

< h >

ハンドル値。!handlelist コマンドによって取得できます。

< process >

(オプション)

プロセス ハンドル テーブルのハンドルを検索します。プロセス名、名前、ハンドル、または ID のいずれかです。!proclist コマンドを参照してください。

既定では、カーネル プロセスに設定されます。

!h2p < handle > < process >

指定のハンドルで示されるオブジェクトへのポインタ値を表示します。

< handle >

ハンドル値。

< process >

(オプション)

プロセス ハンドル テーブルのハンドルを検索します。プロセス名、名前、ハンドル、または ID のいずれかです。!proclist コマンドを参照してください。

既定では、カーネル プロセスに設定されます。

プロキシ

このトピックでは、イベント、クリティカル セクション、ミューテックスなど、すべてのタイプのプロキシで使用される CeDebugX コマンドについて説明します。次の表で、これらのコマンドについて説明します。

コマンド 説明 パラメータ

!blocked

ブロック オブジェクト (プロキシ)、およびブロックされるスレッドのリストを表示します。

なし

!cslist

スレッドをブロック中のクリティカル セクション、およびそれらのクリティカル セクションを所有するスレッドのリストを表示します。

なし

!eventlist

スレッドをブロック中のイベントのリストを表示します。

なし

!sending

Win32 SendMessage 関数への呼び出しでブロックされたスレッドのリストを表示します。

なし

メモリ情報

このトピックでは、メモリ情報を取得するための CeDebugX コマンドについて説明します。次の表で、これらのコマンドについて説明します。

コマンド 説明 パラメータ

!heaplist < process >

システムまたは指定のプロセスのヒープに関する基本情報を表示します。

< process >

(オプション)

指定プロセスのヒープのみを表示します。プロセス名、名前、ハンドル、または ID のいずれかです。!proclist コマンドを参照してください。

既定では、システムのすべてのヒープを表示するよう設定されています。

!heapwalk < process > full

!heapwalk all full

システムまたは指定のプロセスのヒープに関する詳細情報を表示します。各ヒープ項目を調査し、破損の有無を確認し、ヒープの合計利用数を表示します。

< process >

指定プロセスのヒープのみを調査します。プロセス名、名前、ハンドル、または ID のいずれかです。!proclist コマンドを参照してください。

all

システム内のすべてのヒープを調査します。

full

(オプション)

ヒープの各項目に関する概要情報を表示します。

!walkthisheap < process > < heap ptr >

指定のヒープの各項目に関する概要情報を表示します。

<process>

(必須)

プロセス コンテキスト。プロセス名、名前、ハンドル、または ID のいずれかです。!proclist コマンドを参照してください。

< heap ptr >

ヒープへのポインタ。!heaplist コマンドによって取得できます。ヒープ ポインタは、ヒープ リスト出力では "Address" として示されます。

!heapitem < addr > < process >

指定のアドレスのヒープ項目を検索します。アドレスは、ヒープ項目の開始アドレスでなくてもかまいません。アドレスはヒープ項目へのオフセットであることもあります。項目が見つかった場合は、コマンドは、ヒープ項目に関する情報をヘッダー情報も含めて表示します。

ヒープ項目の完全な内容を表示するには、!dumpitem コマンドを使用します。

< addr >

項目または項目内のアドレス。

< process >

(オプション)

指定のプロセスでヒープを検索します。プロセス名、名前、ハンドル、または ID のいずれかです。!proclist コマンドを参照してください。指定されていなければ、すべてのヒープが検索されます。

!dumpitem < addr > < process >

ヒープ項目の内容が、ヘッダーも含めて表示されます。すべてのユーザー データはテキストとして評価され、DWORD インクリメントで表示されます。

<addr>

ヒープ項目のアドレス。!heapwalk コマンドによって取得できます。

< process >

(オプション)

指定のプロセスでヒープを検索します。プロセス名、名前、ハンドル、または ID のいずれかです。!proclist コマンドを参照してください。指定されていなければ、すべてのヒープが検索されます。

!meminfo kernel

カーネル ヒープに関する情報を表示します。

なし

!meminfo basic

Windows CE 5.0 のみ。各プロセスのメモリの概要レポートを表示します。

なし

!meminfo slots

Windows CE 5.0 のみ。システム メモリの概要レポートと、各スロットの概要を表示します。

なし

!meminfo pages

Windows CE 5.0 のみ。すべての仮想割り当てと、すべてのページのコミット情報を表示します。

なし

!meminfo full

Windows CE 5.0 のみ。使用可能なすべてのメモリ情報を、ページ ヘッダーに関する詳細も含めて表示します。

なし

!meminfo legend

Windows CE 5.0 のみ。ページを表すために使用されるシンボルに関するヘルプを表示します。

なし

GWES 情報

このトピックでは、Windows グラフィックス、ウィンドウイング、イベント サブシステム (GWES) の情報を取得するための CeDebugX コマンドについて説明します。次の表で、これらのコマンドについて説明します。

コマンド 説明 パラメータ

!win

システムのウィンドウに関する概要情報を表示します。

all

システムのすべてのウィンドウに関する概要情報を表示します。

foreground

フォアグラウンド、フォーカス、キャプチャ、およびキーボード出力先ウィンドウを表示します。

invalid

無効な署名を持つすべてのウィンドウを表示します。

< process >

指定のプロセスに属するすべてのウィンドウを表示します。プロセス名、名前、ハンドル、または ID のいずれかです。!proclist コマンドを参照してください。

!winh < handle >

ハンドルが指定されているウィンドウに関する詳細情報を表示します。有効なハンドルでコマンドが 1 度実行されると、ユーザーはナビゲーション コマンドを使用し、ウィンドウ階層内で移動できます。

< handle >

指定のハンドルで示されたウィンドウに関する情報を表示します。

ナビゲーション コマンドは次のとおりです。

p

最後に印刷されたウィンドウの親ウィンドウに関する情報を表示します。

c

最後に印刷されたウィンドウの子ウィンドウに関する情報を表示します。

n

最後に印刷されたウィンドウの兄弟に関する情報を表示します。

d

最後に印刷されたウィンドウの、すべての子孫ウィンドウに関するウィンドウ情報を表示します。

a

最後に印刷されたウィンドウの、すべての祖先ウィンドウに関するウィンドウ情報を表示します。

!gditable

グラフィックス デバイス インターフェイス (GDI) オブジェクトのリストを表示します。

このコマンドがパラメータなしで実行されると、!gditable type コマンドで使用される GDI タイプ ID が表示されます。

all

システム内のすべての有効な GDI オブジェクトのリストが表示されます。

< process >

指定のプロセスに属する、すべての有効な GDI オブジェクトのリストが表示されます。プロセス名、ハンドル、または ID のいずれかです。

type < type >

システム内で指定されたタイプの、すべての有効な GDI オブジェクトのリストを表示します。タイプは数字で指定されます。使用可能なタイプを取得するには、!gditable コマンドをパラメータなしで実行します。

!gdih < handle >

ハンドルによって指定された GDI オブジェクトに関する詳細情報を表示します。

<handle>

GDI オブジェクトを識別するハンドル。

!gdiobj < pObj >

オブジェクト ポインタによって指定された GDI オブジェクトに関する詳細情報を表示します。

< pObj >

GDI オブジェクトへのポインタ。GDI オブジェクトのポインタは、!gditable コマンドによって取得できます。

!screenshot -s

画面のスナップショットを作成し、ビットマップとして保存し、そのビットマップを表示します。

-s

(オプション)

ビットマップを [ファイルの保存] ダイアログ ボックスで選択された場所に保存します。場所が指定されなければ、ビットマップは現在の作業ディレクトリに保存されます。

!msgqueues

システムのウィンドウ メッセージ キューを一覧表示します。キュー ポインタ、プロセス所有者、ウィンドウ、およびキュー内の次のメッセージといった基本情報を表示します。

なし

CeDebugX によって生成されるファイル

いくつかの CeDebugX コマンドは、情報を含むファイルをデバッグ セッションから生成します。これらのファイルは、デバッグ セッションの終了後の調査および分析に有益です。

CeDebugX によって生成されるファイルは、作業ディレクトリに格納されます。既定では、System\Temp ディレクトリのサブフォルダです。

作業ディレクトリのパスを確認するには、!getworkingpath コマンドを使用します。

作業ディレクトリを変更するには、!setworkingpath コマンドを使用します。

作業ディレクトリのすべてのファイルを別の場所に保存するには、!save コマンドを使用します。

次の表で、ファイルを生成するコマンドについて説明します。

コマンド ファイル 説明

!xml

<セッション名>.xml

セッション中に行われた明確な診断、ブレーク時に実行中またはロードされたすべてのスレッド、プロセス、およびモジュールに関する詳細情報、スレッドをブロックしている同期オブジェクトのリスト、および実行可能なスレッドの最新リストを含む XML ファイルを生成します。

!screenshot

Screenshot.bmp

ブレーク時のデバイスのスクリーンショットを表す .bmp ファイルを生成します。

!diagnose

Stackeval.txt

スタック オーバーフローが検出されると、このコマンドはスレッド スタック上のすべての値の完全なリストを生成すると共に、これらの値の性質を識別しようと試行します。シンボルにポイントしているか。カーネルによって保持されるオブジェクトへのポインタまたはハンドルであるか。フレーム ポインタであるか、などです。

!diagnose

Runlist.txt

スレッド不足が検出されると、このコマンドはブレーク時に実行中、または実行可能なスレッドのリストを含むテキスト ファイルを生成します。

CETK テストのソース コード

Windows Embedded CE 6.0 テスト キット (CETK) と共に出荷されるテストのソース コードをインストールすることができます。マイクロソフトでは、デバイス ドライバをデバッグし、CETK 向けのカスタム テストを作成するためのソース コードを提供しています。ただし、すべてのソース コードがビルド可能というわけではなく、また、すべてのソース コードが提供されるわけではありません。

Windows Embedded CE のセットアップ ウィザードから Windows Embedded CE の共有ソースをインストールすることで、CETK テストのソース コードをインストールできます。

カスタム テストを作成するためにソース コードを使用する場合は、CETK にそのソース コードを追加できます。

Windows Embedded CE のセットアップ ウィザードは、%_WINCEROOT%\Private\Test に CETK テストのソース コードをインストールします。

いくつかの CETK テストは、ソース コードが提供されないライブラリまたは DLL を必要とします。CETK ソース コードをビルドする前に、ソース コードが提供されないライブラリまたは DLL を適切なプロジェクト ディレクトリにコピーする必要があります。

手順

CETK ソース コードをビルドするには、次の手順を実行します。
  1. %_WINCEROOT%\Private\Test ツリー全体をビルドします。

    -または-

    %_WINCEROOT%\Private\Test\External でソース コードをビルドします。

    %_WINCEROOT%\Private\Test\External でソース コードをビルドすると、CETK テスト モジュールが %_WINCEROOT%\Others\Wcetk から現在のビルド ウィンドウのプロジェクト ディレクトリにコピーされます。

  2. 必要な CETK ソース コードをビルドします。

Application Verifier ツールの Shim の作成

Shim には、次のコード セクションがあります。

生成されたコード

次の手順で示す [Shim source] (Shim ソース) ボックスで指定されたソース ファイルには、リダイレクトされたすべての関数が含まれます。これらの関数は、機能を置換するか、または元のライブラリに呼び出しを渡し、その関数の入出力を監視します。元の関数に呼び出しを渡すには、関数を呼び出します。そうすると、Application Verifier エンジンが、ある Shim によってインポートされた関数が別の Shim (またはその Shim 自身) にリダイレクトされないようにします。元の DLL に呼び出しを渡す必要はありません。

DllMain.c

このファイルには、DllMain の実装が含まれます。このファイルは、必要となる初期化タスクまたは終了タスクを実行するようカスタマイズできます。

OptionsDlg.c

この Shim にペインを追加するには、設定マネージャの [オプション] ダイアログ ボックスで GetOptionsDialogProc を実装してエクスポートします。この関数は、プロパティ シートで使用されるダイアログ プロシージャとリソース テンプレートを返す必要があります。特定の Shim 用のダイアログ リソースとプロシージャをカスタマイズします。

ParseCommand.c

Platform Builder の CE ターゲット コントロールにカスタム コマンドを追加するには、ParseCommand 関数を実装し、エクスポートします。

QueryShimInfo.c

QueryShimInfo 関数は、Shim dll の必須のエントリ ポイントです。このファイルは編集しないでください。代わりに、次に説明する ShimInfo.rc をカスタマイズします。

RemoteUI.c

Get/Set/FreeShimSettings は、Shim DLL の必須エントリ ポイントではありません。デバイスにアプリケーション固有のランタイム設定を送信する場合にのみ、これらを実装します。

ShimInfo.rc

このファイルは、Shim を説明する文字列でカスタマイズします。設定マネージャの右側のペインにフレンドリ名が表示され、下側のペインに説明が表示されます。

次に、Application Verifier の Shim を作成し、実装する方法を示します。

手順

Application Verifier の Shim の作成と実装
  1. Shim を作成する関数を決定し、それらの関数を DLL に実装します。

  2. ShimGenUI.exe を実行します。Application Verifier の Shim Generator に、次の図が表示されます。

  3. [Original DLL] (元の DLL) ボックスで、Shim に含める関数を実装する DLL へのフル パスを入力します。

    -または-

    省略ボタン (..) をクリックし、DLL を参照します。

    DLL が選択されると、その DLL によってエクスポートされた関数が左側のペインに追加されます。

  4. [Shim Source] (Shim ソース) ボックスで、Shim によるこれらの関数の実装を含む C/C++ ファイルへのフル パスを入力します。

    -または-

    省略ボタン (..) をクリックし、ソース ファイルを参照します。

    左側のペインから Shim に実装される関数を選択し、[追加] をクリックします。また、[API Filter] (API フィルタ) ボックスを選択し、大文字と小文字を区別するフィルタを関数に適用することもできます。

  5. 実装されるすべての関数が選択されると、[Generate Code] (コードの生成) ボタンをクリックします。生成されるフレームワーク コードが、コード エディタに表示されます。

ターゲット コントロール拡張機能

ターゲット コントロール拡張機能とは、デバイスの Shell.exe プロセスで実行されるプラグインです。この拡張機能により、[ターゲット コントロール] ウィンドウにコマンドを追加できます。コア サービスによって認知されていないコマンドが [ターゲット コントロール] ウィンドウに入力されると、コマンドはインストールされた拡張機能に渡されます。ターゲット コントロール拡張機能は、デバイスが実行されているときに実行されます。これらのコマンドは、デバイスがデバッガで停止されているときは使用できません。

ターゲット コントロール拡張機能をビルドするには、Ceshext.h ヘッダー ファイルを含める必要があります。このヘッダー ファイルは <Platform Builder のディレクトリ>\cepb\SDK\INCLUDE ディレクトリにインストールされています。

インストール

ターゲット コントロール拡張機能は、次のキーでデバイス レジストリに登録されています。

HKEY_LOCAL_MACHINE\Software\Microsoft\TxtShell\Extensions

拡張機能は REG_SZ 値です。値の名前は拡張機能の記述名であり、値データは拡張機能の DLL の場所を示します。

エクスポートされる関数

ターゲット コントロール拡張機能 DLL は、次のコード例で示すように、単独の関数 ParseCommand をエクスポートします。

BOOL ParseCommand(
LPCTSTR szCmd,
LPCTSTR szCmdLine,
PFN_FmtPuts pfnFmtPuts,
PFN_Gets pfnGets);

用途

関数パラメータの用途を、次の表で示します。

パラメータ 説明

szCmd

コマンドの名前。

szCmdLine

コマンド ラインの残りの部分。

pfnFmtPuts

[ターゲット コントロール] ウィンドウにフォーマット済みテキストを書き込む関数へのポインタ。この関数は printf に似ており、1024 文字の上限が設けられています。

typedef void (*PFN_FmtPuts)(TCHAR *s,...);

pfnGets

[ターゲット コントロール] ウィンドウからテキストを読み取る関数へのポインタ。受信されるテキストには、文字列の冒頭に余分な空白が見られることがあります。文字列の冒頭の空白をトリムするには、次の手順を実行します。

TEXT(' '), TEXT('\r'), TEXT('\n'))
typedef TCHAR * (*PFN_Gets)(TCHAR *s, int cch);

戻り値

拡張機能がコマンドを処理する場合は TRUE を返します。

ヘルプ

[ターゲット コントロール] ウィンドウで疑問符 (?) を入力すると、各拡張機能にコマンドが渡されます。pfnFmtPuts パラメータを使用すると、拡張機能でサポートされるコマンドの使用方法が表示されきます。

BOOL ParseCommand(
LPCTSTR szCmd,
LPCTSTR szCmdLine,
PFN_FmtPuts pfnFmtPuts,
PFN_Gets pfnGets)
{
BOOL  fReturn = FALSE;
   //
//コマンドを支援するための特殊ケース
   //
if (0 == _tcscmp(szCmd, _T("?")))
   {
pfnFmtPuts(_T("Help for this extension commands\r\n"));
   }
if (0 == _tcsicmp(szCmd, _T("mycommand")))
   {
fReturn = TRUE; //このコマンドは処理されます
//mycommand の特定のロジック
   }
return fReturn;
}